一、busybox文件系统网络问题
由于根文件是用busybox构建,所以很多配置文件是没有的,包括部分网络的默认设置。启动虚拟机后只能使用ip命令和ifconfig命令查看网络状态。
二、开启qemu网络支持
想要使虚拟机上网,最简单的方式可以使用 -netdev user 参数:
-netdev user,id=net0,hostfwd=tcp::10022-:22 \
-device virtio-net-pci,netdev=net0
详细描述可以看我另一篇文章:
qemu-system-aarch64开启user用户模式网络连接_qemu-system命令-CSDN博客https://blog.csdn.net/plmm__/article/details/142701489?spm=1001.2014.3001.5502如果需要更加完善的网络性能,可以使用桥接的方式,这里不详细描述,比较麻烦。
三、虚拟机网络配置
进入根文件系统后,首先使用 ipaddr 查看网络名称,然后使用
ip link set eth0 up
开启网卡,或者
ifconfig eth0 up
执行dhcp获取ip(busybox默认安装udhcpc):
udhcpc
可以得到ip地址以及一个服务器地址:
在qemu虚拟机中的ip地址应该都是10开头的,这是正常的。可惜这个指令不能自动设置。
设置IP地址:
ifconfig eth0 10.0.2.15
然后配置一个默认路由,gw网关地址就填刚刚的 server 地址:
route add default gw 10.0.2.2
最后配置DNS:
vi /etc/resolv.conf
填入这几个,这里看个人喜好:
nameserver 114.114.114.114
nameserver 8.8.8.8
ping一下局域网的设备和百度:
四、缺点
使用 -netdev user 方式的虚拟机网络,对外网是单向的,也就是其他设备或者主机访问不到虚拟机。
因此我使用共享文件夹来实现主机给虚拟机传输数据,虚拟机到主机则使用scp,实现数据的回路。共享文件夹的使用可以看另一篇文章,在末尾有讲:
qemu模拟arm64环境-构建6.1内核以及debian12_qmenu debian-12-nocloud-arm64.raw-CSDN博客https://blog.csdn.net/plmm__/article/details/142720338?spm=1001.2014.3001.5502