Ubuntu

每次核心更新後,GRUB 配置文件都設置為舊的 /root 分區

  • January 10, 2021

語境

我有一台帶有 SATA ( sdb/hd1) 插槽和 m.2 ( sda/hd0) 插槽的筆記型電腦。我在 hd0 插槽上有一個帶有引導和 EFI 分區的 SSD,在 hd1 上有一個帶有/,/homeswap分區的 HHD。

我最近買了一個更大的 SSD 來替換舊的。更換它時,我對 SSD 上的所有分區以及/rootHDD 上的分區進行了備份(使用 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 配置文件。

引用自:https://unix.stackexchange.com/questions/628352