qemu-system-aarch64开启user用户模式网络连接

一、问题

        在使用qemu构建arm64的虚拟机时,虚拟机没有网络,桥接方式相对麻烦,我只是需要联网更新即可。与宿主机的通信我使用共享文件夹即可满足要求。

        使用指令启动虚拟机时,网络部分的参数为

-net user,hostfwd=tcp::10022-:22

其中 hostfwd 将宿主机的 10022 端口转发到虚拟机的 22 端口,可以通过 SSH 连接到虚拟机。运行时提示 user 不支持:

        使用

qemu-system-aarch64 --help

发现Network options一栏,没有-netdev user 这一项:

切换为 

qemu-system-arm --help

则有这一项:

       

二、解决过程

1、配置 --enable-user   

由于编译源码时使用的 target-list="aarch64-softmmu",那么有可能就是没有开启user。

./configure --enable-kvm --enable-debug --enable-vnc --target-list="aarch64-softmmu"

百度查询该问题都没有提到,默认都是开启该功能。

        于是在配置 configure 时添加 --enable-user 选项,重新编译源码:

./configure --enable-kvm --enable-debug --enable-vnc --enable-user --target-list="aarch64-softmmu"
make -j8
sudo make install

执行

qemu-system-aarch64 --help

仍然没有该选项,并且执行启动虚拟机指令依然提示没有 user选项。

2、配置 slirp

        查看 configure 执行的结果,找到 Network 一栏,发现只有最后一项开启。

        slirp 是一个用户空间的网络重定向器,它允许 qemu 的虚拟机通过宿主机的主机网络进行网络通信。当使用 user 网络模式时,qemu 会自动启用 slirp。也就是说,如果不开启 slirp,就无法使用 user。

更改 configure 命令:

./configure --enable-kvm --enable-debug --enable-vnc --enable-user --enable-slirp --target-list="aarch64-softmmu"

执行结果:

make

sudo make install

三、验证

        执行 

qemu-system-aarch64 --help

        可能会提示没有 libslirp.so.0 库,安装即可:

sudo apt-get install libslirp0

        再次执行,可以看到已经有 user 选项:

另外新的指令的网络设置部分为:

-netdev user,id=net0,hostfwd=tcp::10022-:22 \
-device virtio-net-pci,netdev=net0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plmm烟酒僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值