qemu не распознает файл блочного устройства - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть рабочий образ 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, но это только первый шаг.

1 Ответ

1 голос
/ 14 апреля 2020

Из сообщений журнала я вижу, что он вообще не смог обнаружить это.

Это потому, что вы не создали устройство QEMU, подключенное к этому диску.

Может кто-нибудь, пожалуйста, подытожите, как блочные устройства работают с Qemu.

У вас есть внешние интерфейсы, которые представляют какое-то оборудование для гостя, и у вас есть внутренние части, которые взаимодействуют с поддержкой. хранилище на хосте. Вы создаете интерфейс с параметром -device и блокируете интерфейс с параметром -drive. Вы даете приводу идентификатор и ссылаетесь на этот идентификатор с устройства. Например, вот как я присоединяю устройство virtio-blk-pci к образу диска на моей машине virt: -device virtio-blk-pci,drive=vd0 -drive file=rootfs.ext2,format=raw,id=vd0.

qemu-system-arm -device help выдаст вам список поддерживаемых типов устройств, а qemu-system-arm -device <specific-device-type>,help покажет подробный справка по specific-device-type свойствам.

...