J'essayais de configurer un système d'exploitation Windows 7 VM avec passerelle GPU sous Ubuntu 17.10 et je n'ai pas réussi à obtenir quoi que ce soit pour démarrer, des disques durs aux fichiers ISO, même aux DVD réels. J'obtiens le même résultat à chaque fois, QEMU me disant qu'il n'y a pas de périphérique amorçable.
Voici mon exécutable pour la VM:
#!/bin/bash
vmname="windows7vm"
if ps -A | grep -q $vmname; then
echo "$vmname is already running." &
exit 1
else
# use pulseaudio
export QEMU_AUDIO_DRV=pa
export QEMU_PA_SAMPLES=8192
export QEMU_AUDIO_TIMER_PERIOD=99
export QEMU_PA_SERVER=/run/user/1000/Pulse/native
cp /usr/share/OVMF/OVMF_VARS.fd /tmp/my_vars.fd
qemu-system-x86_64 \
-name $vmname,process=$vmname \
-machine type=pc,accel=kvm \
-cpu Host \
-smp 3,sockets=1,cores=3,threads=1
-m size=4G \
-mem-path /run/hugepages/kvm \
-mem-prealloc \
-balloon none \
-rtc clock=Host,base=localtime \
-vga none \
-nographic \
-serial none \
-parallel none \
-soundhw hda \
-usb -usbdevice Host:1532:0214 -usbdevice Host:1532:0043 \
-device vfio-pci,Host=04:00.0,multifunction=on \
-device vfio-pci,Host=04:00.1 \
-drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/tmp/my_vars.fd \
-boot order=dc \
-drive if=virtio,id=disk0,cache=none,format=raw,file=/dev/sdb
-drive file=/home/keith/WIN_VM/win7install.iso,index=1,media=cdrom \
-drive file=/home/keith/WIN_VM/virtio-win-0.1.141.iso,index=2,media=cdrom \
exit 0
fi
QEMU me dit essentiellement
Boot failed: could not read the boot disk
Booting from DVD/CD...
Boot failed: Could not read from CDROM (code 0003)
et ensuite:
No bootable device.
Outre les problèmes susmentionnés, lorsque je ferme la fenêtre QEMU, je suis accueilli avec
unknown keycodes `(unnamed)', please report to [email protected]
./WIN_VM/win7vm.sh: line 24: -m: command not found
./WIN_VM/win7vm.sh: line 41: -drive: command not found
dans le terminal. Je suis relativement nouveau dans ce domaine de la virtualisation, mais je connais assez bien Linux. Toutes les solutions possibles sont les bienvenues. Merci d'avance :)
Votre longue invocation qemu
ne comporte pas de barres obliques inverses de continuation de ligne; la commande complète n'est donc pas exécutée.
Le \
(barre oblique inverse) qui apparaît à la fin de certaines lignes indique que la commande continue sur la ligne suivante. Lorsqu'une ligne apparaît sans le \
à la fin, elle indique la fin de la commande et la ligne suivante est traitée comme une commande distincte.
C'est ainsi que sur les lignes 24 et 41, bash tente d'interpréter respectivement -m
et -drive
comme des commandes, car les lignes précédentes manquent du \
pour indiquer que la commande continue.
Je pense que vous constaterez que votre VM démarre après avoir inséré ces barres obliques inverses.
P.S. Pensez à utiliser libvirt avec virt-manager (ou GNOME Box) pour créer vos machines virtuelles dans le futur, car celles-ci sont généralement beaucoup plus faciles à gérer. Dans ce cas, libvirt gérera pour vous la configuration de qemu, en fonction des options que vous avez configurées pour chaque machine dans virt-manager.