系统
我的主机运行的是 Fedora 29,我的互联网连接是 wifi。请注意,我使用的是 X.org,而不是 wayland; qemu 中的 SDL 选项在 wayland 上不起作用,并且curses 选项启动时遇到问题。
问题
为了进行学术实验,我需要在该主机上设置许多可以相互通信的不同虚拟机。
我的尝试
我遵循了这个指南:https://www.linux-kvm.org/page/Networking。根据它所说的,我似乎需要在所有客人之间建立一个私人虚拟桥,以便他们可以进行通信。我执行sudo nano /etc/qemu-ifup
并复制了指南中的以下内容:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
# tunctl -u `whoami` -t $1 (use ip tuntap instead!)
ip tuntap add $1 mode tap user `whoami`
ip link set $1 up
sleep 0.5s
# brctl addif $switch $1 (use ip link instead!)
ip link set $1 master $switch
exit 0
else
echo "Error: no interface specified"
exit 1
fi
然后我创建了目录~/VMs
并执行nano ~/VMs/randmac
并复制到
#!/bin/bash
# generate a random mac address for the qemu nic
printf 'DE:AD:BE:EF:%02X:%02X\n' $((RANDOM%256)) $((RANDOM%256))
我从以下位置下载了最小的 Ubuntu isohttp://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso,并使用以下命令:
sudo chmod 755 /etc/qemu-ifup
cd ~/VMs
cp ~/Downloads/mini.iso .
chmod 755 ./randmac
sudo ip link add br0 type bridge
sudo ifconfig br0 up
qemu-img create -f qcow2 ubuntu-server-0.img 2G
sudo qemu-system-x86_64 -hda ubuntu-server-0.img \
-sdl -cdrom mini.iso -machine type=q35,accel=kvm \
-cpu host -smp 2 -m 512 \
-device e1000,netdev=net0,mac=`./randmac` -netdev tap,id=net0
Live CD 成功启动,但安装程序无法连接到网络:它会产生以下错误:
然后它要求我提供一个 IP,据我所知,我没有这个 IP。 qemu命令执行过程中,终端输出为:
+ switch=br0
+ '[' -n tap0 ']'
++ whoami
+ ip tuntap add tap0 mode tap user root
ioctl(TUNSETIFF): Device or resource busy
+ ip link set tap0 up
+ sleep 0.5s
+ ip link set tap0 master br0
+ exit 0
问题
有谁知道我做错了什么以及如何解决?