Как мне установить initramfs в rootfs / boot? - PullRequest
2 голосов
/ 25 мая 2019

Я хочу установить initramfs в rootfs /boot (не то же самое, что загрузочный раздел wic).

В rootfs /boot есть образ ядра и установленный образ установки.

Я не связываю initramfs в ядре, но помещаю его в подходящий образ, но этот подходящий образ - тот, который не содержит initramfs.

Мне нужно поместить initramfs в /boot на rootfs, но я не могу найти то, что устанавливает их, или есть ли законный способ также установить другие вещи, или если мне нужно что-то исправить?

Я надеюсь на что-то вродеIMAGE_BOOT_FILES, где я могу указать дополнительные файлы из DEPLOY_DIR_IMAGE

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

Но у меня возникают проблемы при определении зависимости, поэтому эти дополнительные initramfs создаются отдельно.

Я попытался указать имя этого initramfs rиспользуя команду:

  • DISTRO_EXTRA_RDEPENDS
  • EXTRA_IMAGEDEPENDS
  • ПАКЕТЫ

Редактировать: Часть ответа, кажется, чтоinitramfs - это image , и поэтому все, что он устанавливает (используя промежуточную обработку), будет само по себе.

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


Простой ответ состоит в том, чтобы использовать что-то подобное в верхнем уровне yocto-image-base.bb recipe

ROOTFS_POSTPROCESS_COMMAND_append += "install_initramfs;"
install_initramfs() {
    cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz ${IMAGE_ROOTFS}/boot/
    ln -sf ${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz ${IMAGE_ROOTFS}/boot/initramfs.gz
}

НоЯ бы предпочел добавить обратно в inherit staging к initramfs bb что-то вроде:

addtask populate_sysroot after do_build before do_complete

, чтобы заново представить возможность для рецепта изображения внести вклад в системный корень более высокого уровня, кроме как через ${DEPLOY_IMAGE_DIR}

Должно быть так же просто сбросить initramfs в родительском sysroot, как и с wic в / boot

...