题目: Ubuntu Server 13 下重新命名网卡名
[ 第一次编辑(2014-10.23)] `
用了 ubuntu Server 13.10 后发现,下面 网卡名不叫 eth0 ~ eth? 了, 而改叫古怪的名字, 例如 p1p1, p2p1, p4p1, p4p2, 更有甚这叫 rename5 的, 不知道发生什么情况。
用 ip 跟参数 addr 的命令, 可以看到目前叫什么名字, 根据这个名字,可以自行配置 /etc/network/interfaces
如 auto p1p1 另开一行接着写 iface p1p1 inet dhcp
初步怀疑是 Ubuntu Server 版的一个 bug , 这 Server 系列版本的测试一直都不很十分充分, 例如 14.04 里面 设置不了时区, 同时 无法成功执行 service networking restart 的常用操作。
想要用回 eth? 这样的 标准命名吗? 可以参考下面的方法
可以临时重命名, 但是重启就会失效的了
nameif eth0 00:0b:ab:85:dc:c4
nameif eth1 00:0b:ab:85:dc:c5
根据提示配置了 /etc/mactab 内容如下
eth3 ec:22:80:eb:9d:5a
eth4 EC:22:80:EB:9D:42
另一个参考了网上的方法,编写配置文件(如下: 70-persistent-net.rules),放在 /etc/udev/rules.d 目录下,替换了里面真实 Mac地址
# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# Place into /etc/udev/rules.d, 70-persistent-net.rules
#
# You can modify it, as long as you keep each rule on a single line.
# PCI device 0x10ec:0x8168 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0b:ab:85:dc:c4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x10ec:0x8168 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0b:ab:85:dc:c5", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x1106:0x3106 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="ec:22:80:eb:9d:5a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x1106:0x3106 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="ec:22:80:eb:9d:42", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
据怀疑, 可能是 Ubuntu Server 13.10 的安装文件里, udev 组件的一个脚本安装错误导致, 上面的配置文件由 /lib/udev/write_net_rules 脚本生成,但是直接执行这个脚本会报错!
---------------------
上面 PCI device 信息, 包括 Vendor Id 和 Device Id 可以用 lspci -nn 来获得, 更详细的信息 请用 lspci -vvv 查看。 详细用法请参考 man -k lspci
其他常用的 观察硬件信息的命令还有 lsusb 和 lsmod 以及 dmesg | grep eth, 详细请 man -k ...