linux – “biosdevname”如何真正起作用?

我知道 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这是操作系统仍然存在的另一个证据
了解BIOS名称而不是内核名称.

事实证明,我还必须明确地将GRUB条目更改为
GRUB_CMDLINE_LINUX_DEFAULT = biosdevname = 0并更新GRUB以获得预期的结果
结果(禁用了biosdevname,恢复了网络接口的旧名称).

我的问题是:如果没有biosdevname包,biosdevname怎么办?是
毕竟不需要吗?如果是这样,究竟是什么提供了biosdevname
功能和它是如何工作的?

解决方法

即使在卸载软件包之后,biosdevname仍然让你烦恼的原因是它自己也安装在initrd的“初始ramdisk”文件中.

卸载时,删除了/usr/share / initramfs-tools / hooks / biosdevname,但是包中没有postrm脚本,因此不执行update-initramfs,并且/ boot / initrd …文件中仍然存在biosdevname用于系统启动的第一阶段.

你可以像这样完全摆脱它:

$sudo update-initramfs -u

相关文章

insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...