- 论坛徽章:
- 0
|
使用 GRUB 的好处
LiLo(Linux Loader)是 GNU/Linux 的标准启动工具,经常在系统安装过程中就装好了。可不要光从字面上了解 LiLo 的作用,LiLo 也可以启动安装在同一或不同硬盘上的其他操作系统。
从 MDL 7.1 起,您也可以使用 GNU GRUB 了,即 GRand Unified Bootloader 。GRUB 和 LiLo 相比,有几个长处:
* 开机时,可以修改启动参数;
* 小型的 boot shell ;
* 支持隐藏标志(hidden flag),如果您有多个 MS-DOS/Windows 主分区,这一点就很有帮助;
* 允许快速(on the fly)修改配置文件(/boot/grub/menu.lst),编辑后不需要额外的命令;
* 可以通过网络启动无盘客户机。
GNU GRUB 的唯一小毛病就是有自己的一套语法,不过您在短时间内就可以掌握。我估计很多人都更喜欢 LiLo 华丽的启动界面 。如果您更注重功能,而不是形式,那就请阅读下去。
* section index * top
* 安装 GRUB
首先用 rpm -q grub 看看 GRUB 是否已安装。如果尚未安装,可以用 urpmi grub 完成安装。
然后,以‘root’身份运行命令:
grub-install /dev/[device]
‘device’是要用的启动扇区的设备名。大多数情况下是‘hda’,也就是 MBR ( the master boot record of the first IDE hard drive)。
接下来,您将看到的信息类似于:
[some text]
(fd0) /dev/fd0
(hd0) /dev/hda
位于第一个控制器(controller)的软驱,和第一个 IDE 主通道(master channel)上的硬盘。当然,在您的机器下显示可能有所不同。第一部分标识的是 GRUB 的语法,其次是该设备在 Linux 下的表示。GRUB 不区分 SCSI 和 IDE 硬盘,只要将其启动顺序放入帐号就可以了。用一块 SCSI 硬盘的系统的条目如下:
(fd0) /dev/fd0
(hd0) /dev/sda
如果系统有 SCSI 和 IDE 硬盘,且 BIOS 设置为从 SCSI 硬盘启动的话,就是:
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/hda
如果您您改变了硬盘的启动顺序,那就得修改‘/boot/grub/devices.map’。
万一‘grub-install’脚本出错,您可以用 GRUB shell 来安装启动扇区:
grub
[some text]
grub>; root (hdw,x)
[some text]
grub>; setup (hdy,z)
其中,‘w’、‘x’、‘y’和‘z’都是数字。‘w’标识硬盘,‘x’是目录‘/boot/grub’所在的分区,‘y’是启动扇区所在的硬盘,如果您不想将启动扇区安装到‘y’的 MBR ,就需要‘z’。请注意:GRUB 以‘0’开始计数。
例子一、将 GRUB 安装到第一块 IDE 硬盘的 MBR 上。‘/boot’目录在相同硬盘上:‘/dev/hda3’。
grub>; root (hd0,2)
grub>; setup (hd0)
例子二、将 GRUB 安装到根分区的启动扇区上。根分区在后于 IDE 硬盘启动的 SCSI 硬盘上:‘/dev/sda1’。
grub>; root (hd1,0)
grub>; setup (hd1,0)
基本上,就是这样。重启后,您将看到 grub>; 提示符。键入 help ,将列出所有的可用命令(GRUB 提供了一个全功能的 boot shell ,有命令行历史记录和自动补齐),而 help [command] 将显示指定命令的帮助说明。
如何启动 Linux 呢?显然,您得告诉 GRUB 根分区和内核在哪里。然后您得添加一个参数,用来告诉 Linux 的 init哪里去找内核(情记住:GRUB 和 Linux 对分区的表示语法不同!)。假设根分区是 IDE 硬盘上的第一个主分区,用 kernel 命令就是:
kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
是不是记不清内核所在的分区?很简单,用 find /boot/vmlinuz 就可以了。现在键入 boot ,再按 ENTER ,您的系统就可以启动了。
第一次这样做,感觉不错,但有没有更好的办法呢?继续阅读下去吧……
* section index * top
* 配置 GRUB
GNU GRUB 的配置文件是‘/boot/grub/menu.lst’。您可以通过编辑器,或用‘DrakConf’(Mandrake 控制中心)中的‘DrakBoot’工具,对这个文件进行修改。和‘LiLo’相比,完成编辑后,您不需要再运行额外的命令。想看一下所有可用的 GNU GRUB 命令,只要以‘root’身份在虚拟终端下运行:
grub
这样就开启了 GNU GRUB shell 。然后键入 help 列出所有命令,或用 help [command] 得到指定命令的帮助说明。需要更详细的文档,请看 info grub 。
和‘lilo.conf’一样,‘menu.lst’也有常规部分和包括多个要启动的操作系统/发行套件/内核的条目。典型的常规部分如:
timeout 5
color black/cyan yellow/cyan
i18n (hd0,0)/boot/grub/messages
keytable (hd0,0)/boot/us.klt
default 0
这告诉 GRUB :
* 启动默认系统前等待五秒钟,
* 启动菜单用什么颜色,
* 用哪个启动信息文件,
* 用哪个主要表格(由 keytab-lilo.pl [key map] >; [file] 生成),
* 默认启动哪个系统。
(hd0,0) 标识了第一块硬盘上的第一个分区。不管是 EDE 还是 SCSI ,第一块硬盘就是首先启动的那块。GNU GRUB 从 0 开始,按照启动顺序排列硬盘。因此,如果您系统中有一个 IDE 和一个 SCSI 硬盘,第一块就是设置成首先启动的那块,另一块就排在其次。如果您有多个 IDE 或 SCSI 硬盘,the numbering depends on the place of the place of the disk of the controller: either the IDE channel and port (first disk on first port, second disk on first port etc), or the SCSI ID.
分区号也从 0 开始。请注意:不管硬盘上有几个主分区,第一个逻辑分区总是‘4’。
一个 Linux 的条目就象:
title Linux
kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
title 就是在启动菜单中这个条目显示的名称。kernel (hd0,0)/boot/vmlinuz-[...] 告诉 GNU GRUB 从第一块硬盘第一个分区下的‘/boot’目录载入名为‘vmlinuz-[...]’的内核。root=/dev/hda1 是用于 init 的一个启动参数,这里表示的意思一样,但就是用了 init 能懂的特殊语法。您还可以添加任何需要的启动参数。
* section index * top
* 通过 GRUB 启动其他内核/发行套件/操作系统
其他内核
新建一个和上面类似的条目(当然要用不同的‘title’)。
其他 Linux 套件
将 LiLo 安装到该套件根分区的启动扇区(不是 MBR)。在您的 MDL 系统中,对‘/boot/grub/menu.lst’添加一个类似于下面讨论到的条目。
其他操作系统
操作系统如:DOS、BeOS、Win9x/NT 或 OS/2 的条目看起来有些不同:
title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1
rootnoverify (hd0,0) 告诉 GNU GRUB 您用的 Widnows C 盘在哪里,但同时不要试图将其挂载(‘noverify’,可选项)。 makeactive 为分区表设置‘active’标志,启动一些老版本的 DOS/Windows 时需要。chainloader +1 告诉 GNU GRUB 不要试着自己载入 Windows (自身无法完成),而应该将启动进程交给 C 盘的首扇区,那里含有原始的 DOS/Windows 启动程序。
放到软盘上
(Contributed by Marc Indekeu)
下面将 GRUB 安装到软盘上,以备不时之需。我的 MDK 8.1 已安装了 GRUB ,‘/mnt/floppy’是软驱的载入点。
1.
插入一张空白软盘,然后在软盘上新建一个‘boot’目录。
2.
将‘/boot/grub’目录中的内容复制到软盘:
cp -R /boot/grub/ /mnt/floppy/boot/
3.
以‘root’身份启动‘grub’配置 shell :
grub
4.
在该 shell 下,运行下面两个命令,以使软盘可启动:
root (fd0)
setup (fd0)
5. 输入 quit 以退出 GRUB shell 。
info grub 中有一些配置的例子,比如从 disk 而不是从主分区启动微软的系统。 |
|