如何在 qemu + cloudimg 上上网?

如何在 qemu + cloudimg 上上网?

尝试在 qemu 中运行 cloudimg,但我找不到访问互联网的方法,帮忙吗?我已经使用以下方式设置了 cloudimg

wget 'https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img';
mkdir -p ./mnt;
sudo guestmount -a jammy-server-cloudimg-amd64-disk-kvm.img -i --rw ./mnt;
sudo chroot ./mnt /bin/passwd --delete root;
sudo umount mnt;

我正在启动 qemu

sudo qemu-system-x86_64 \
-machine accel=kvm \
-cpu host \
-smp cores=4 \
-m size=1G \
-serial stdio \
-boot menu=on \
-drive media=disk,file=jammy-server-cloudimg-amd64-disk-kvm.img,if=virtio,cache=unsafe,format=qcow2,werror=report

系统启动后,我可以以 root 身份登录,但无法访问互联网,ping 时提示

root@ubuntu:~# ping 8.8.8.8
ping: connect: Network is unreachable

我尝试过几种方式授予网络访问权限,

qemu-system-x86_64 -nic user,model=virtio-net-pci

qemu-system-x86_64 -nic tap

但似乎没有什么区别,仍然得到ping: connect: Network is unreachable,我被困住了

答案1

这主要是因为客户操作系统中缺少网络配置,而不是因为虚拟机的配置错误。

根据指示1我通过以下步骤获得了成功。

在启动虚拟机之前,我通过运行以下命令删除了 cloud-init:

virt-customize -a bionic-server-cloudimg-amd64.img --uninstall cloud-init

在主机中。

然后直接使用 qemu-system-x86_64 启动仿生服务器 cloudimg,只传递这个网络附加选项

-nic 用户,hostfwd=tcp::8888-:22

在虚拟机中,以 root 身份登录,我必须使用以下配置网络

cd /etc/netplan
nano 01-netcfg.yaml

然后将此内容添加到创建的文件中

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s2:
       dhcp4: true

保存并关闭它,然后运行

netplan --debug apply

此后,ifconfig报告已配置的网络,并且客人已连接。

相关内容