如何重置/boot分区

如何重置/boot分区

我有一个可启动 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.img并通过编辑 Grub 选项(删除启动到 Arch 并失败的第一个选项,将启动到 Ubuntu 的选项移动到顶部)是安全的。但如何修复启动 Arch 的选项呢?vmlinux-linuxgrub-customizer

(启动进入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 中的引导选项

答案1

你很幸运。我不同意中发布的答案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

正如您所看到的,没有重叠。两个系统唯一争夺的是位于 的 GRUB 配置/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以防万一。

相关内容