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

0
HighOnMeat 2 Апр 2020 в 12:30

1 ответ

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

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

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

У вас есть интерфейсы, которые представляют какое-то оборудование для гостя, и у вас есть серверы, которые взаимодействуют с резервным хранилищем на хосте. Вы создаете интерфейс с опцией -device и блокируете бэкэнд с опцией -drive. Вы даете диску идентификатор и ссылаетесь на этот идентификатор с устройства. Например. вот как я подключаю устройство virtio-blk-pci к образу диска на моей виртуальной машине: -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.

1
jcmvbkbc 14 Апр 2020 в 11:24