我正在使用 qemu 模拟自定义 Linux 系统(使用 buildroot 生成),并且我想导出我的应用程序在我的主机上的显示。
这看起来很简单,但我已经被困了几天阅读文档和堆栈交换帖子,但我一直无法找到解决方案。
我不需要访客访问外部网络,我只希望主机和访客能够相互通信。
按照 qemu 文档,我尝试了 SLIRP 和 tun/tap 网络,但我无法使任何工作发挥作用。
我还尝试了 ssh 端口转发的“-redir”选项,但也没有结果。
有关更多信息: - 主机是 ubuntu 16.04 - ifconfig -a,在来宾上显示 lo 和 tunl0 接口,但没有 eth0 接口。我无法理解 tunl0 是什么,因为即使使用“-net none”选项它也一直显示。 - 我已经为来宾添加了 virtio 驱动程序作为模块。
现在,我正在使用以下行来启动 qemu :
qemu-system-x86_system -kernel bzImage -initrd initrd.gz -drive id=disk,file=image.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -m 2048 -net nic -net tap,ifname=tap0,script=no,downscript=no
我尝试手动设置点击界面:
tunctl -u $USER
ifconfig tap0 <gateway ip> up
编辑:我还尝试一步步遵循 arch linux 教程: https://wiki.archlinux.org/index.php/Network_bridge 和 https://wiki.archlinux.org/index.php/QEMU
但仍然没有以太网接口...
答案1
好的,所以我终于找到了问题所在。如果有人感兴趣的话,这就是答案。
如前所述,我使用 Buildroot 生成 Linux 映像,但我错误配置了内核。我需要添加一些以太网驱动程序,以便能够拥有 eth0 接口。现在,我知道了,它实际上看起来很明显。更多详细信息请参见此处: https://stackoverflow.com/questions/33337062/buildroot-ip-cant-find-device-eth0
另外,这还解决了我在虚拟机上缺少 /etc/resolv.conf 时遇到的另一个问题。
希望能帮助某人……有一天。 :)