GRUB是一個用於引導作業系統啟動的程式。其設定檔中支援使用裝置名稱或UUID來標識磁碟分割。本文介紹如何將GRUB設定檔中的磁碟分割標識方式修改為UUID。
背景資訊
在GRUB設定檔中,若使用裝置名稱(例如/dev/vda1)來標識磁碟分割,其裝置名稱可能會因為匯入鏡像後啟動執行個體等操作而發生改變。如果指定的UUID與磁碟分割實際的UUID不匹配,也可能導致系統啟動時核心無法正確負載檔案系統,從而造成系統啟動失敗。
操作步驟
為了確保GRUB設定檔中根檔案系統磁碟分割標識能夠被程式成功讀取,建議在配置時採用UUID方式來標識磁碟分割。具體操作步驟如下。
修改GRUB配置為高危操作,如果操作不當很可能導致執行個體無法啟動,在操作之前,請務必確認您已為執行個體建立快照,以確保資料安全。
確認GRUB版本資訊
目前,GRUB程式分為GRUB2和GRUB Legacy兩個版本,後者除修複錯誤外,已不再進行開發和維護。確認當前使用GRUB版本的操作步驟如下。
參考如下方法,以確認GRUB版本資訊。
GRUB2
運行如下命令,查看當前系統的
GRUB設定檔結構。sudo ls /etc/grub.d/回顯資訊樣本如下,如果其中包含
00_header、40_custom等內容,表明您使用的是GRUB2。00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 30_uefi-firmware 40_custom 41_customGRUB Legacy
運行如下命令,查看
/boot目錄下的設定檔結構。sudo ls /boot/grub/如果存在
/boot/grub目錄,且在該目錄下存在menu.lst檔案,那麼您使用的是GRUB Legacy。
確認GRUB設定檔資訊
GRUB2和GRUB Legacy對應的設定檔存在一些差異。
GRUB2:設定檔通常位於/boot/grub/grub.cfg或/boot/grub2/grub.cfg中。GRUB Legacy:設定檔通常位於/boot/grub/menu.lst或/boot/grub/grub.conf中。
您可以參考上述樣本,進入/boot目錄以確認GRUB設定檔資訊。
擷取當前磁碟資訊
您需要擷取當前執行個體的磁碟分割資訊,以便後續修改GRUB設定檔。具體操作如下。
運行如下命令,查看當前執行個體磁碟分割資訊。
sudo blkid回顯資訊樣本如下。
/dev/vda1: LABEL="/" UUID="e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645" TYPE="ext4" PARTUUID="0efbxxxx-01"以上樣本顯示,
/dev/vda1裝置的UUID為e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645。
修改GRUB設定檔
運行如下命令,備份當前
GRUB設定檔。sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak重要如果修改GRUB設定檔後,想要恢複到修改前的狀態,您可以運行如下命令。
sudo cp -f /boot/grub2/grub.cfg.bak /boot/grub2/grub.cfg運行如下命令,開啟
GRUB設定檔。sudo vim /boot/grub2/grub.cfg按
i進入編輯模式,將設定檔中所有包含root=/dev/vda1的內容全部替換為root=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645。linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/vda1 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8修改後的內容如下所示。
linux /boot/vmlinuz-3.16.0-4-amd64 root=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8編輯完成後,按
Esc鍵退出編輯模式,輸入:wq儲存並退出。(可選)運行如下命令,查看修改後的設定檔。從而確保
GRUB中配置的磁碟分割標識都被修改為UUID方式。sudo cat /boot/grub2/grub.cfg
相關文檔
關於fstab檔案中配置掛載資料盤的操作,請參見在fstab檔案中配置UUID方式自動掛載資料盤。