2016-03-10 4 views
0

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

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

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

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

ответ

3

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

VARIABLE = "${@python-command}"

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

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

Это приводит к переменной ДАТА, содержащей сегодняшняя дата.

Когда изображение строится, есть штамп времени, который хранится в/и т.д./метки времени, Example HERE

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}/ 
} 
+0

Я подумал, может быть, будет встроенное решение, которое я мог бы просто использовать, но поскольку моя система изменяет/etc/timestamp во время загрузки, видимо, нет. Я использую ваше решение и просто создаю свой собственный файл timestamp на изображении rootfs во время сборки через bitbake/python. – user5071535

2

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

+0

Да, я думал, что так будет и с моей системой, но вместо этого/etc/timestamp будет обновляться каждый раз, когда система загружается. Поскольку я использую Angstrom с Systemd, возможно, этот сценарий является причиной: https://github.com/Angstrom-distribution/meta-angstrom/blob/master/recipes-core/systemd/timestamp-service/load-timestamp. ш – user5071535

Смежные вопросы