我有一个小应用程序,它接收内核代码并启动虚拟机。我一直用它来进行内核开发。当我想使用不同的内核代码启动虚拟机时,它非常有用且速度非常快。该应用程序使用 qemu,并根据给定的选项动态生成 qemu 命令。我面临的问题是网络接口名称不断变化。
初始设置是这样的,接口名称是ens*
,我在配置中进行了以下配置以/etc/network/interfaces
将它们配置为 dhcp
allow-hotplug ens3
iface ens3 inet dhcp
我设置了多个,以确保如果名称从 推送到ens3
(ens7
可能是由于添加了 qcow 作为 scsi 设备),网络接口ens7
仍会得到配置。它工作正常。
现在有了新的 Linux 内核 6.4-rc,我发现接口的名称显示为 enp0s*。现在我的/etc/network/interfaces
配置不起作用了。我无法/etc/network/interfaces
根据内核不断更改文件,因为这违背了简单地更改内核代码路径和启动虚拟机的目的。顺便说一句,这在 2 年内运行良好,适用于从 4.19 到 6.1 的内核(还没有测试过 6.2 和 6.3)
我的问题是,是否有一种默认的网络配置方法,以便所有网络接口都使用 dhcp。基本上,类似
allow-hotplug all
iface all inet dhcp
答案1
有多种方法可以做到这一点。
你可以
- 在启动过程中生成 /etc/network/interfaces,使用指定的名称
- 禁用设备重命名(最初分配的 eth0、eth1... 仍可通过
net.ifnames=0
在内核命令行上指定来使用 - 使用 udev 规则根据 MAC 地址分配名称