網絡卡命名規則(linux)

2021-09-28 21:58:06 字數 3256 閱讀 3710

網絡卡命名規則:

scheme 1: 如果從bios中能夠取到可用的,板載網絡卡的索引號,則使用這個索引號命名,例如: eno1,如不能則嘗試scheme 2

scheme 2: 如果從bios中能夠取到可以用的,網絡卡所在的pci-e熱插拔插槽(注:pci槽位號)的索引號,則使用這個索引號命名,例如: ens1,如不能則嘗試scheme 3

scheme 3:如果能拿到裝置所連線的物理位置(pci匯流排號+槽位號?)資訊,則使用這個資訊命名,例如:enp2s0,如不能則嘗試scheme 5

scheme 5:傳統的kernel命名方法,例如: eth0,這種命名方法的結果不可預知的,即可能第二塊網絡卡對應eth0,第一塊網絡卡對應eth1。

scheme 4 使用網絡卡的mac位址來命名,這個方法一般不使用。

如:enp2s0

前兩個字元的含義

en 乙太網 ethernet

wl 無線區域網 wlan

ww 無線廣域網 wwlan

第三個字元根據裝置型別來選擇

format description

o 整合裝置索引號

s 擴充套件槽的索引號

x s 基於mac進行命名

p s pci擴充套件匯流排

biosdevname和net.ifnames兩種命名規範

net.ifnames的命名規範為: 裝置型別+裝置位置+數字

裝置型別:

en 表示ethernet

wl 表示wlan

ww 表示無線廣域網wwan

實際的例子:

eno1 板載網絡卡

enp0s2 pci網絡卡

ens33 pci網絡卡

wlp3s0 pci無線網絡卡

wwp0s29f7u2i2 4g modem

wlp0s2f1u4u1 連線在usb hub上的無線網絡卡

enx78e7d1ea46da pci網絡卡

biosdevname的命名規範為

實際的例子:

em1 板載網絡卡

p3p4 pci網絡卡

p3p4_1 虛擬網絡卡

systemd中的實際執行順序

按照如下順序執行udev的rule
1./usr/lib/udev/rules.d/60-net.rules

2./usr/lib/udev/rules.d/71-biosdevname.rules

3./lib/udev/rules.d/75-net-description.rules

4./usr/lib/udev/rules.d/80-net-name-slot.rules

1)60-net.rules

使用/lib/udev/rename_device這個程式,去查詢/etc/sysconfig/network-scripts/下所有以ifcfg-開頭的檔案,如果在ifcfg-xx中匹配到hwaddr=xx:xx:xx:xx:xx:xx引數的網絡卡介面則選取device=yyyy中設定的名字作為網絡卡名稱。
2)71-biosdevname.rules

如果系統中安裝了biosdevname,且核心引數指定biosdevname=1,且上一步沒有重新命名網絡卡,則按照biosdevname的命名規範,從bios中取相關資訊來命名網絡卡。

主要是取smbios中的type 9 (system slot) 和 type 41 (onboard devices extended information)不過要求smbios的版本要高於2.6,且系統中要安裝biosdevname程式。

3)75-net-description.rules

udev通過檢查網絡卡資訊,填寫如下這些udev的屬性值

id_net_name_onboard

id_net_name_slot

id_net_name_path

id_net_name_mac

4)80-net-name-slot.rules

如果在60-net.rules ,71-biosdevname.rules這兩條規則中沒有重新命名網絡卡,且核心指定net.ifnames=1引數,則udev依次嘗試使用以下屬性值來命名網絡卡,如果這些屬性值都沒有,則網絡卡不會被重新命名。
id_net_name_onboard

id_net_name_slot

id_net_name_path

上邊的71-biosdevname.rules 是實際執行biosdevname的策略

75-net-description.rules和80-net-name-slot.rules實際執行上面策略的1,2,3。

根據上述的過程,可見網絡卡命名受 biosdevname和net.ifnames這兩個核心引數影響。
這兩個引數都可以在grub配置中提供。

biosdevname=0是系統預設值(dell伺服器預設是1),net.ifnames=1是系統預設值:

修改預設引數:如回歸預設命名方式:

1)編輯核心引數

在grub_cmdline_linux中加入net.ifnames=0即可

[root@centos7 ~]$vim /etc/default/grub
grub_cmdline_linux=「crashkernel=auto net.ifnames=0 rhgb quiet」

2)為grub2生成配置檔案

編輯完grub配置檔案以後不會立即生效,需要生成配置檔案。

[root@centos7 ~]$grub2-mkconfig -o /etc/grub2.cfg
第二節所說的scheme的策略順序是系統預設的。

總結:

1)如系統bios符合要求,且系統中安裝了biosdevname,且biosdevname=1啟用,則biosdevname優先;

2)如果bios不符合biosdevname要求或biosdevname=0,則仍然是systemd的規則優先。

3)如果使用者自己定義了udev rule來修改核心裝置名字,則使用者規則優先。

核心引數組合使用的時候,其結果如下:

預設核心引數(biosdevname=0,net.ifnames=1): 網絡卡名 「enp5s2」

biosdevname=1,net.ifnames=0:網絡卡名 「em1」

biosdevname=0,net.ifnames=0:網絡卡名 「eth0」 (最傳統的方式,eth0 eth1 )

linux網絡卡命名規則

伺服器通常有多塊網絡卡,有板載整合的,同時也有插在pcie插槽的。linux系統的命名原來是eth0,eth1這樣的形式,但是這個編號往往不一定準確對應網絡卡介面的物理順序。為解決這類問題,dell開發了biosdevname方案。systemd v197版本中將dell的方案作了進一步的一般化拓展...

修改網絡卡命名規則的筆記

先修改啟動檔案 etc sysconfig grub cmdline linux 行尾加 net.ifnames 0 biosdevname 0 刷一下 grub2 mkconfig o boot grub grub.cfg 將現在已經有啟始那個更名mv ifcfg ens33 ifcfg eth0...

Linux裝置命名規則

linux中ide硬碟,驅動識別符號為 hdx 其中hd表示裝置型別為ide硬碟,x為盤號,表示第幾塊硬碟 a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤 代表分割槽,前4個分割槽用數字1到4表示,它們是主分割槽或擴充套件分割槽,從5開始就是邏輯分割槽 擴充套件分割槽不能直接使用,需切割出...