如何强制禁止Ubiquity安装grub?

我的硬盘分区:
  • esp --> sda1
  • archlinux --> sda2
  • swap --> sda3
  • sda4 --> 会是ubuntu的位置

我打算在sda4上安装ubuntu;目前我的启动过程由systemd-boot控制,它通过bootctl软件安装在archlinux上。这很好,我想保留它。

通过安装Ubuntu,它将尝试在sda或sdaX上安装grub。请看这个截图中的下拉菜单:

enter image description here

我想在sda4上安装Ubuntu,而不用处理grub。然后,我将通过在systemd-boot配置系统下创建一个新的条目文件,在archlinux中指向Ubuntu的vmlinuz文件和initrd文件。

我知道preseed的存在,它在Ubiquity上有引导加载程序的选项。 - blkpws
2不要以为有简单的方法可以避免 grub,但你可以尝试将其安装到 sda4,并使用 dd 进行覆盖。 - mikewhatever
现在这是一个有趣的问题... - You'reAGitForNotUsingGit
这在12.04版本是有效的,但我从未使用过。通过终端进入实时安装程序并启动。 - oldfred
@oldfred,似乎没有任何-b选项:http://manpages.ubuntu.com/manpages/xenial/man8/ubiquity.8.html - mini
4个回答

sudo ubiquity -b

刚刚通过直接引导sda上的ISO文件使用grub的loopmount安装了16.10版本。一旦进入安装程序,我进入终端并使用了上述命令。Something Else安装看起来很正常。在点击继续之前没有注意到,但我相当确定用于安装grub的组合框确实缺失了。而且在安装过程中通常会显示正在安装grub,但这次没有显示。
通常情况下,将安装到sdb或任何第二个安装都会覆盖我的/EFI/ubuntu文件夹以及我的主要安装引导。这次我能够直接启动回到我的主要安装。
运行sudo update-grub后,即使grub未安装,仍然可以找到新的安装。注意到/boot/grub中也没有grub.cfg文件。

sudo ubiquity -b --> https://i.stack.imgur.com/ZTYaB.png 你的意思是如果我在这个阶段继续,它将不会安装Grub,对吗? - mini
请注意,在安装 grub 时,您通常不需要选择安装位置的组合框。在屏幕的中间位置大约有一个分区屏幕,其中包含了一个组合框,用于选择引导加载程序的安装位置。请参考以下链接:http://askubuntu.com/questions/343268/how-to-use-manual-partitioning-during-installation 请注意,将 grub 安装到分区上只适用于 BIOS,而不适用于 UEFI。 - oldfred

我不知道有什么方法可以防止安装Grub。但是你可以避免让/dev/sda和其他/dev/sda驱动器的分区受到Grub的影响。

将第二个USB插入计算机。在安装过程中选择它作为引导设备。现在在你的/dev/sda4上安装Ubuntu。安装过程不会触及/dev/sda或任何其他分区的引导扇区,除了/dev/sda4


默认情况下,你不能强制不安装引导加载程序。

虽然@oldfred提到了ubiquity的-b选项,尽管没有文档记录,但这对大多数终端用户来说并不明显,可能会让他们感到害怕。尽管如此,类似的选项以前存在过。

曾经有一个选项

在过去,Ubuntu有一个高级选项,允许用户自定义引导加载程序的安装。在Ubuntu LTS版本之间,这个高级选项最后出现在Lucid Lynx(10.04)发布版中。从那时起,这个选项就被删除了,原因我没有跟进。

旧截图作为证据:

Step 8/8 of Ubiquity installer in Ubuntu Lucid

在同一分区上安装

在特定的步骤中,可以选择除主设备/dev/sda之外的设备来进行引导加载程序的安装。例如,Ubuntu将安装在/dev/sda4分区上,因此引导加载程序也应该安装在/dev/sda4上。

通过这样做,用户将会有以下效果:

  • 位于/dev/sda4的新引导加载程序将被隐藏,除非使用启动选项链式加载到该分区以显示它

  • 位于/dev/sda的现有引导加载程序将负责检测位于/dev/sda4的新安装操作系统,而无需依赖新的引导加载程序

  • 用户需要从第一个安装的操作系统更新位于/dev/sda的引导加载程序,以便检测其他分区上随后安装的系统

除非有任何不处理引导加载程序的重要原因,否则我认为在各自的分区上安装后续的引导加载程序没有任何副作用。

第一个引导加载程序管理所有

就个人而言,我在同一台机器上安装了多个发行版(主要是Ubuntu的各种风味和类似的衍生版本),其中第一个引导加载程序位于/dev/sda,其他引导加载程序位于各自的分区上。唯一的注意事项是,引导加载程序必须从第一个安装的操作系统进行更新。
除了这个注意事项之外,最省事的方法就是忘记新的引导加载程序,让现有的引导加载程序来管理检测。 简而言之:将新的引导加载程序安装在系统将被安装的同一分区上;无论如何,新的引导加载程序对用户来说都是隐藏的,除非链式加载到该分区。

相关:我曾经写过一篇这个旧答案,其中解释了双启动设置,并提到了os-prober和通过链式加载到分区的解决方法。


1这是个很棒的技巧,但据我所知,它只适用于BIOS系统,而不适用于UEFI系统。 - Peter Green

我知道在基于Ubuntu 16.04的Linux Mint 18.3 Cinnamon上,以下命令可以正常工作:
ubiquity --no-bootloader

这显然是选项-b的别名,在Linux Mint 18.3 Cinnamon上已知可用。

我还没有验证--no-bootloader标签在纯净的Ubuntu 16.04(和后续版本)上是否适用于ubiquity。也许运行Ubuntu 16.04(或任何版本)的人可以检查并在这里留下他们的版本号,并说明命令ubiquity --no-bootloader是否有效?如果有效,在使用GUI验证器进行身份验证后,Ubiquity将加载。如果不起作用,在使用GUI验证器进行身份验证后,您将被退回到终端,并打印一个错误消息,其中包含“ubiquity: error: no such option: [...]"。

Linux Mint 18.3 Cinnamon中ubiquity选项的截图:

来自Linux Mint 18.3 Cinnamon终端的ubiquity选项打印输出

另请参阅:

http://averagelinuxuser.com/install-linux-mint-without-a-bootloader/