2014-11-24 65 views
6

我知道在Linux中使用"biosdevname"功能的目的,但我不確定 究竟是如何工作的。「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 的功能到底是什麼,它是如何工作的?

+0

你可能想看看在/etc/udev/rules.d/的文件,看是否有規則有推動網絡接口命名 – ComputerDruid 2014-11-24 23:10:36

回答

8

即使卸載軟件包後,biosdevname仍然令人討厭的原因是它也將自己安裝在initrd'initial ramdisk'文件中。

卸載時,/ usr/share/initramfs-tools/hooks/biosdevname被刪除,但軟件包中沒有postrm腳本,因此update-initramfs未執行且biosdevname仍存在於/ boot/initrd ...在系統啓動的第一階段使用的文件。

您可以完全擺脫它這樣的:

$ sudo update-initramfs -u 
相關問題