我正在使用 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
但是仍然没有以太网接口...
好的,所以我终于发现了问题所在。如果有人感兴趣,这里是答案。
如前所述,我使用 Buildroot 生成了我的 linux 映像,但我错误地配置了内核。我需要为以太网添加一些驱动程序,以便能够拥有 eth0 接口。现在,我知道了,它实际上似乎很明显。更多细节在这里: https ://stackoverflow.com/questions/33337062/buildroot-ip-cant-find-device-eth0
此外,这解决了我在 /etc/resolv.conf 上遇到的另一个 VM 上缺少的问题。
希望对某人有所帮助……有一天。:)