◆把Grub安装到纯数据区涉及以下步骤

(A) 格式化数据分区为FAT16格式。最好的方法是启动一个Linux Live CD,打开一个终端,下达一个格式化分区为FAT16的命令。

命令:

mkdosfs –F16 /dev/hda3

作为选择,分区也可以用一个Dos软盘格式化,从Bootdisk.com下载,用Dos命令提示符命令

命令:

format c:/

,假定hda3之前的分区都是非Dos或隐藏的。

FAT16的使用是经过考虑的,因为在FAT16上Dos不能寻址超过2Gb,不能认出Sata,但是我们仍然能用在那里的Grub去引导电脑上的145个系统。

(B) 接下来的任务是拿到Grub安装需要的三个文件。它们叫stage1, stage1.5 和stage2,在同一个目录,在任何一张支持 Grub的Linux Live CD里都找得到。所以只要启动一张 Live CD,用命令叫Linux报告它们的位置

命令:

find / -name stage1

你会发现这些文件基本上在这些位置

Red Hat, Fedora C2 to C6
/usr/share/grub/x86_64-redhat/stage1
/usr/share/grub/i386-redhat/stage1

Mandriva
/lib/grub/i386-mandriva/stage1

Mandrake
/usr/local/lib/grub/i386-pc/stage1
/usr/lib/grub/i386-pc/stage1

Suse
/usr/lib/grub/i386-suse/stage1
Gentoo, Knoppix, Mepis, Xubuntu, Ubuntu, Kubuntu, Debian
/lib/grub/i386-pc/stage1

Frugalware, Kanotix
/usr/lib/grub/i386-pc/stage1

下一步是在启动的 Live CD Linux 里面新建一个临时目录,挂载纯数据hda3分区,在里面新建一个/boot/grub 目录,把所有 Grub 的stage1, stage1.5 和 stage2文件拷进去,调用一个Grub 命令行,设置Grub进入MBR,退出。用 Ubuntu CD 举例命令会是

命令:

mkdir /mnt/hda3
mount /dev/hda3 /mnt/hda3
mkdir /mnt/hda3/boot
mkdir /mnt/hda3/boot/grub
cp /lib/grub/i386-pc/* /mnt/hda3/boot/grub

grub
>root (hd0,2)
>setup (hd0)
>quit

重启过后会引导到hda3上,除了一个 Grub 提示命令之外什么也没有。这表示 Grub 现在控制了MBR,连接到hda3分区了,并且如果在/boot/grub 或/boot目录下有一个叫“menu.lst”的配置文件,那么它会控制 Grub。如果 Grub 找不到它,默认会显示一个Grub 提示命令行。

注意有些版本的 Grub ,特别是红帽家族,会被改进读取”Grub.conf”而不是“menu.lst”。

虽然 Grub 用户手册没有说明但是依我的经验,没有任何一个操作系统不能被 Grub 命令引导。乍一看没有什么,但是很少有什么东西能那么简单又那么强大。

(C)现在该是写一个引导145个系统的菜单的时候了。它只是一个必须命名为 menu.lst 的文本文件,放在/boot/grub 子目录下。Grub 用下面的三行引导每一个系统:-

一个“title”声明,在屏幕上显示系统的名称。任何在单词“title”后面的文字会被显示,并且会导致系统的引导除了提醒你这是一个什么系统之外。

一个“root”声明,指定操作系统的根文件夹。也就是说目标系统所在的分区。Grub 从0开始计算每件事,所以要引导一个在第2块硬盘上第9分区的系统命令是“root (hd1,8)”。同样 (hd0,0) 指第1块硬盘的第1个分区。

一个“chainloader”声明,它总以 “+1” 结束。

所以你看到了这也没有什么。甚至像我一样的笨蛋也很应付得来。

为了偷懒我写了一个小程序产生引导菜单,因为它只是在做4个循环,在我这里是每个硬盘来一个循环。

因此我 menu.lst 的开头会像这样

代码:

title Empty @ hda1
chainloader (hd0,0)+1
title Empty @ hda2
chainloader (hd0,1)+1
title Empty @ hda3
chainloader (hd0,2)+1
title Empty @ hda4
chainloader (hd0,3)+1
and so on

无论何时只要我想更新,就编辑菜单,用操作系统的名字代替“Empty”。生活如此简单美丽,如果没有微软系统那额外的工作。这就是我随后的工作。


相关内容