我决定检查一下我的以太网设备最终的名称,但是与其他发行版相反, Debian 似乎没有激活此更改(或者正在阻止它?),
- 现在保留旧的持久网络接口命名方案,并通过内核命令行上的 net.ifnames=1 选择加入新的命名方案。
问题是我必须编辑 grub 内核行,这对于某些东西来说似乎有点矫枉过正可以通过修改文件来禁用。还有别的办法吗?
答案1
Debian 上的版本 220-7 删除了选择加入的补丁:
* Switch to net.ifnames persistent network interfaces (on new
installations/for new hardware), and deprecate the old
75-persistent-net-generator.rules.
这来自于一项提案debian 开发列表。在用户迁移之前,使用旧命名的系统不会被重命名。阅读 README.Debian 以获取迁移指南。
新名称可以通过以下方式预测:
sudo udevadm test /sys/class/net/eth0 2>/dev/null |grep ID_NET_NAME_
其中eth0
是设备的当前名称。
答案2
我猜你说的是 sid 或 jessie。对于喘息,您可能想尝试v204 的向后移植。
这里可能存在一些误解:从 udev 规则可以看出这里(对于目前在 sid 的 v208),udev 开发者明确地选择内核命令行作为启用此功能的默认方式。
我不认为使用所选接口并简单地GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"
将/etc/default/grub
.您担心有什么具体的副作用吗?
事实上,你提到的答案建议删除一个文件来禁用它,这是一种黑客行为(至少在 Debian 的情况下),从长远来看不会起作用,因为在 debian 中,这些规则存储在 中/lib/udev/rules.d
,即:它们会被覆盖在升级(此外,通过有效删除描述它的文件来禁用功能是有道理的,但是使能这是根本不同的,所以我认为这是一个不公平的比较)。
OTOH,如果您有不使用内核命令行的具体原因,您可以报告 debian 软件包的错误,并让维护者将这些规则移至/etc/udev/
.然后理论上您可以在当前的“持久”规则和新的“可预测”规则之间切换。
但仅供参考:查看版本 209 的源代码,它似乎完全取消了检查net.if_names
,因此您的问题可能需要在不久的将来重新解决。
答案3
在 Debian/Ubuntu 上,从 udev 220 开始,您可以通过重命名此文件来启用新名称:
sudo mv -T /etc/udev/rules.d/70-persistent-net.rules{,.old}
按照 的建议/usr/share/doc/udev/README.Debian.gz
,然后是
sudo update-initramfs -u
然后重新启动(或驱动网卡的模块的 rmmod+insmod)。
答案4
Ubuntu 15.10 使用biosdevname
它不提供可预测的网络接口名称。即使您删除它(apt-get删除biosdevname)并编辑grub(GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"
)和持久性规则,您仍然无法获得可预测的网络接口。
主要原因似乎是向后兼容性。我刚才用2个移动宽带USB设备进行了测试,每次启动时网络接口名称的命名不一致(例如第一个接口usb0,第二个usb1,反之亦然)。主要原因似乎是向后兼容性。
启动板上存在一些错误(例如这)但简短的答案是,如果您正在寻找可预测的网络接口名称,您应该寻找不同的发行版。