gpt4 book ai didi

linux - "biosdevname"是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 00:46:35 25 4
gpt4 key购买 nike

我知道 Linux 中 "biosdevname" 特性的用途,但我不确定如何实现确实有效。

我用 Ubuntu 14.04 和 Ubuntu 14.10(均为 64 位服务器版本)对其进行了测试看起来他们默认启用它 - 在系统启动后我的网络接口(interface)有一个名称,例如 p4p1 而不是 eth0,没有自定义是需要的。据我了解,为了启用 biosdevname,两者必须满足这两个条件:

  • 必须将启动选项 biosdevname=1 传递给内核
  • biosdevname 必须安装包

正如我已经提到的,Ubuntu 14.04 和 14.10 似乎都提供了 biosdevname作为默认功能:它们带有已安装的 biosdevname 包,我也不需要修改 grub.cfg - GRUB_CMDLINE_LINUX_DEFAULT 没有参数和我的网络接口(interface)仍然有一个 BIOS 名称 (p*p*) 而不是内核名称 (eth*.)

后来我想恢复旧式的设备命名方式,这就是有趣的部分开始了。我决定在尝试禁用时进行一些实验biosdevname 功能。因为它需要 biosdevname 包才能工作(或所以我在这里和那里阅读),我认为删除它足以禁用功能,所以我输入:

sudo apt-get purge biosdevname

令我惊讶的是,重启后我的网络接口(interface)仍然是 p4p1, 所以biosdevname 显然仍然有效,即使 biosdevname 包已被删除消灭了。

作为下一步,我对 /etc/network/interfaces 应用了适当的更改为了恢复我的网络接口(interface)的旧名称(删除了 p4p1 的条目并为 eth0 添加条目)。结果,再次重启后,ifconfig既没有报告 eth0 也没有报告 p4p1 这是操作系统仍然存在的另一个证明理解 BIOS 名称而不是内核名称。

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

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

最佳答案

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

卸载时,/usr/share/initramfs-tools/hooks/biosdevname 被移除,但是包中没有 postrm 脚本,所以 update-initramfs 没有被执行,biosdevname 仍然存在于/boot/initrd 中。 ..系统启动第一阶段使用的文件。

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

$ sudo update-initramfs -u

关于linux - "biosdevname"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27112436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com