Почему добавленный `ROOTFS_POSTPROCESS_COMMAND` не выполняется, когда устанавливаемый им артефакт развертывания перестра ⇐ Linux
-
Anonymous
Почему добавленный `ROOTFS_POSTPROCESS_COMMAND` не выполняется, когда устанавливаемый им артефакт развертывания перестра
Я создаю дистрибутив yocto (kirkstone), который использует ядро со встроенным initramfs, содержащим логику для запуска системы. Образ ядра, содержащий встроенный initramfs, собирается, но не устанавливается в каталог rootfs /boot, как это происходит с ядром без встроенного initramfs.
Один из способов решения этой проблемы — ROOTFS_POSTPROCESS_COMMAND:append для добавления команды постобработки rootfs, как описано в этом аналогичном вопросе.
install_initramfs_kernel() { cp -f ${DEPLOY_DIR_IMAGE}/Image.gz-initramfs-${MACHINE}.bin ${IMAGE_ROOTFS}/boot/ ln -sf Image.gz-initramfs-${MACHINE}.bin ${IMAGE_ROOTFS}/boot/Image.gz } ROOTFS_POSTPROCESS_COMMAND:append = "install_initramfs_kernel;" В моем случае добавленная команда устанавливает образ ядра с включенным initramfs в каталог /boot, а затем меняет цель символической ссылки Image.gz на ядро с initramfs. Это работает, но когда я вношу изменения в образ initramfs и создается новый образ ядра с initramfs, добавленная команда не выполняется, и новый образ ядра не устанавливается в rootfs.
Почему он не выполняется при сборке нового образа ядра? Похоже, мне нужно каким-то образом сделать добавленную функцию зависимой от файла образа ядра, который она устанавливает.
Изменить: изменения метаданных в приведенном выше блоке кода находятся в моем рецепте пользовательского изображения, который зависит от образа initramfs путем установки INITRAMFS_IMAGE для образа initramfs.
Я создаю дистрибутив yocto (kirkstone), который использует ядро со встроенным initramfs, содержащим логику для запуска системы. Образ ядра, содержащий встроенный initramfs, собирается, но не устанавливается в каталог rootfs /boot, как это происходит с ядром без встроенного initramfs.
Один из способов решения этой проблемы — ROOTFS_POSTPROCESS_COMMAND:append для добавления команды постобработки rootfs, как описано в этом аналогичном вопросе.
install_initramfs_kernel() { cp -f ${DEPLOY_DIR_IMAGE}/Image.gz-initramfs-${MACHINE}.bin ${IMAGE_ROOTFS}/boot/ ln -sf Image.gz-initramfs-${MACHINE}.bin ${IMAGE_ROOTFS}/boot/Image.gz } ROOTFS_POSTPROCESS_COMMAND:append = "install_initramfs_kernel;" В моем случае добавленная команда устанавливает образ ядра с включенным initramfs в каталог /boot, а затем меняет цель символической ссылки Image.gz на ядро с initramfs. Это работает, но когда я вношу изменения в образ initramfs и создается новый образ ядра с initramfs, добавленная команда не выполняется, и новый образ ядра не устанавливается в rootfs.
Почему он не выполняется при сборке нового образа ядра? Похоже, мне нужно каким-то образом сделать добавленную функцию зависимой от файла образа ядра, который она устанавливает.
Изменить: изменения метаданных в приведенном выше блоке кода находятся в моем рецепте пользовательского изображения, который зависит от образа initramfs путем установки INITRAMFS_IMAGE для образа initramfs.
Мобильная версия