微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/linux/393252.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐