加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 19:51:07 所属栏目:Linux 来源:网络整理
导读:我知道 Linux中“biosdevname”功能的目的,但我不知道如何 确切地说它有效. 我用Ubuntu 14.04和Ubuntu 14.10(都是64位服务器版本)进行了测试 看起来他们默认启用它 – 在系统启动后立即启用它 网络接口有一个名称,如p4p1而不是eth0,没有自定义 需要.据我了解
我知道 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读