Erro de passagem GPU no Ubuntu 15.10 ao iniciar o script executável

0

Estou com o seguinte erro ao executar o script executável sudo /usr/vm1 :

cat: /sys/bus/pci/devices//vendor: No such file or directory cat: /sys/bus/pci/devices//device: No such file or directory /usr/vm1: line 12: echo: write error: Invalid argument

Abaixo está o código do script:

#!/bin/bash

configfile=/etc/vfio-pci1.cfg

vfiobind() {
    dev="$1"
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id

}

modprobe vfio-pci

cat $configfile | while read line;do
    echo $line | grep ^# >/dev/null 2>&1 && continue
        vfiobind $line
done

sudo qemu-system-x86_64 -enable-kvm -M q35 -m 4096 -cpu host,kvm=off \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /usr/share/seabios/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \
-device virtio-scsi-pci,id=scsi \
-device vfio-pci,host=00:1a.0,bus=pcie.0 \
#-usb -usbdevice host:046d:c534 \
-drive file=/home/username/ubuntu1.img,id=disk,format=raw,if=none -device scsi-hd,drive=disk \
-drive file=/home/username/Desktop/ubuntu-14.04.4-desktop-amd64.iso,id=isocd -device scsi-cd,drive=isocd \
-boot menu=on

exit 0
    
por itenthusiast 26.07.2016 / 19:50

1 resposta

0

Sua mensagem de erro: "/ sys / bus / pci / devices // device" mostra claramente que você está perdendo algo entre os dois "dispositivos". Então, algo está errado com o seu /etc/vfio-pci1.cfg ou com a linha "echo $ line | grep ^ # > / dev / null 2 > & amp; 1 & amp; continue", porque imediatamente depois de fazer a chamada de função vfiobind.

Eu também acho que há uma possibilidade de que a mensagem de erro possa ser ignorada, se tudo ainda funcionar. Uma solução para ocultar mensagens de erro é substituir, e. vendor = $ (cat / sys / bus / pci / devices / $ dev / vendor) com o fornecedor = $ (cat / sys / bus / pci / devices / $ dev / fornecedor 2 > / dev / null).

Mas eu verificaria os arquivos de configuração do vfio, suspeito que há algumas linhas vazias - remova as linhas vazias, isso será um bom começo.

    
por Okay Dokey 05.08.2016 / 03:52