我在 warrior 分支使用 poky 来生成根镜像。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),并且安装了引导加载程序(在你的情况下是系统Linux)。虚拟机软件模拟一个完整的BIOS,从虚拟磁盘启动syslinux,然后读取其菜单配置(syslinux.cfg)并启动该文件中配置的内核。