
Я использую poky в ветке warrior для генерации корневых образов. Yocto может генерировать конечный образ в различных форматах. Один из них — .hddimg, который выглядит так после извлечения:
EFI
bzImage
initrd
libcom32.c32
libutil.c32
rootfs
startup.nsh
syslinux
vesamenu.c32
Перейдя по этой ссылке:http://embeddedguruji.blogspot.com/2018/11/run-your-intels-yocto-hddimg-in-virtual.html, я конвертирую файл .hddimg в файл .vmdk. Когда я использую 7zip для просмотра содержимого файла .vmdk, оно такое же, как и выше. Мне было интересно узнать, как работает процесс загрузки и как загружается ядро. И как я могу переключать ядра по умолчанию, когда в rootfs установлено несколько ядер.
Я основываю этот вопрос на своем предыдущем вопросе, на который не было ответа:https://stackoverflow.com/questions/57611557/switch-kernel-in-yocto-root-image
решение1
Оба файла .hddimg и .vmdk являются образами дисков, поэтому они загружаютсяточно так же, как обычные (физические) жесткие диски.То есть они содержат не просто корневую файловую систему, а целую структуру разделов диска.
(Обратите внимание, что 7zip покажет толькопервыйраздел, который он распознает.)
Как и настоящие диски, эти образы имеют загрузочный сектор (для BIOS) и/или системный раздел EFI (для UEFI), а также установленный загрузчик (в вашем случае этосислинукс). Программное обеспечение виртуальной машины эмулирует полноценный BIOS, который запускает syslinux с виртуального диска, который затем считывает его конфигурацию меню (syslinux.cfg) и запускает ядро, настроенное в этом файле.