引导加载程序安装在哪里?

引导加载程序(如Grub)通常安装在哪里?
当我在我的磁盘上不同分区上安装12.04和Windows时,遇到了一个“引导加载程序安装设备”的选择。如果我理解正确的话,这是为了指定安装引导加载程序Grub的位置。
我在互联网上找到的信息是,它是指定包含操作系统分区的磁盘,而不是磁盘上的任何分区。例如,磁盘sda,而不是分区sda1、sda2。
问题:
我想知道引导加载程序实际上安装在磁盘的哪个位置?
它是安装在现有的操作系统和个人数据分区中的某个分区上,还是有自己的分区,可以从Ubuntu的系统监视器中看到?
谢谢和问候!

1引导加载程序安装在硬盘和Ubuntu的根文件夹上(据我所知)。 - Ravi
(1)它是否有自己的分区在Ubuntu系统监视器中可见,或者在某个现有的分区上?(2)当你说“在Ubuntu的根文件夹上”,你是指安装Ubuntu的同一分区,即“/”的分区吗?但是当我选择“/”作为“引导加载程序安装设备”时,在启动过程中加载操作系统选项时出现错误。我只能选择整个磁盘而不是其任何分区作为“引导加载程序安装设备”。 - Tim
请编辑您的标题。我认为它与您的问题不符合。 - Ashu
如果是UEFI系统,grub的一部分位于ESP(efi系统分区),该分区与Windows引导加载程序共享。而且UEFI还有NVRAM来记住条目。http://askubuntu.com/questions/63610/how-do-i-remove-ubuntu-in-the-bios-boot-menu-uefi 这个链接是关于从BIOS引导菜单中删除Ubuntu的问题,而同样的过程也适用于删除Windows:http://askubuntu.com/questions/794725/can-i-remove-windows-boot-manager-from-dedicated-ubuntu-computer/795341#795341 - oldfred
1如果您有新的或后续问题,请打开一个新问题。如果您将与现有问题几乎无关的问题附加在一起,会扩大问题的范围,使其更难回答。此外,这可能会使现有答案失效。我已经恢复了添加后续问题的编辑,谢谢。 - David Foerster
它必须安装在根分区中。如果sda1是您的根分区,请选择sda1作为您的选择。 - yolo
6个回答

引导加载程序需要安装在BIOS搜索可启动项的位置。为了简化事务,您通常会有一个计算机从其中启动磁盘驱动器,在该磁盘上安装GNU / Linux系统,引导加载程序也到达那里。
你真正需要的引导加载程序只有两点:
1. BIOS能够找到它 2. 它能够找到并启动您的操作系统(使用Linux时,您只需使引导加载程序以某种方式访问内核即可,如果您正在使用一个,则还需要initrd映像文件)。
只要您涵盖了这两个点,您可以将其安装在更方便且BIOS会寻找它的地方。
BIOS通常会在硬盘驱动器的主引导记录中查找引导加载程序,这是驱动器开头的一个小区域,您可以将一些代码放置在那里运行。您还可以在分区开头安装引导加载程序。
引导加载程序通常足够小,适合于这些小区域,即使它们不适合,它们也必须将某些内容放在那里,以便BIOS启动引导加载程序。

lilo 是一个简单的引导程序,它安装在那些位置上。而 grub 则稍微大一点,所以你需要在那些位置上安装一些代码,然后从磁盘分区加载更多的代码(其中 grub 被称为"安装"的地方,它的配置文件和二进制代码位于这里,通常设置为系统的 /boot 分区,也是内核和 initrd 位于的方便之处)。

在这种情况下,如果提示你输入磁盘,这意味着它在询问要将 grub 安装到哪个主引导记录中,也就是你将要从中启动计算机的磁盘。grub 的这部分只安装在磁盘的主引导记录上。其他部分可能会被安装到与正在安装的 Ubuntu 系统的 //boot/ 分区相同的分区上(这部分可以从 Ubuntu 访问,查找目录 /boot/grub//grub/)。


2谢谢!那个小区域,即磁盘的MBR,是一个分区本身还是其他分区中的一部分?它会在Ubuntu系统监视器中显示吗? - Tim
3不,MBR不是一个分区。实际上,它是存储分区表本身以及(可选的)引导代码的地方。它不会出现在系统监视器中,因为它不是一个分区,也没有文件系统(至少如果“系统监视器”是指这个:http://www.dedoimedo.com/images/computers/wubi-ubuntu-system-monitor.jpg -- 挂载文件系统的表)。它也不会显示在显示分区表的工具中。(顺便说一下,它非常小,只有512字节。) - njsg
2BIOS也安装在磁盘的MBR中吗?那它在哪里呢? - Tim
4不,BIOS位于主板上的一个小型可擦写内存芯片中。它处理低级硬件事务,并且在计算机启动过程的早期阶段处理一些细节(例如启用/禁用/准备某些设备、寻找引导设备、管理网络引导以及POST)。你可能会对维基百科上关于引导过程的文章感兴趣。 - njsg

Grub2是Ubuntu的标准引导加载程序。我们总是喜欢使用高度可配置的应用程序,而Grub2就是其中之一。无论这是否是个好主意,Grub2都会安装到您指定的位置。
主引导记录
通常情况下,您将选择引导计算机的驱动器的主引导记录(MBR)。这很可能是您的第一个(或唯一的)硬盘/sda。这也是安装Grub2时的默认选项。
其他驱动器
当然,这个引导设备也可以是另一个硬盘、固态硬盘甚至是外部设备。在这种情况下,您需要告诉Grub2在哪里安装它。
分区
需要将Grub安装到分区的情况很少见,但仍然有可能,例如,如果您使用另一个引导加载程序并从分区引导记录链式加载Grub。
其他引导加载程序
其他引导加载程序也位于MBR中。Grub2将覆盖这些引导加载程序,因此您将无法再使用它们进行引导。Grub2将承担从启动菜单中选择的操作系统的引导角色。
Grub应用程序和设置
由于其大小,Grub应用程序和设置不适合主引导记录。因此,它们将安装在其他位置(您可以配置此项)。通常情况下,默认情况下,Grub2会在您安装Ubuntu的根分区上查找其文件,但也可以是硬盘上的任何其他分区。
引导分区
有些人认为为此设置一个单独的专用引导分区是个好主意。但只有在特殊情况下才需要,例如如果您安装了需要GUID分区表(GPT)进行引导的UEFI BIOS。

这正是你在安装Ubuntu时选择安装的位置。ubiquity 在安装过程中会提示你提供这个信息。请见下文:

ubiquity grub install

如果您正在运行一个(BIOS)遗留系统,那通常是您选择的驱动器的主引导记录或您选择安装它的分区的分区引导记录。如果您正在运行具有统一可扩展固件接口的系统,则grub引导加载程序将安装在ESP中。

来源:

https://help.ubuntu.com/community/Grub2/Installing

https://en.wikipedia.org/wiki/BIOS

https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

https://www.rodsbooks.com/efi-bootloaders/installation.html#accessing

经验

使用这个视图,我今天成功地在Precision M4600上安装了系统,选择主要的/dev/sda作为引导加载器设备,并且有两个ext4格式的分区都挂载到/(根目录)。谢谢! - Tropicalrambler
1@Tropicalrambler 很高兴这对你有帮助,不过我们不应该将多个分区挂载到 /(根目录)。我认为你会发现 mount | grep sd 命令的输出很有启发性。 - Elder Geek

我花了一个小时试图找到Debian中GRUB安装的配置,因为它不存储在GRUB的配置文件中。
结果发现它由debconf处理: debconf-show grub-pc 然后查找"grub-pc/install_devices"。

我花了大约一个小时找到这个答案。由于某种原因,我的设置是sdb,每次更新grub都需要使用livecd重新安装grub。这些光盘很少见,所以我花了很长时间才明白发生了什么。希望确实是这样,并且希望在下一次更新之前不会忘记它。 - soger

运行命令lsblk /dev/sdalsblk /dev/sdb等等,
将显示一个标签/boot/boot/efi等,指示引导管理器使用的分区。