【问题标题】:My newly compiled kernel loses Networking in qemu我新编译的内核在 qemu 中丢失了网络
【发布时间】:2018-11-08 00:16:24
【问题描述】:

我从源代码编译了一个内核: make defconfig make kvmconfig make -j 4 在此之后,我将生成的 bzImage 用于我的 qemu 命令: qemu-system-x86_64 -hda debian.img -kernel bzImage -append "root=/dev/sda console=ttyS0" -nographic -m 4096 -smp 2 --enable-kvm -net user,hostfwd=tcp::10021-:22 -net nic 它安装了,我得到了一个外壳和所有东西,但它失去了连接。在 qemu 中,它记录: [FAILED] Failed to start Raise network interfaces. See 'systemctl status networking.service' for details. 有人可以指导我吗?我已经咨询了Linux vanilla kernel on QEMU and networking with eth0,但它并没有解决我的问题。另外,我不是在寻找核心 qemu-bridge-solutions。我很确定某些网络驱动程序没有被加载,但我不知道如何解决它。或者我可能缺少一些内核 .config 选项。

【问题讨论】:

    标签: linux networking linux-kernel kernel qemu


    【解决方案1】:

    正在寻找这个问题的答案。对于其他寻求帮助的人,OP 所指的 dhclient 命令是(找到here):

    dhclient -v <interface> 
    

    interface 是ip a 结果中显示的任何网络适配器。

    为了使这个更改在重启后保持不变,我通过插入以下内容修改了 /etc/network/interfaces 文件:

    auto <interface>
    iface <interface> inet dhcp
    

    【讨论】:

    • 这适用于我面临的问题。有没有办法在重新启动后保留此配置?
    • 更新了重启后如何保留的答案。
    【解决方案2】:

    您正在使用用户套接字。为此,qemu 在其主机进程中创建一个常规套接字,并将客户机中特定端口的数据包转发到主机套接字。这是可行的,但我觉得很烦人。

    我总是更喜欢创建一个 Tap 设备并使用这些 QEMU 开关将其桥接到我的物理接口:

    -netdev tap,ifname=tap0,script=no,downscript=no,id=my_net_id \
    -device driver=virtio-net,netdev=my_net_id
    

    这样你就拥有了完整的网络能力,而且你不需要使用一些奇怪的端口重定向。

    【讨论】:

    • 非常感谢,虽然我实际上并没有使用这种技术,但我搜索了一下它,以及如何在桥上设置 tap0,并遇到了一个名为“dhclient”的命令,显然运行它允许虚拟机重新连接到网络驱动程序(可能),它会启动网络接口。
    猜你喜欢
    • 1970-01-01
    • 2014-08-18
    • 2020-10-02
    • 2018-01-27
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2015-11-02
    • 2017-09-06
    相关资源
    最近更新 更多