1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
M – тип машины, virt – абстрактно-виртуальный ARM -machine указывает тип компьютера, который вы собрались эмулировать, можно выбрать ubuntu, pc, pc-q35 и другие варианты, смотрите подробнее командой -machine help -cpu - тип процессора, можно передать непосредственно тип процессора, а также дополнительные флаги -smp - включает симуляцию мультипроцессорной архитектуры, количество ядер -boot - позволяет настроить порядок загрузки устройств, a,b - дискета, с - первый жесткий диск, d - CDROM, n-p - загрузка через сеть, по умолчанию виртуальная машина загружается из жесткого диска -m - указывает количество оперативной памяти, доступной машине, объем памяти -k - раскладка клавиатуры по умолчанию -soundhw - подключить звуковую карту к системе -device - подключить указанное устройство к машине, нужно указать драйвер и его опции -name - имя гостевой системы, будет отображаться в верху окна -uuid - установить UUID для системы -fda, fdb - подключить дискету из файла -hda, hdb - подключить жесткий диск из файла -cdrom - подключить оптический диск -usb - включить поддержку USB -usbdevice - подключить USB устройство -display - выбрать тип отображения, доступно sdl, curses, gtk, none, vga и другие -full-screen - запустить в полный экран -no-acpi - отключить поддержку ACPI -net - создать сетевой интерфейс -net nic -net tap -net user -net nic user,model=virtio -realtime включить режим реального времени, опции mclock нужно передать значение on -gdb - ожидать подключения отладчика gdb -enable-kvm - включить поддержку kvm -loadvm - загрузить сохраненное состояние -daemonize - сделать процесс фоновым -snapshot - записывать изменения не в файл жесткого диска, а в отдельные файлы -nographic - отключить графический вывод -kernel - использовать указанный образ ядра linux -append - командная строка для ядра -initrd - файл initrd для загрузки Linux -vnc :5 - VNC на :5905 -drive if=none,file=debian.img,format=qcow2 – образ жесткого диска -soundhw ac97 - добавить звуковую карту no-reboot – перезапуск системы приведет к остановке эмулятора |
Немного о сетевых устройствах в qemu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Вариант первый: qemu-system-x86_64 \ -m 1G \ -device virtio-net-pci,netdev=lan \ -netdev user,id=lan \ -drive file=you.iso,media=cdrom Виртуальная машина автоматически получит ip-адрес из подсети 10.0.2.0/24, шлюз - 10.0.2.2, dns-сервер - 10.0.2.3. К физическому хосту можно обратиться по адресу 10.0.2.2. ICMP пакеты через такой тип сети не проходят. Вариант два: Для такой сетевой карты требуется root sudo qemu-system-x86_64 \ -m 1G \ -device virtio-net-pci,netdev=lan \ -netdev tap,id=lan,ifname=tap0 \ -drive file=/tmp/livecd.iso,media=cdrom P.S. мне этот вариант не нравится так как у меня уже есть бридж на ovs Вариант три: Для такой сетевой карты требуется root sudo qemu-system-x86_64 \ -m 1G \ -device virtio-net-pci,netdev=lan \ -netdev tap,id=lan,script=no,ifname=tap0 \ -drive file=/tmp/livecd.iso,media=cdrom Почти тоже самое что но c очень важным параметром "script=no", да и теперь нам надо выполнить одну команду для ovs для добавления tap0 в бридж ovs ovs-vsctl add-port ovsbr0 tap0 ip link set up dev tap0 |
x86
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Готовим диск: cd new_dir wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso qemu-img create -f qcow2 image_x86.qcow2 10G Установка системы: qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -hda image_x86.qcow2 \ -drive file=debian-12.5.0-amd64-netinst.iso,media=cdrom \ -boot d \ -smp 4 \ -m 4G \ -display gtk \ -vga std \ -device virtio-net-pci,netdev=lan \ -netdev tap,id=lan,ifname=tap0,script=no \ -vnc :5 \ -device AC97 \ -nographic Дальнейший запуск и использование ВМ: !!! Убираем строки отвечающие за загрузку с cd-cdrom !!! -drive file=manjaro-xfce-21.0-210318-linux510.iso,media=cdrom \ !!! -boot d \ !!! Не забываем про сеть !!! ovs-vsctl add-port ovsbr0 tap0 !!! ip link set up dev tap0 qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -hda image_x86.qcow2 \ -smp 4 \ -m 4G \ -display gtk \ -vga std \ -device virtio-net-pci,netdev=lan \ -netdev tap,id=lan,ifname=tap0,script=no \ -vnc :5 \ -device AC97 \ -nographic |
arm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
0. Готовим диск болванку: qemu-img create -f qcow2 ebian12-arm.qcow2 8G 1. Нам нужны будут файлы: Файло брать тут: http://ftp.debian.org/debian/dists/bookworm/main/installer-armhf/current/images/netboot/ Нам потребуется: wget http://ftp.debian.org/debian/dists/bookworm/main/installer-armhf/current/images/netboot/initrd.gz wget http://ftp.debian.org/debian/dists/bookworm/main/installer-armhf/current/images/netboot/vmlinuz 2. Создаем диск: qemu-img create -f qcow2 debian12-arm.qcow2 10G !!! Заменил драйвер для сетевой карты так как при установки системы ее было не видно !!! Вместо -device virtio-net-pci,netdev=lan !!! На -device virtio-net-device,netdev=lan 3. Создаем виртуальный интерфейс tap0 и добавляем его в ovsbr0 ip tuntap add dev tap0 mode tap ip link set up dev tap0 ovs-vsctl add-port ovsbr0 tap0 4. Пример первый запуск ВМ для установки ос: qemu-system-arm -smp 4 -m 1024 -M virt \ -kernel vmlinuz \ -initrd initrd.gz \ -append "root=/dev/ram" \ -drive if=none,file=debian12-arm.qcow2,format=qcow2,id=hd \ -device virtio-blk-device,drive=hd \ -device virtio-net-device,netdev=lan \ -netdev tap,id=lan,ifname=tap0,script=no \ -vnc :5 \ -device AC97 \ -nographic \ -no-reboot 5. Теперь нам нужно добыть загрузочные файлы из толькочто установленного образа sudo modprobe nbd max_part=16 sudo qemu-nbd -c /dev/nbd0 debian12-arm.qcow2 mkdir mount-qemu mount /dev/nbd0p1 mount-qemu sudo mount /dev/nbd0p1 mount-qemu mkdir after-copy cp mount-qemu/ after-copy/ umount mount-qemu sudo umount mount-qemu sudo qemu-nbd -d /dev/nbd0 sudo killall qemu-nbd 6. Используем образ дальше: !!! Перед использованием рекомендую файлы initrd,vmlinuz и debian12-arm.qcow2 в один каталог. qemu-system-arm -smp 4 -m 1024 -M virt \ -kernel vmlinuz-6.1.0-18-armmp-lpae \ -initrd initrd.img \ -drive if=none,file=debian12-arm.qcow2,format=qcow2,id=hd \ -device virtio-blk-device,drive=hd \ -device virtio-net-device,netdev=lan \ -netdev tap,id=lan,ifname=tap0,script=no \ -vnc :5 \ -device AC97 \ -nographic \ -no-reboot |