如何为多个 Linux 发行版创建一个通用的 /boot 分区?

如何为多个 Linux 发行版创建一个通用的 /boot 分区?

我正在尝试多重引导 Windows 以及两个 Linux 发行版,即 Parrot OS Electro Ara 和 Ubuntu 20.04,grub 和引导加载程序最初是由 Parrot OS 安装的。所以为了不干扰我安装了没有引导加载程序的 Ubuntu,因为ubiquity -b我只想使用 Parrot 本身的 grub。

但我用的是同样的/启动分区 ( /dev/nvme0n1p9) 作为两个操作系统的安装点。这是我从 Parrot OS 的挂载点lsblk

    NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1                                       259:0    0 953.9G  0 disk  
├─nvme0n1p1                                   259:1    0   260M  0 part  /boot/efi
├─(windows partitions were hided)
├─nvme0n1p7                                   259:7    0   200M  0 part  
├─nvme0n1p8                                   259:8    0     4G  0 part  [SWAP]
├─nvme0n1p9                                   259:9    0     1G  0 part  /boot
├─nvme0n1p10                                  259:10   0    20G  0 part  /
├─nvme0n1p11                                  259:11   0    40G  0 part  /opt
├─nvme0n1p12                                  259:12   0    40G  0 part  
│ └─luks-...(UUID Hided)                      253:0    0    40G  0 crypt /home
└─nvme0n1p15                                  259:15   0  47.4G  0 part  

注意:我共享了相同的/opt并且/boot(默认情况下共享efi分区)

我收到一条消息,例如在 /dev/nvme0n1p15 上检测到 ubuntu,但是当我看到源代码或从 grub 屏幕启动时,它直接将我指向 parrot 操作系统。问题是 parrot 操作系统是由 ubuntu 的 initramfs 和 vmlinuz 文件启动的,并且毫无问题地启动到了 parrot 中。同样,当我从 ubuntu 尝试时,update-grub我说的是 parrot OS,但它仍然使用 Parrot OS 的内核(5.16 和 5.18)启动到 ubuntu,因此我因 initramfs 出现错误,但当我从其内核 5.15 启动时没有错误。

这是我的 grub-customizer 页面,展示了它的外观。 (自定义的是我让它们临时启动到 Ubuntu 映像)。

在此输入图像描述

/boot在这里,我还附加了安装前、安装 ubuntu 后以及运行 update-grub 后文件夹中存在的文件。

安装 Ubuntu 之前(仅限 Parrot 和 Windows)

config-5.16.0-12parrot1-amd64
config-5.18.0-1parrot1-amd64
efi
grub
initrd.img-5.16.0-12parrot1-amd64
initrd.img-5.18.0-1parrot1-amd64
System.map-5.16.0-12parrot1-amd64
System.map-5.18.0-1parrot1-amd64
vmlinuz-5.16.0-12parrot1-amd64
vmlinuz-5.18.0-1parrot1-amd64

安装 ubuntu 并通过 chroot 运行更新 grub 后

total 256M
drwxr-xr-x 2 root root 4.0K செப். 20 16:36 efi
drwxr-xr-x 5 root root 4.0K செப். 20 16:36 grub
lrwxrwxrwx 1 root root   28 செப். 20 16:36 initrd.img -> initrd.img-5.15.0-46-generic
-rw-r--r-- 1 root root 117M செப். 20 16:36 initrd.img-5.15.0-46-generic
-rwxr-xr-x 1 root root  94M செப். 20 16:36 initrd.img-5.16.0-12parrot1-amd64
-rw-r--r-- 1 root root  14M செப். 20 16:36 initrd.img-5.18.0-1parrot1-amd64
lrwxrwxrwx 1 root root   32 செப். 20 16:36 initrd.img.old -> initrd.img-5.18.0-1parrot1-amd64
-rw-r--r-- 1 root root 179K செப். 20 16:36 memtest86+.bin
-rw-r--r-- 1 root root 181K செப். 20 16:36 memtest86+.elf
-rw-r--r-- 1 root root 181K செப். 20 16:36 memtest86+_multiboot.bin
-rw------- 1 root root 6.0M செப். 20 16:36 System.map-5.15.0-46-generic
-rwxr-xr-x 1 root root   83 செப். 20 16:36 System.map-5.16.0-12parrot1-amd64
-rwxr-xr-x 1 root root   83 செப். 20 16:36 System.map-5.18.0-1parrot1-amd64
lrwxrwxrwx 1 root root   25 செப். 20 16:36 vmlinuz -> vmlinuz-5.15.0-46-generic
-rw-r--r-- 1 root root  11M செப். 20 16:36 vmlinuz-5.15.0-46-generic
-rwxr-xr-x 1 root root 7.1M செப். 20 16:36 vmlinuz-5.16.0-12parrot1-amd64
-rwxr-xr-x 1 root root 7.2M செப். 20 16:36 vmlinuz-5.18.0-1parrot1-amd64

最后从 Parrot OS 运行 update-grub 并删除符号链接

config-5.16.0-12parrot1-amd64
config-5.18.0-1parrot1-amd64
efi
grub
initrd.img-5.15.0-46-generic
initrd.img-5.16.0-12parrot1-amd64
initrd.img-5.18.0-1parrot1-amd64
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
System.map-5.15.0-46-generic
System.map-5.16.0-12parrot1-amd64
System.map-5.18.0-1parrot1-amd64
vmlinuz-5.15.0-46-generic
vmlinuz-5.16.0-12parrot1-amd64
vmlinuz-5.18.0-1parrot1-amd64

我想要的解决方案是提供 grub 引导选项,例如

  • 鹦鹉
  • Parrot 的高级选项
  • 乌班图
  • Ubuntu 的高级选项
  • 视窗

先谢谢您的帮助。

相关内容