Ubuntu

如何重置 /boot 分區

  • September 1, 2022

我有一個可啟動的 USB,其中安裝了 Ubuntu 20.04。昨天我嘗試用 Arch Linux 讓它雙啟動並成功了。

起初,我安裝 Arch Linux,並將引導分區掛載到/mnt/boot. 然後在安裝過程中它失敗了,但它已經在引導分區中創建(覆蓋?)initramfs 映像和核心。在此之後,我已經格式化了 Arch Linux 的分區並重新安裝了,但沒有掛載引導分區。

現在,GRUB 中的第一個 Ubuntu 選項嘗試啟動 Arch Linux 並失敗了,Arch Linux 選項也失敗了。為了啟動到 Ubuntu,我必須使用高級選項並選擇一個指定 5.15.0-46-generic 核心的選項。

為了解決這個問題,我認為刪除Arch Linux 創建的amd-ucode.img,intel-ucode.imgvmlinux-linuxEditing Grub options via grub-customizer(刪除啟動到 Arch 並失敗的第一個選項,將啟動到 Ubuntu 的選項移到頂部)是安全的。但是如何修復啟動到 Arch 的選項?

(啟動到 Ubuntu)

輸出ls /boot -lah

drwxr-xr-x  5 root root 4,0K Ağu 31 20:37 .
drwxr-xr-x 20 root root 4,0K Ağu 29 23:56 ..
-rw-r--r--  1 root root  50K Tem 15 13:16 amd-ucode.img
-rw-r--r--  1 root root 252K Haz  3 01:48 config-5.13.0-48-generic
-rw-r--r--  1 root root 257K Ağu  4 21:44 config-5.15.0-46-generic
drwxr-xr-x  5 root root 4,0K Eyl  1 11:59 grub
drwxr-xr-x  5 root root 4,0K Ağu 31 14:00 grub.bak
-rw-------  1 root root  34M Ağu 31 20:38 initramfs-linux-fallback.img
-rw-------  1 root root 8,7M Ağu 31 20:37 initramfs-linux.img
lrwxrwxrwx  1 root root   28 Ağu 30 23:25 initrd.img -> initrd.img-5.15.0-46-generic
-rw-r--r--  1 root root  62M Ağu 26 11:34 initrd.img-5.13.0-48-generic
-rw-r--r--  1 root root  67M Ağu 30 23:27 initrd.img-5.15.0-46-generic
lrwxrwxrwx  1 root root   28 Ağu 30 23:25 initrd.img.old -> initrd.img-5.13.0-48-generic
-rw-r--r--  1 root root 5,0M Ağu  9 21:43 intel-ucode.img
drwx------  2 root root  16K Kas  9  2021 lost+found
-rw-r--r--  1 root root 179K Ağu 18  2020 memtest86+.bin
-rw-r--r--  1 root root 181K Ağu 18  2020 memtest86+.elf
-rw-r--r--  1 root root 181K Ağu 18  2020 memtest86+_multiboot.bin
-rw-------  1 root root 5,7M Haz  3 01:48 System.map-5.13.0-48-generic
-rw-------  1 root root 6,0M Ağu  4 21:44 System.map-5.15.0-46-generic
lrwxrwxrwx  1 root root   25 Ağu 30 23:25 vmlinuz -> vmlinuz-5.15.0-46-generic
-rw-------  1 root root 9,8M Haz  3 01:50 vmlinuz-5.13.0-48-generic
-rw-------  1 root root  11M Ağu  4 21:47 vmlinuz-5.15.0-46-generic
-rw-r--r--  1 root root  11M Ağu 31 20:37 vmlinuz-linux
lrwxrwxrwx  1 root root   25 Ağu 30 23:25 vmlinuz.old -> vmlinuz-5.13.0-48-generic

grub-customizer 的引導選項:

grub-customizer 的引導選項

你很幸運。我不同意GRUB 中發布的答案混淆了 Ubuntu 和 Arch Linux 安裝的核心/initramfs,並聲稱 Arch 和 Ubuntu 可以與共享/boot分區完全共存。

/boot中,這些文件屬於 Arch(核心和 initramfs):

initramfs-linux-fallback.img
initramfs-linux.img
vmlinuz-linux

這些文件屬於 Ubuntu:

initrd.img
initrd.img-*-generic
vmlinuz
vmlinuz-*-generic

如您所見,沒有重疊。兩個系統唯一爭奪的是位於/boot/grub/grub.cfg.

我建議通過引導進入 Ubuntu 並執行sudo update-grub. 據我所知,這會將 Arch 核心誤認為是 Ubuntu 核心並產生無效條目。我知道沒有辦法阻止這種情況的發生,所以我認為你需要忽略它。

您可以繼續添加一個新文件/boot/grub/custom.cfg並手動定義一個用於引導 Arch 的新條目:

menuentry 'Arch Linux' {
 insmod gzio
 insmod ext2
 search --no-floppy --fs-uuid --set=root <SOMEUUID> ← copy this line from one of the autogenerated Ubuntu entries
 linux /boot/vmlinuz-linux rw root=UUID=<SOMEOTHERUUID> ← put the UUID of your arch linux installation here
 initrd    /boot/initramfs-linux.img
}

您可以通過執行找到 UUID sudo blkid

玩得開心嘗試新發行版!

注意:如果你啟動了 Arch,同樣的事情也會發生。那麼你可能會遇到同樣的問題,但反過來。update-grub在 Arch 中執行時,可能會為 Ubuntu 核心創建不可用的條目。我建議將其中一個工作的 Ubuntu 條目從 複製grub.cfgcustom.cfg以防萬一。

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