qemu安装虚拟机的步骤可以参考
https://blog.csdn.net/weixin_51760563/article/details/119935101
踩的坑:如果是从官网下载的较新的qemu自己进行的编译安装,请注意在编译时首先要开启以下常用功能:
./configure --enable-virtfs #开启virtio-9p的支持,用来主机和虚拟机间共享文件夹
--enable-vhost-net
--enable-vhost-user #网络配置的支持
在安装完系统后,参考https://www.cnblogs.com/yuanyin/p/15022427.html进行网络配置,我翻了好多博客,就这个是好用的
以防原博客丢失,下面记录一下流程
1.在host端首先建立一个bridge设备 br0:
brctl addbr br0
2.新增网口 tap0:
tunctl
3.把网口插在交换机上:
brctl addif br0 tap0
4.使能网口和交换机:
ip link set br0 up
ip link set tap0 up
5.给交换机设备一个ip地址:
ifconfig br0 192.168.1.1/24
6.打开host上的ip转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
这是为了让桥设备收到数据包之后,根据数据包中的目标ip地址查找host中的路由表进行数据包转发。
7.设置nat (eth0连接外网)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
这个的意思是br0设备或者其它网卡转发数据包从eth0网口出去的时候更改数据包中的源ip地址(改成eth0的ip地址),需要注意这一步里的eth0,根据自己的实际配置来,比如你的实际的网络连接是ens33,eth0就替换成ens33。
8.qemu端:
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device tap,netdev=mynet0 \
我实际测试,他给的这个用不了,我实际用的如下:
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=mynet0 \
完整的启动命令(命令中还带了一个共享文件夹的配置,如果不需要就去掉):
qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 6 -M virt -bios QEMU_EFI.fd -nographic -device virtio-scsi-device -drive if=none,file=ubuntuimg.img,format=raw,index=0,id=hd0 -device virtio-blk-device,drive=hd0 -fsdev local,security_model=passthrough,id=fsdev0,path=./shared,readonly -device virtio-9p-device,fsdev=fsdev0,mount_tag=hostshare -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=mynet0
暴露给guest端的e1000网卡跟host上的tap0关联
9.guest端:
ifconfig eth0 192.168.1.20/24
route add default gw 192.168.1.1
这个地方也不一定是eth0,要看虚拟机实际扫描到的网卡
可以使用
ifconfig -a
来查看实际的网卡,然后替换eth0。
10.配置完这些之后,还需要配置DNS,安装network-manager
sudo apt-get install network-manager
然后
sudo vim /etc/systemd/resolved.conf
在文件中找到“DNS=”行,将其更改为:
DNS=114.114.114.114 223.5.5.5 223.6.6.6
保存并退出文件,然后重新启动systemd-resolved服务:
sudo systemctl restart systemd-resolved.service
然后就可以换国内源,进行后续开发了。