Ubuntu
每次核心更新後,GRUB 配置文件都設置為舊的 /root 分區
語境
我有一台帶有 SATA (
sdb/hd1
) 插槽和 m.2 (sda/hd0
) 插槽的筆記型電腦。我在 hd0 插槽上有一個帶有引導和 EFI 分區的 SSD,在 hd1 上有一個帶有/
,/home
和swap
分區的 HHD。我最近買了一個更大的 SSD 來替換舊的。更換它時,我對 SSD 上的所有分區以及
/root
HDD 上的分區進行了備份(使用 clonezilla);然後我恢復了新驅動器上的所有這些分區。我還將舊/
分區保留在 HDD 上,以防出現問題。恢復後我做了這些更改:
- 在
/boot/grub.cfg
文件中,我將所有引用舊/root
分區 (/dev/sdxn
) 或其 UUID (UUID=[old partition's uuid]
) 的行更改為引用新分區。- 在
/etc/fstab
(在新分區上),我還將舊分區的所有 UUID 更改為新分區。問題
這些更改使我能夠在新 SSD 上正確啟動,但每次更新後,
/boot/grub.cfg
文件都會返回引用舊分區。我猜仍然有一些文件負責生成仍然具有舊分區資訊的 grub 配置,但我無法找到它。
在 Debian/Ubuntu 上,
/boot/grub/grub.cfg
通常由 自動生成,每次核心更新時都會grub-mkconfig
呼叫它。update-grub
grub-mkconfig
從 獲取其配置/etc/default/grub
,並使用/etc/grub.d/
目錄中的腳本來建構/boot/grub/grub.cfg
文件。你沒有提到檢查這些位置,所以你應該這樣做。這兩個地方都可能包含定制。在 UEFI 系統上,還有
/boot/efi/EFI/ubuntu/grub.cfg
包含/boot/grub
目錄的文件系統的 UUID(無論是根文件系統還是單獨的/boot
文件系統)。這個文件只是指示grubx64.efi
找到那個文件系統並從那裡讀取“真正的”GRUB 配置文件。