在同一驱动器上安装两个发行版时该怎么办

我不认为这是第一次被问到这个问题。 但是,我没有找到正确的搜索字符串来找到明确的答案。

我希望在同一个SSD上安装Ubuntu Unity和Ubuntu MATE。 我需要Ubuntu Unity作为参考系统。 (因为我还在学习)。 而且,MATE仅仅是因为我对该桌面环境有很强的亲和力。

我在另一个系统上尝试了这个,并且(可能没有人会惊讶,但是我自己)将GRUB删除为最初安装的发行版…幸运的是,启动修复使两者都恢复正常工作。 但是,这不是正确的方法……可以吗?

我已经在80GB分区(sda2)上安装了UM。 安装期间选择的安装点为“/”。

SSD使用GPT分区表进行分区,如下所示;

sda1 EFI Boot 512MB sda2 80GB ext4 (Ubuntu MATE) sda3 80GB ext4 (Empty) sda4 328GB ext4 (shared data) sda5 2GB swap 

现在,我希望在另一个80GB分区sda3上安装Ubuntu 16.04 Unity的文件系统,而不会破坏UM的GRUB2启动文件。 我的假设是,它会“看到”另一个操作系统,只是将其“添加”给GRUB。 但是,事先并非如此。

我无法选择“安装旁边”选项,因为它要我更改我的分区,否则。 我不想这样做……所以,我需要通过“别的”选项来做到这一点。

问题是:

选择文件系统的位置(sda3)后。 在Ubuntu 16.04 Unity安装过程中,我应该在哪里告诉它放置引导加载程序(我假设为sda1 EFI)和“挂载点”? “/”显然已经被采用了。

我真的只是想确保我这样做,以确保GRUB2正确识别这两个版本。

那不要安装Grub。 默认位置确实是EFI分区,但是已经从Ubuntu伙伴那里安装了Grub。 这个引导加载程序将被覆盖。 所以不要安装boot-loader,但是在安装Ubuntu后你必须启动到Ubuntu配合并运行sudo update-grub

在安装程序的其他部分中不再存在不安装引导加载程序的选项。 要在没有boot-loader的情况下安装Ubuntu你的live-USB,请选择Try Ubuntu ,打开终端并运行ubiquity -bubiquity --no-bootloader

引导模式(UEFI / legacy)有所不同

在legacy-mode中,我们将boot-loader安装到MBR。 但安装程序将为我们提供将引导加载程序安装到PBR(分区引导记录)的选项。 这样,在安装第二个Linux发行版时,MBR中的引导加载程序不会被覆盖。 我们可以在PBR中使用boot-loader来创建链式负载,但这不是必需的。 因此,第一个安装的发行版在MBR中安装了引导加载程序,进一步安装的发行版将引导加载程序安装到PBR或者不安装引导加载程序是两个干净的解决方案。

在UEFI模式下,引导加载程序未安装在MBR中,它安装在ESP(系统EFI分区)中。 据我所知,安装程序默认为第一个驱动器的ESP(通常是sda ),即使我们选择了不同的位置。 因此,所有发行版都会将引导加载程序安装到同一位置,覆盖之前安装的现有引导加载程序。 据我所知,唯一的出路是使用上面提到的命令在没有boot-loader的情况下安装第二个发行版。

只有一个Linux发行版需要安装引导加载程序,只有安装了引导加载程序的系统才能控制引导加载程序。 这个单一的引导加载程序能够引导所有其他Linux发行版。 如果我们安装了多个Linux发行版并且所有发行版加载程序都安装到同一位置会发生什么? 我认为,当升级附带新版本的Grub时,系统升级可能会导致一些问题,最近MBR或ESP中的引导加载程序可能会被覆盖,并且引导加载程序指向执行升级的系统。 这不会使计算机无法启动,但启动菜单的布局和启动菜单条目的顺序会发生变化。

还有一个提示:无论何时删除包含安装了引导加载程序的系统的分区,都会遇到问题。 该分区包含配置文件/boot/grub/grub.cfg 。 boot-loader需要读取此文件,如果删除保存此文件的分区,下次启动时将受到Grub-rescue-mode的欢迎。