我最近尝试在双磁盘设备上安装多启动系统,但失败了,尽管我已在磁盘 1 上成功安装了 Ubuntu、Linux Mint 和 Peppermint,之后更新了 grub。当我尝试在磁盘 2 上安装 CentOS、openSUSE 和 Fedora 时,我遇到了很多问题。
- 可用空间不足。虽然我已使用 GParted 格式化两个磁盘,但对于非 LVM 安装,而且磁盘 2 上没有操作系统。
- 在安装程序中看不到其他发行版。
- 挂载点不被接受。
- 需要 /boot/efi 分区并且要求 GPT 分区表。
- 尝试通过安装程序修改分区,导致安装程序崩溃。
- 尝试了 LMDE 2,(Debian 对我的 CPU 有问题?)虽然它看到了所有已安装的发行版,(包括重新安装的 CentOS 6.6 来检查,如果是我的话),但它想要一个 /boot/efi 分区。
行动。
由于我遇到问题的是较新的 RPM 发行版,因此我决定先安装 CentoS 7,尽管 CentOS 6.6 之前在我的旧设置 BIOS 设置和 sudo update-grub 上可以顺利共存。尤其是 openSUSE,有没有什么提示可以提高我全新安装的机会。我想我已经解决了 CentOS 和 Fedora 的怪癖。
- 卸载所有内容。进行全新安装。
- 使用 GPT 重新格式化两个磁盘,为每个磁盘创建两个 fat32 /boot/efi 标记分区。这是过度还是必要?
- 然后创建 /、/home 分区,其中包含 ext4 和 linux-swap 分区,以供我的新手动非 LVM 安装使用。
- 检查 BIOS 并将设置从 Legacy 更改为 UEFI。
- 安装 CentOS 7,克服空间不足和挂载点怪癖的缺点,即 /boot/efi,然后是 /home,接着是 / 和 swap。
- 运行命令 [ -d /sys/firmware/efi ] && echo "以 UEFI 模式安装" || echo "以 Legacy 模式安装" = 以 UEFI 模式安装。
由于 Ubuntu 和基于 Ubuntu 的发行版主要使用 Debian 作为基础,目前尚未实施 systemd,因此很有可能它们会在不久的将来效仿,而我现在需要适应。
链式装载机。
我对此没有太多经验,上次尝试时,sudo update-grub 将其删除。因此,后来我浏览了网页,找到了一些切实可行的起点,并找到了 CentOS 7 的正确术语(新术语),grub2-mkconfig -o /boot/grub2/grub.cfg 类似于 sudo update-grub。然后使用“etc/grub.d/40_custom”打开 gedit 文件(或者我认为会发生这种情况),以编辑 #40 菜单项。
终端。
在终端上,我应该在 #... 后输入我的 chainloader 吗?我不确定下面的脚本,并希望有经验的人对此发表看法。
[root@localhost tony]# /etc/grub.d/40_custom
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
[root@localhost tony]#
#DISK 1
#
# for CentOS-7
menuentry "My custom boot entry" {
set root= '(hd0,2)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
#
# for openSUSE
"openSUSE-13.2" {
set root='(hd0,5)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
#
# for Fedora
"Fedora-22" {
set root='(hd0,8)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
#
#DISK 2
#
# for Ubuntu
"Ubuntu-14.04.2" {
set root='(hd1,2)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
#
# for Linux Mint
"Linuxmint-17.1" {
set root='(hd1,5)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
#
# for Peppermint
"Peppermint-Five" {
set root='(hd1,8)'
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
}
概括。
从 Legacy 模式更改为 UEFI 模式,使用 GPT 分区表,为两个磁盘创建两个 /boot/efi 分区,这是必要的吗?Chainloader,我自己也不确定,需要指导,希望能够轻松安装与其他发行版和谐共存的其他发行版。
提前感谢您对此主题所提供的急需的帮助。
答案1
您的某些问题(例如安装程序不接受您指定的挂载点)显然是特定于发行版的,应该作为与它们相关的单独问题进行解决,可能在特定于发行版的论坛上进行。
对于如何为复杂的多操作系统设置配置启动管理器的总体问题,我首先建议您不要创建如此复杂的设置。如果可能的话,您应该单启动并使用虚拟化(VMWare、VirtualBox、KVM/QEMU 等)来处理多个操作系统。这种方法很多比在一台计算机上管理六个不同的操作系统麻烦少。
如果你必须多重启动如此多的操作系统,在我看来,GRUB 是一个糟糕的解决方案。它需要在安装脚本中使用复杂的操作系统检测逻辑。任何给定发行版的安装脚本都可以很好地处理该发行版,但对于其他发行版则不太适用。相反,您应该考虑使用另一个 EFI 启动管理器。有几种可用的,详情请参见这一页我自己做的。大多数需要手动配置,但这种配置比让 GRUB 工作所需的调整要简单得多。我自己的重新索引对您来说,设置起来可能是最简单的,因为它会在每次启动时扫描引导加载程序和 Linux 内核。您可能需要一个/boot/refind_linux.conf
文件来进行大多数安装,并且可能需要仔细注意存储内核的文件系统,并确保为它们安装 EFI 文件系统驱动程序,但 rEFInd 可能会启动您的大多数或所有发行版,除此之外没有什么大惊小怪的,而且每当您在任何给定的发行版中更改内核时,都无需调整配置。