O QEMU não inicializa nada na VM de passagem da GPU

1

Eu tenho tentado configurar uma VM do Windows 7 com passagem de GPU no Ubuntu 17.10 e não tive sucesso em conseguir nada para inicializar, de discos rígidos, a ISOs, até DVDs reais. Eu recebo o mesmo resultado toda vez, QEMU dizendo que não há dispositivos inicializáveis.

Aqui está o meu executável para a 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

O QEMU basicamente me diz

Boot failed: could not read the boot disk
Booting from DVD/CD...
Boot failed: Could not read from CDROM (code 0003)

e mais tarde:

No bootable device.

Além dos problemas mencionados acima, quando fecho a janela do QEMU, sou saudado com

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

no terminal. Eu sou relativamente novo na maioria das coisas de virtualização, mas eu estou bem familiarizado com o Linux. Quaisquer soluções possíveis são bem vindas. Agradecemos antecipadamente:)

    
por a rad white lad 20.02.2018 / 04:29

1 resposta

1

Sua longa invocação de qemu está faltando algumas barras invertidas de continuação de linha, então o comando completo não é executado.

O \ (barra invertida) que aparece no final de algumas linhas indica que o comando continua na próxima linha. Quando uma linha aparece sem o \ no final, indica o final do comando e a próxima linha é tratada como um comando separado.

Assim é que nas linhas 24 e 41, o bash está tentando interpretar -m e -drive como comandos, respectivamente, porque as linhas anteriores estão faltando o \ para indicar o comando continua.

Acho que você descobrirá que sua VM inicializa depois de inserir essas barras invertidas.

P.S. Considere usar o libvirt com o virt-manager (ou GNOME Boxes) para criar suas máquinas virtuais no futuro, pois elas geralmente são muito mais fáceis de gerenciar. Nesse caso, o libvirt irá gerenciar a configuração do qemu para você, dependendo das opções configuradas para cada máquina no virt-manager.

    
por Michael Hampton 20.02.2018 / 06:04