解决ubuntu系统udev多网卡名称变化的问题 | 迟思堂工作室
A-A+

解决ubuntu系统udev多网卡名称变化的问题

2014-12-23 13:11 GNU/Linux系统 暂无评论 阅读 2,276 次

设备上有2个网卡,虽然留意了,在设置也区别了eth0和eth1,直到设置eth0无效时才发现有了问题。
这个问题其实也是我们自己搞出来的。因为我们的项目使用了硬盘,使用时会将一个设备上的硬盘直接拿到另一个设备上使用,当原来的设备的系统已经有了网卡的配置后,再换一个新硬件平台上(虽然还是同一个硬盘),这些网卡名称就会改变。比如:

# dmesg | grep udev
[    5.005449] systemd-udevd[1174]: starting version 204
[    5.598720] systemd-udevd[1648]: renamed network interface eth0 to eth2
[    6.610114] systemd-udevd[1650]: renamed network interface eth1 to eth3

这个问题网上有很多讨论,我也摸索了好久才解决,但这个解决,不知算不算彻底,至少,使用到目前为止,网卡名称始终为eth0和eth1。

Linux中,网卡设备和mac地址等信息在/etc/udev/rules.d/70-persistent-net.rules文件中,如果这个文件已经存在一个eth0,若下次在不同的设备上启动,将添加新的eth1——而不管eth0有没有效。
下面是这个文件的示例:

 This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.


# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="4c:41:54:45:4c:45", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

正因为如此,我之前我用debootstrap制作根文件系统时,就必须将这个文件清空,以免出现网卡设备名称变化的问题。

解决:
1、
关机时把/etc/udev/rules.d/70-persistent-net.rules清空(以免下次拷贝系统时出现问题)。
启动时把/etc/udev/rules.d/70-persistent-net.rules清空。
清空命令:echo "" > /etc/udev/rules.d/70-persistent-net.rules

2、
在/lib/udev/write_net_rules文件中,把RULES_FIL路径改为其它不存在的目录:

RULES_FILE='/etc/udev/not_rules.d/70-persistent-net.rules'

3、
在/lib/udev/rules.d/75-persistent-net-generator.rules文件中,注释掉下面内容:

# device name whitelist
#KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", \
#                         GOTO="persistent_net_generator_end"

其中第2点存在疑问,现在的设备不进行此操作也正常。因为是很久前解决的,现在忘了,就不改了。
以上仅为个人的解决方法,无权威性,无太多理论依据。

李迟,2014.12.23 中午



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate



标签:

给我留言