我有一个可启动 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-linux
grub-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 的引导选项:
答案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.cfg
到custom.cfg
以防万一。