Linux GRUB实现双系统引导之菜鸟教程

运维 系统运维
GRUB 是 Linux 中最主要的多系统引导程序,使用它可以为 Unix、Linux、Windows、OS/2 等操作系统制作多系统引导菜单,并对这些操作系统进行引导启动。本文简单介绍了什么是GRUB和如何编辑GRUB配置文件,从而解决Linux-Windows双系统引导的目的。

根据网友 Seqic 反映,在安装了 Linux 和 Windows 双系统之后,不知如何再启动 Windows (因为系统使用 Linux 的引导程序了)。通常,这是因为安装 Linux 时没有为 GRUB 做好相应的配置。

Seqic 使用的是 Fedora 12,不知是这个发行版默认不对 GRUB 进行配置,还是在单系统时不对 GRUB 进行配置,我在安装 Fedora 12 时也没有遇到 GRUB 配置界面。

什么是GRUB

在为系统配置 GRUB 之前,先了解一下 GRUB 比较好,以下是摘自“维基百科”的内容:

“GRUB 是 GNU GRUB 的简称,是来自 GNU 项目的一个多系统引导程序。它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

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

简单地讲,使用 GRUB 实现多系统引导,就是通过编辑 grub.conf 配置文件,使系统启动时会出现一个多操作系统选择菜单,选择 Linux 则启动 Linux,选择 Windows 就启动 Windows,其它系统也一样 :D

“grub.conf 配置文件的绝对路径是 /boot/grub/grub.conf,需要 root 权限才可以读取和编辑这个文件。”

GRUB配置文件

GRUB 是 Linux 中最主要的多系统引导程序,使用它可以为 Unix、Linux、Windows、OS/2 等操作系统制作多系统引导菜单,并对这些操作系统进行引导启动。

对于 GRUB 的表现和行为控制,主要通过编辑 grub.conf 配置文件得以实现,为了之后更好的自定义引导菜单,我们先通过以下简单的示例认识 grub.conf 配置文件中的各个选项,以及它们的作用。

  1. #boot=/dev/sda  
  2. default=0 
  3. timeout=0 
  4. splashimage=(hd0,0)/grub/splash.xpm.gz  
  5. hiddenmenu  
  6.  
  7. title Fedora (2.6.32.9-67.fc12.i686.PAE)  
  8.         root (hd0,0)  
  9.         kernel /vmlinuz-2.6.32.9-67.fc12.i686.PAE ro root=/  
  10.         initrd /initramfs-2.6.32.9-67.fc12.i686.PAE.img  
  11.  
  12. title Windows 7  
  13. ...  
  14.  

说明:

default - 默认引导的菜单条目。在本例中,默认引导***个条目 Fedora (2.6.32.9-67.fc12.i686.PAE)。如果将 default 的值改成 1, 则会默认引导 Windows 7。

timeout - 自动选择默认引导前菜单显示的时间。本例中,如果用户没有在 30 秒之内选择操作系统,则会默认引导***个条目 (即default 0)

splashimage - 指定 GRUB 引导菜单的界面风格。(hd0,0)/grub/splash.xpm.gz,是指在***块硬盘的***个分区(hd0,0) 中,使用 grub 目录下的 splash.xpm.gz 文件作为界面风格。一般来讲,无需更改这个配置 :D

hiddenmenu - 隐藏 GRUB 引导菜单。如果不想在启动时显示 GRUB 引导菜单,则删除此条目。

系统引导条目

title - 引导条目的名称。通常使用操作系统的名称做为标识,你可以自行更改这个名称,例如使用 "Fedora 12", "Fedora", 或者是 "MyLinux" 都可以。这个标题将显示在 GRUB 引导菜单中。

root - 操作系统内核和引导文件所在的磁盘分区。(hd0,0) 表示***块硬盘的***个分区,(hd0,2) 表示***块硬盘的第3个分区,依次类推。

kernel - 系统内核及 boot 命令用到的参数。

initrd - 系统引导程序

kernel 和 initrd 中指定的文件都是相对于 root 中所设置的硬盘分区,例如本例中的 (hd0,0) 是机器上的 /boot 分区,kernel 的位置实际上是 /boot/vmlinuz-2.6.32.9-67.fc12.i686.PAE

使用GRUB引导Windows

不像 Unix 和 Linux,Windows 属于不支持多启动的操作系统,简单的在 grub.conf 配置文件中使用 kernel 和 init 选项,无法实现对 Windows 的引导。要能够通过 GRUB 引导 Windows,需要使用 GRUB 的链式(chain-load)启动功能。

提醒:查看和编辑 /boot/grub/grub.conf 都需要 root 权限,并且在编辑 grub.conf 之前,***先为这个文件做一份备份。

对于配置文件的备份,通过使用 cp 命令即可完成

  1. ~]# cp /boot/grub/grub.conf /boot/grub/grub.conf.bak  
  2.  

一般情况

要使用 GRUB 的链式启动功能引导 Windows,一般情况下,只需要向 grub.conf 配置文件中添加以下内容即可。

  1. title Windows 7  
  2. rootnoverify hd(0,0)  
  3. makeactive  
  4. chainloader +1  

多硬盘的情况

如果你的机器上有两块以上的硬盘,并且 Windows 操作系统安装在第二块硬盘上,则还需要在配置中加入 map 命令,它们的作用是更改两块硬盘的映射关系

  1. title Windows 7  
  2. map (hd0) (hd1)  
  3. map (hd1) (hd0)  
  4. rootnoverify hd(0,0)  
  5. makeactive  
  6. chainloader +1  
  7.  

多主分区的情况

使用 GRUB 引导 Windows 可能出现的另一个问题,是同一块磁盘上安装了多个 Windows 操作系统,这样一来硬盘上就会有多个主分区。要让 GRUB 正确的引导某个 Windows 操作系统,你需要对 GRUB 隐藏不必要的主分区。假设在***个分区 hd(0,0) 上安装了 Windows XP,在第二个分区 hd(0,1) 上安装了 Windows 7,而你希望引导 Windows 7,则应该使用以下配置

  1. title Windows 7  
  2. unhide hd(0,1)  
  3. hide hd(0,0)  
  4. rootnoverify hd(0,1)  
  5. makeactive  
  6. chainloader +1  
  7.  

一般而言,大多数用户都属于***种情况,只需要简单的几行配置就能够实现 Windows 的引导了。

【编辑推荐】

  1. 重装windows修复Ubuntu Grub的技巧
  2. Grub安装,配置及使用汇总
  3. 硬盘安装Linux和从Grub命令行启动Linux
责任编辑:yangsai 来源: lugir.com
相关推荐

2010-06-13 10:44:57

Ubuntu Grub

2010-01-04 11:30:07

Ubuntu GRUB

2011-08-16 14:08:01

windowslinux

2018-10-22 09:00:00

Linux发行版双系统

2010-03-03 10:21:15

Ubuntu GRUB

2018-12-06 09:00:06

LinuxWindows双系统

2010-03-01 13:40:12

Linux引导安装

2009-02-18 16:31:08

修复XP Vista双系统引导文件

2010-06-13 11:41:53

Ubuntu Grub

2009-11-23 09:19:26

LINUX安全GRUB加密

2009-12-28 16:23:51

Fedora grub

2009-12-25 15:56:49

Linux系统grub

2010-01-12 13:19:29

Fedora安装

2014-08-11 16:12:46

Grub2LinuxISO

2011-01-26 11:23:30

Linux认证

2009-12-25 14:44:21

Windows 7系统崩溃系统引导

2010-06-13 09:27:18

Grub安装Ubunt

2010-06-13 10:11:46

Ubuntu Grub

2009-12-03 09:49:25

Linux系统引导程序

2012-11-09 16:51:06

Grub2ISO
点赞
收藏

51CTO技术栈公众号