
Ich verwende Poky im Warrior-Zweig, um Root-Images zu generieren. Yocto kann das endgültige Image in verschiedenen Formaten generieren. Eines davon ist .hddimg, das nach dem Extrahieren so aussieht:
EFI
bzImage
initrd
libcom32.c32
libutil.c32
rootfs
startup.nsh
syslinux
vesamenu.c32
Folgen Sie diesem Link:http://embeddedguruji.blogspot.com/2018/11/run-your-intels-yocto-hddimg-in-virtual.html, konvertiere ich die .hddimg-Datei in eine .vmdk-Datei. Wenn ich 7zip verwende, um den Inhalt der .vmdk-Datei anzuzeigen, ist es dasselbe wie oben. Ich war neugierig, wie der Startvorgang funktioniert und wie der Kernel geladen wird. Und wie ich die Standardkernel wechseln kann, wenn mehrere Kernel in rootfs installiert sind.
Diese Frage stütze ich auf meine vorherige unbeantwortete Frage:https://stackoverflow.com/questions/57611557/switch-kernel-in-yocto-root-image
Antwort1
Sowohl .hddimg als auch .vmdk sind Disk-Images, daher booten siegenau wie gewöhnliche (physische) Festplatten.Das heißt, sie enthalten nicht nur ein Root-Dateisystem, sondern ein komplettes partitioniertes Festplattenlayout.
(Beachten Sie, dass 7zip nur dieErstePartition, die es erkennt.)
Wie echte Festplatten haben diese Images einen Bootsektor (für BIOS) und/oder eine EFI-Systempartition (für UEFI), und es ist ein Bootloader installiert (in Ihrem Fall ist dassyslinux). Die Software der virtuellen Maschine emuliert ein vollständiges BIOS, das Syslinux von der virtuellen Festplatte startet, die dann die Menükonfiguration (syslinux.cfg) liest und den in dieser Datei konfigurierten Kernel startet.