Как получить временную метку сборки rootfs во время выполнения?

В целях идентификации версии я хочу получить временную метку, указывающую, когда был создан образ корневой файловой системы. Он должен быть доступен на самой плате во время выполнения.

Я использую дистрибутив Ångström, ветвь angstrom-v2013.12-yocto1.5, который использует OpenEmbedded для создания rootfs (корневой файловой системы).

Ядро собирается отдельно для этой платы, поэтому я не могу использовать uname -v для этой цели, поскольку он просто считывает отметку времени сборки ядра, а не отметку времени сборки rootfs.

Добавляется ли временная метка сборки rootfs в образ rootfs в какое-то место, где ее можно получить во время выполнения?


person user5071535    schedule 10.03.2016    source источник


Ответы (2)


BitBake упрощает использование кода Python в расширении переменных со следующим синтаксисом:

VARIABLE = "${@python-command}"

Это дает пользователю огромную гибкость, как видно из следующего примера:

DATE = "${@time.strftime('%Y%m%d',time.gmtime())}"

Это приводит к тому, что переменная DATE содержит сегодняшнюю дату.

Когда образ создается, в /etc/timestamp сохраняется отметка времени, Пример ЗДЕСЬ

rootfs_update_timestamp () {
date "+%m%d%H%M%Y" >${IMAGE_ROOTFS}/etc/timestamp 
}

Вы можете взглянуть на этот рецепт, который реализует дни и время и помещает файл в rootfs.

DESCRIPTION = "Simple helloworld application"
SECTION = "hio-version"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"

DEPENDS = "core-image-minimal"
SRC_URI = "file://version "

S = "${WORKDIR}"

INSANE_SKIP_${PN} = "installed-vs-shipped"
FILES_${PN} += " /"

do_install() {
             echo "------------------------"
         echo "------------------------"

        #version
            #echo hio-board-dl-v1.00 > ${WORKDIR}/version
        #date >> ${WORKDIR}/version
            #install -m 0644 ${WORKDIR}/version ${D}/       
        date_version_1=hio-board-dl-
        date_version_2=$(date "+%Y%m%d%H%M%S")
        date_version_3=-R1.00

        echo $date_version_1$date_version_2$date_version_3 > ${WORKDIR}/version
        install -m 0644 ${WORKDIR}/version ${D}/
}
person Charles C.    schedule 10.03.2016
comment
Я думал, что, возможно, будет встроенное решение, которое я мог бы просто использовать, но, поскольку моя система изменяет /etc/timestamp во время загрузки, по-видимому, его нет. Я воспользуюсь вашим решением и просто создам свой собственный файл временной метки в образе rootfs во время сборки через bitbake/python. - person user5071535; 11.03.2016

Да, по умолчанию /etc/timestamp содержит время сборки rootfs.

person Ross Burton    schedule 11.03.2016
comment
Да, я думал, что то же самое будет и с моей системой, но вместо этого /etc/timestamp обновляется каждый раз при загрузке системы. Поскольку я использую Angstrom с Systemd, возможно, причиной является этот скрипт: github.com/Angstrom-distribution/meta-angstrom/blob/master/ - person user5071535; 11.03.2016