我已將介面名稱更改eth1
為eth0
.現在如何要求udev
重新讀取配置?
service udev restart
和
udevadm control --reload-rules
別幫忙。那麼除了重啟還有什麼有效的方法嗎? (是的,重新啟動有助於解決此問題)
是的,我知道我應該在命令前面加上
sudo
,但是我上面發布的任何一個都不會改變ifconfig -a
輸出:我仍然看到eth1
,而不是eth0
。我剛剛更改了
NAME
udev-rule 行的屬性。不知道有什麼原因導致此方法無效。
沒有任何錯誤在執行我上面發布的兩個命令時,但它們只是不會更改ifconfig -a
輸出中的實際介面名稱。如果我執行重新啟動 - 那麼介面名稱將按預期更改。
出於開發目的,我編寫了一些腳本來複製虛擬機器(VirtualBox 驅動程式)並以某種方式預先設定它們。
因此,我執行命令來克隆虛擬機,啟動它,只要網路介面 MAC 發生更改 -udev
將第二條規則添加到網路持久規則中。機器第一次啟動後有兩個規則:
eth0
,不存在,只要在原始VM鏡像MAC中就存在eth1
,它存在,但所有文件中的所有配置都引用eth0
,所以它對我來說不太好
所以我sed
刪除了該行eth0
(它在克隆圖像中已過時且無用)並替換eth1
為eth0
.所以目前我有有效的持久規則,但仍然eth1
存在/dev
。
問題:我不想重新啟動機器(這將需要另一個時間,這在構建虛擬機階段不是一件好事),只想用/dev
一些命令重建我的機器,這樣我就可以使用虛擬機了無需重新啟動。
答案1
我不知道這是否有助於重新加載網絡配置,但是當我修改/etc/udev/rules.d/70-persistent-cd.rules
以更正 DVD 設備鏈接從/dev/dvd1
到 時/dev/dvd
,我必須運行
sudo udevadm trigger
以獲得創建的新連結。
答案2
您必須按正確的順序組合此處給出的所有建議:
- 關閉網路
service networking stop
- 從核心卸載驅動模組
- 找到模組的名稱
lspci -v
並尋找“正在使用的核心驅動程式:” modprobe -r <driver module>
- 找到模組的名稱
- 重新載入 udev 規則
udevadm control --reload-rules
- 觸發新規則
udevadm trigger
- 載入驅動程式
modprobe <driver module>
- 重新啟動網路
service networking start
- (可選)在介面啟動之前重新執行
iptables
引用該介面名稱的所有腳本。eth
我懷疑步驟 4 或步驟 5 並不是真正需要的,但這些步驟對我有用。您可以在步驟 4 和步驟 2.1 之後檢查觸發命令是否已經執行了步驟 5,如果執行了,請編輯此答案以反映您的發現。
答案3
我有類似的問題。由於我不想花時間重新啟動,因此我按照 Chris Wesseling 的建議運行了單行程式。
/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm 觸發器 && modprobe tg3 && /etc/init.d/networking start
這對我使用 Ubuntu 12.04.02 伺服器有用。我的網路卡使用的是 tg3 核心模組驅動程序,因此將 tg3 更改為您的介面正在使用的模組。我發現我用的那些/etc/udev/rules.d/70-persistent-net.rules
:
PCI 裝置 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <-網路卡的核心模組驅動程式
我遇到的一個問題是一條錯誤的路線,我用一個簡單的路線添加命令修復了該問題。感謝克里斯的幫忙!
答案4
sudo /etc/init.d/udev restart
應該可以解決問題。您嘗試過的一些命令如果使用 運行sudo
,也可能有效。