如何在Fedora 19上将默认的“ ens33”网络设备更改为旧的“ eth0”?


22

我刚刚在VMware工作站9上安装了Fedora19。在RHEL上,默认网络设备是“ ens33”而不是“ eth0”。

我必须使用“ eth0”的原因是我们产品之一的许可证组件必须与“ eth0”链接。

有一些讨论类似问题的文章,其中大多数是针对较旧的OS的。我还没有找到一个完全符合我的情况的人。


Fedora 19与RHEL 5.5显着不同,因为在问题中该标记为的重复,并且答案也不相同。
mattdm

Answers:


31

恢复内核/模块/ udev重命名以太网接口的旧方法的最简单方法是将这些内核参数提供给Fedora 19

  1. net.ifnames = 0
  2. biosdevname = 0

为此,请按照以下步骤操作:

  1. 编辑/ etc / default / grub
  2. GRUB_CMDLINE_LINUX行的末尾附加“ net.ifnames = 0 biosdevname = 0
  3. 保存文件
  4. 输入“ grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 输入“ 重新启动

如果在安装过程中未提供这些参数,则可能需要在/ etc / sysconfig / network-scripts / ifcfg- *处调整和/或重命名接口文件。

直到Fedora 18 为止,只要biosdevname = 0就足够了。

例如,在一台机器上,经过详尽的研究,我得到:

-无参数:NIC标识为“ enp5s2 ”。
-参数biosdevname = 0:NIC被标识为“ enp5s2 ”。
-参数net.ifnames = 0:NIC被标识为“ em1 ”。
-参数net.ifnames = 0和biosdevname = 0:NIC被标识为“ eth0 ”。


非常感谢您的详细步骤!MathWorks提供给我的所有内容都是针对Fedora的较旧版本。
沃森博士,

@ dr-watson:直到Fedora 14 为止ethX是以太网接口的默认命名。在Fedora 15中,实现了一致的网络设备命名。从Fedora 15到18,仅biosdevname = 0就足以保持ethX命名。别客气。
Guilsson

3
此解决方案也可在Fedora 20上使用。谢谢。
heuristicus 2013年

还曾参与Fedora 21
Eric Grunzke 2014年

以及Ubuntu 14.04。
sjas 2015年

9

您可以使用udev规则执行此操作,如下所示:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF

谢谢你的例子。对于其他用户,值得注意的是,/sys/class/net/ens33根据BIOS返回的值以及在输出中找到的值,可能会有所不同lspci -vv | grep -A25 Ethernet。同样,如果要eth0用作名称,则仅指定内核启动标志以禁用设备的“可预测”命名可能更合适。
马克·爱丁顿

7

在Fedora 20中,情况似乎有了进一步的改变。

1)grub内核参数
是的,似乎“ net.ifnames = 0”和“ biodevame = 0”都是必需的。

2)/ etc / sysconfig / network-scripts / ifcfg-ethX
是的,这些也是必要的。

3)/etc/udev/rules.d/60-net.rules
如果您有多个接口并且想要控制每个设备的命名而不是让内核以自己的方式运行,请/etc/udev/rules.d/60 -net.rules似乎有必要覆盖/usr/lib/udev/rules.d/60-net.rules,如下所示。

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

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

4)yum remove biosdevname似乎没有必要。


1
感谢您分解各种因素。看来您在#1点处有错字,应该是“ biosdevname”而不是“ biodevame”。
Mark Edington


2

虽然接受的答案确实提供了可行的解决方案,但并未说明为什么ens33使用该解决方案。以下链接提供了有关为什么为网络设备命名的名称eth0以及为什么在RHEL 7变体中如何命名的背景:

还要注意的是,出现的“ 33”之类的值ens33来自BIOS返回的PCI适配器插槽值。使用此命令来查看系统为“物理插槽”列出的值:

lspci -vv | grep -A20 Ethernet

可在udev源代码中找到有关名称的“ ens”部分的其他信息。


1

对于Fedora-24:

  1. 编辑 /etc/default/grub

  2. 在结束GRUB_CMDLINE_LINUX行追加net.ifnames=0 biosdevname=0

  3. 保存文件

  4. 类型

    grub2-mkconfig -o /boot/grub2/grub.cfg"
    

    或输入

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. 类型 reboot


如果我将此方法应用于Fedora 26,为什么网络设备会从系统中完全消失?ifconfig仅返回lovirbr0,但最初enp4s0不再存在。
ajeh

为了回答自己:需要小心更改所有用于ethN命名的网络脚本,以使用该约定。我只剩下enp4s0一个剧本。
ajeh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.