我知道Linux中"biosdevname"
功能的用途,但我不确定如何
确切地说它有效。
我使用Ubuntu 14.04和Ubuntu 14.10(均为64位服务器版本)进行了测试
看起来他们默认启用它 - 在系统启动后立即启用它
网络接口的名称如p4p1
而不是eth0
,没有自定义
需要。据我所知,为了biosdevname
启用,两者兼而有之
必须满足这两个条件:
biosdevname=1
传递给内核biosdevname
包正如我已经提到的,Ubuntu 14.04和14.10似乎都提供biosdevname
作为默认功能:它们已经安装了biosdevname
包,我
我也不需要修改grub.cfg
- GRUB_CMDLINE_LINUX_DEFAULT
没有
参数和我的网络接口仍然有一个BIOS名称(p*p*
)而不是
内核名称(eth*
。)
后来我想恢复旧式设备命名和那个地方
有趣的部分开始。我决定尝试禁用时尝试一下
biosdevname
功能。因为它需要biosdevname
包才能工作(或者
所以我在这里和那里阅读),我假设删除它就足以禁用了
功能,所以我键入:
sudo apt-get purge biosdevname
令我惊讶的是,重启后我的网络接口仍然是p4p1,
biosdevname
即使biosdevname
包已经显而易见,/etc/network/interfaces
仍然有效
消灭了。
下一步,我对p4p1
进行了适当的更改
为了恢复我的网络接口的旧名称(删除了eth0
的条目
并添加了ifconfig
)的条目。因此,在重新启动后,eth0
报告p4p1
和GRUB_CMDLINE_LINUX_DEFAULT=biosdevname=0
都不是OS的另一个证据
了解BIOS名称而不是内核名称。
原来我还必须明确地将GRUB条目更改为
biosdevname
并更新GRUB以获得预期结果
结果(已禁用biosdevname
并恢复网络接口的旧名称。)
我的问题是:biosdevname
如何在没有biosdevname
包的情况下工作?是
毕竟不需要吗?如果是这样,究竟是什么提供了{{1}}
功能以及它是如何工作的?
答案 0 :(得分:9)
即使在卸载软件包之后,biosdevname仍然让你烦恼的原因是它自己安装在initrd'初始ramdisk'文件也是。
卸载时,删除了/ usr / share / initramfs-tools / hooks / biosdevname,但程序包中没有postrm脚本,因此不执行update-initramfs,并且/ boot / initrd中仍然存在biosdevname。 ..在系统启动的第一阶段使用的文件。
你可以完全摆脱它:
$ sudo update-initramfs -u