我运行可执行脚本时出现以下错误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
以下是脚本代码:
#!/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
答案1
您的错误消息:“/sys/bus/pci/devices//device”清楚地表明您在两个“设备”之间缺少了某些东西。因此,您的 /etc/vfio-pci1.cfg 或“echo $line | grep ^# >/dev/null 2>&1 && continue”行可能存在问题,因为在您调用 vfiobind 函数后立即出现此问题。
我还认为,如果一切正常,错误信息也有可能被忽略。隐藏错误信息的一个解决方案是将 vendor=$(cat /sys/bus/pci/devices/$dev/vendor) 替换为 vendor=$(cat /sys/bus/pci/devices/$dev/vendor 2>/dev/null)。
但我会检查 vfio 配置文件,我怀疑有一些空行 - 删除这些空行,这将是一个好的开始。