У меня есть рабочий образ QEMU, эмулирующий ARM v express -a9, и я запускаю его так:
sudo qemu-system-arm -m 512M -M vexpress-a9 -D qemu.log -d unimp -kernel buildroot-2019.02.5/output/images/zImage -dtb buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb -append "console=ttyAMA0,115200 kgdboc=kbd,ttyAMA0,115200 ip=dhcp nokaslr" -initrd buildroot-2019.02.5/output/images/rootfs.cpio -nographic -net nic -net bridge,br=mybridge -s
Я хотел бы добавить жесткий диск для постоянное хранилище, а затем передать управление из rootfs на основе busybox initrd в полноценную версию, предлагаемую с Linux. Поэтому я добавляю его в командную строку
sudo qemu-system-arm -m 1024M -M vexpress-a9 -D qemu.log -drive if=none,format=raw,file=disk.img -kernel buildroot-2019.02.5/output/images/zImage -dtb buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb -append "console=ttyAMA0,115200 kgdboc=kbd,ttyAMA0,115200 ip=dhcp nokaslr" -initrd buildroot-2019.02.5/output/images/rootfs.cpio -nographic -net nic -net bridge,br=mybridge -s
Конечно, сначала я создаю образ диска и форматирую его как ext2: qemu-img create disk.img 10G && mkfs.ext2 -F disk.img
Из сообщений журнала Я вижу, что он не смог обнаружить это вообще. Может кто-нибудь, пожалуйста, подытожите, как блочные устройства работают с Qemu. Я знаю, что старый -hda
был изменен на более новый -drive
вариант, который может комбинировать громоздкие спецификации передней и задней частей отдельно. Но я не знаю основ и почему у меня возникает эта проблема.
Я в основном ищу switch_root
от initrd до полноценных Linux rootfs, но это только первый шаг.