GNU GRUB在MBR分区表的硬盘上
GNU GRUB在GPT分区表的硬盘上
`boot.img`严格占有446字节的大小，并被写入MBR（0扇区）。如果可行（出于向后兼容的原因第一个分区起始于63扇区而非1扇区，但这不是强制的），`core.img`被写入介于MBR和第一分区之间的空扇区之中。`/boot/grub`目录可以放在单独的分区中，也可以放在根分区中。
**GNU GRUB**（简称"GRUB"）是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现，它允许用户可以在计算机内同时拥有多个操作系统，并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核，也可用于向这些内核传递启动参数。

GNU GRUB的前身为**Grand Unified Bootloader**。它主要用于类Unix系统；同大多Linux发行版一样，GNU系统也采用GNU GRUB作为它的启动器。Solaris从10 1/06版开始在x86系统上也采用GNU GRUB作为启动器。

特性
--

GRUB可动态配置；它在启动时加载配置信息，并允许在启动时修改，如选择不同的内核和initrd。为此目的，GRUB提供了一个简单的类似Bash的命令行界面，它允许用户编写新的启动顺序。

GRUB非常轻便。它支持多种可执行格式；它除了可适用于支持多启动的操作系统外，还通过链式启动功能支持诸如Windows和OS/2之类的操作系统。GRUB支持大部分的Unix文件系统，也支持Windows适用的FAT和NTFS檔案系统，还支持LBA模式。GRUB允许用户查看它支持的文件系统里文件的内容。

GRUB具有多种用户界面。多数Linux发行版利用GRUB对图形界面的支持，提供了定制的带有背景图案的启动菜单，有时也支持滑鼠。GRUB可通過GFX支援更美觀的開機畫面和開機選單。通过对GRUB的文字界面的设定，可以通过串口实现远程终端启动。

GRUB可以从网络上下载操作系统镜像，因此可以支持无盘系统。GRUB支持在启动操作系统前解压它的镜像。

与其它启动器不同，GRUB可以通过GRUB提示符直接与用户进行交互。载入操作系统前，在GRUB文本模式屏幕下键入c键可以进入GRUB命令列。在没有作業系统或者有作業系统而没有"menu.lst"（或grub.cfg）配置文件的系统上，同样可以进入GRUB提示符。通过类似bash的命令，GRUB提示符允许用户手工启动任何操作系统。把合适的命令记录在"menu.lst"（或grub.cfg）文件里，可以自动启动一个操作系统。

GRUB拥有丰富的终端命令，在命令列下使用这些命令，用户可以查看硬碟分区的细节，修改分区设置，临时重新映射磁盘顺序，从任何用户定义的配置文件启动，以及查看GRUB所支持的文件系统上的其它启动器的配置。因此，即便不知道一台电脑上安装了什么，也可以从外部设备启动一个操作系统。

GRUB采用滚动屏幕选择想要启动的操作系统。通过向"menu.lst"（或grub.cfg）文件中添加相关信息，GRUB可以控制150或者更多的启动选项，在启动时用方向键进行选择。

通过链式启动，一个启动器可以启动另一个启动器。GRUB通过2到3行的命令就可以从DOS、Windows、Linux、BSD和Solaris系统启动。

尽管GRUB为类Unix系统进行了编译和打包，但也有供DOS和Windows使用的变种GRUB4DOS等。GRUB也可以不附带任何操作系统而作为孤立系统安装。从CD上启动时运用GRUB需要1个文件，而从软盘、硬盘和USB设备上启动时需要2个文件。这些文件可以在任何支援GRUB的Linux CD上找到，用户可以很容易的找到它们。

新的GRUB2（GRUB第二版）為GRUB的重寫版本，它是GRUB的大革新。GRUB2對Linux系統做了更多的優化，支援更多的功能，如動態的載入模組（而在之前的GRUB中，新增或刪除模組要重新編譯GRUB）等。GRUB2的版本號為0.98或更高；舊的GRUB的版本號則為0.97或更低，也被稱為"GRUB Legacy"或"GRUB1"等。GRUB2的配置、命令等較GRUB Legacy有一定的不同。

启动过程
----

计算机启动后，BIOS将寻找第一个可启动的设备（通常为硬盘），而后从MBR中载入启动程序，然后把控制交给这段代码。MBR位于硬盘的前512字节内。

### GRUB第一版本

GRUB的步骤1包含在MBR中。由于受MBR的大小限制，步骤一所做的几乎只是装载GRUB的下一步骤（存放在硬盘的其它位置）。步骤1既可以直接装载步骤2，也可以装载步骤1.5：GRUB的步骤1.5包含在MBR后面的30千字节中。步骤1.5载入步骤2。

当步骤2启动后，它将呈现一个界面来让用户选择启动的操作系统。这步通常采用的是图形菜单的形式，如果图形方式不可用或者用户需要更高级的控制，可以使用GRUB的命令行提示，通过它，用户可以手工指定启动参数。GRUB还可以设置超时后自动从某一个内核启动。

### GRUB第二版本

与GRUB第一版相似的是,*boot.img*像步骤1一样在MBR或在启动分区中，但是，它可以从任何LBA48地址的一个扇区中读取，它（*boot.img*）将读取*core.img*（产生于*diskboot.img*）的第一个扇区以用来后面读取*core.img*的剩余部分。*core.img*正常情况下跟步骤1.5储存在同一地方并且有着同样的问题，可是，当他被移动到一个文件系统或一个纯粹的分区时会比在步骤1.5移动或删除引起更少的麻烦。一旦完成读取，*core.img*会读取默认的配置文件和其他需要的模块。

### 当GRUB启动后

一旦选择了启动选项，GRUB把选择的内核载入内存并把控制交给内核。在此步骤中，对于Windows之类不支持多启动标准的操作系统，GRUB也可以通过链式启动把控制传给其它启动器。在这种情况下，其它操作系统的启动程序被GRUB保存了下来；与内核不同，其它操作系统如同直接自MBR启动。类似Windows的启动菜单，也许是另一个启动管理器，它允许在多个不支持多启动的操作系统中做进一步的选择。（在已有Windows的系统上面，或者包含多个Windows版本的系统上安装现代的Linux而不修改原操作系统，即属于这类情况。）

安装
--

GRUB的一个重要的特性是安装它不需依附一个操作系统；但是，这种安装需要一个Linux/Windows副本。由于单独工作，GRUB实质上是一个微型系统，通过链式启动的方式，它可以启动所有安装的主流操作系统。 

与LILO不同，修改GRUB的配置文件后，不必把GRUB重新安装到MBR或者某个分区中。

在Linux中，"grub-install"命令是用来把GRUB的步骤1安装到MBR或者分区中的。GRUB的配置文件、步骤2以及其它文件必须安装到某个可用的分区中。如果这些文件或者分区不可用，步骤1将把用户留在命令行界面。

GRUB Legacy的設定檔為`/boot/grub/menu.lst`或`/boot/grub/grub.conf`。GRUB 2的設定檔為`/boot/grub/grub.conf`。

除了硬盘外，GRUB也可安装到光盘、软盘和闪存盘等移动介质中，这样就可以啟動一台无法从硬盘启动的系统。

参见
--

* 自由软件自由软件主题

* Windows Boot Manager
* NTLDR
* LILO
* UEFI
* BIOS

参考资料
----

* Brady, Pádraig.. pixelbeat.org.  [2006-11-22]. （原始内容存档于2006-11-27）.
* Okuji, Yoshinori.. gnu.org.  [2007-11-29]. （原始内容存档于2007-11-26）.

外部链接
----

|  |  |
| --- | --- |
|  | 维基共享资源中相关的多媒体资源：**GNU GRUB** |

* GNU GRUB首頁（页面存档备份，存于）（英文）
* GNU GRUB官方手册（页面存档备份，存于）（英文）
* GRUB 2中文指南（页面存档备份，存于）（繁體中文）

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
GNU计划 |
| --- |
|  |
| 历史 | 
* GNU宣言
* 自由软件基金会
	+ 欧洲（英语：）
	+ 印度（英语：）
	+ 拉丁美洲（英语：）
* 自由开源软件历史

 | GNU's not UNIX |
|  |
|  | 
* GNU通用
* GNU
* GNU Affero通用
* GNU
* GPL

 |
|  |
| 软件 | 
* GNU
	+ 变种
* Hurd
* Linux-libre
* glibc
* Bash
* Coreutils
* findutils
* 构建系统
* GCC
* binutils
* GDB
* GRUB
* GNOME
* GNUstep
* GIMP
* Jami
* GNU Emacs
* GNU TeXmacs
* GNU Octave
* GNU R
* GSL
* GMP
* GNU Electric（英语：）
* GNU Archimedes（英语：）
* GNUnet（英语：）
* GNU Privacy Guard
* Gnuzilla
	+ IceCat
* GNU Health
* GNUmed
* GNU LilyPond
* GNU Go
* GNU Chess
* Gnash
* Guix
* Guix系統發行版（英语：）
* *更多...*

 |
|  |
| 公众发言人 | 
* Alexandre Oliva
* Benjamin Mako Hill
* Bradley M. Kuhn
* 伊本·莫格林
* Georg C. F. Greve
* Loïc Dachary
* Ricardo Galli
* 理查德·斯托曼
* Robert J. Chassell
* John Sullivan

 |
|  |
| 其它议题 | 
* GNU/Linux命名爭議
* 《操作系统革命》
* 自由软件基金会反Windows运动
* 设计式缺陷

 |

 |


1. ↑  "GRUB 2.06 released"; 作者姓名字符串: Daniel Kiper; 作品或名稱的語言: 英語; 出版日期: 2021年6月8日; 检索日期: 2021年8月2日.
2. ↑ . 2023年7月10日.