当前位置:Linux教程 - Linux文化 - 用NT Loader加载GRUB来启动Linux

用NT Loader加载GRUB来启动Linux


0. 前提

系统安装有: Windows NT 4.0, Linux Redhat 7.1

C:\ 对应于Linux中 /dev/hda1

Linux ROOT 为Linux中 /dev/hda4

硬盘分区情况:

/dev/hda1 * 1 261 2096451 6 FAT16 (WINNT 4.0)

/dev/hda2 262 783 4192965 5 Extended

/dev/hda3 784 792 72292+ 82 Linux swap

/dev/hda4 793 1027 1887637+ 83 Linux (Redhat 7.1)

/dev/hda5 262 522 2096451 7 HPFS/NTFS

/dev/hda6 523 783 2096451 7 HPFS/NTFS

1. 安装grub

我用的grub是Redhat7.2带的grub安装包: grub-0.90-11.i386.rpm

安装: rpm -ivh grub-0.90-11.i386.rpm

其他安装方式也一样,只要你安装上grub就行了.RH7.2缺省用的grub, 1,2步骤可以

省了.

2. 建立grub的环境

cp /usr/share/grub/i386-redhat/* /boot/grub

3. 生成grub的配置文件/boot/grub/menu.conf

menu.conf的内容如下:

######### beginning of menu.conf ####################

default=1

timeout=4

#splashimage=(hd0,3)/boot/grub/splash.xpm.gz # 想要漂亮的启动画面,去掉行首"#"

title Red Hat Linux (2.4.12)

root (hd0,3)

kernel /boot/vmlinuz-2.4.12 ro root=/dev/hda4

title Red Hat Linux (2.4.14)

root (hd0,3)

kernel /boot/vmlinuz-2.4.14 ro root=/dev/hda4

######### end of menu.conf ####################

系统有两个内核, 第一为稳定的内核, 以确保第二个内核(刚编译的)启动失败时,能引导进系统.另外, 这个menu.conf没有设password, 安全起见,最好加上,具体怎么加,看看手册了.

注意了, 我的linux在/dev/hda4,所以menu.conf那些分区位置为(hd0,3),你的可能不一样了,不能完全照着"画瓢"噢! :) 下面第3步install的中的分区位置也应该和你的系统一致. 3. 安装grub至Linux分区boot将grub的stage1安装到/dev/hda4的boot扇区(hd0,3). 过程如下:

/sbin/grub (运行grub)

grub> install (hd0,3)/boot/grub/stage1 d (hd0,3) (hd0,3)/boot/grub/stage2 p(hd0,3)/boot/grub/menu.conf

(注意,上面"grub>"为grub的提示符,其后内容写在一行上.)

4. 取得grub的boot信息

过程如下:

dd if=/dev/hda4 of=/grub.lnx bs=512 count=1

这样得到grub的引导信息,只要用NT Loader来加载它就行了.

5. 将上面得到的grub.lnx弄到Windows的C盘根目录下可以先把grub.lnx弄得软盘上,然后启动windows,拷贝到C:\; 情况允许也可以直接在Linux下拷贝到C:了. 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄过去了. 如下:

mount -t vfat /dev/hda1 /mnt/c

cp /grub.lnx /mnt/c

umount /mnt/c

6. 修改NT Loader的boot.ini

在其中加入一行: C:\grub.lnx="Redhat Linux - GRUB"

加入后boot.ini的内容如下:

[boot loader]

timeout=5

default=C:\grub.lnx

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\PNT40W="Windows NT Workstation Version 4

.00"

multi(0)disk(0)rdisk(0)partition(1)\PNT40W="Windows NT Workstation Version 4

.00 [VGA mode]" /basevideo /sos

C:\grub.lnx="Redhat Linux - GRUB"

OK. 可以用NT Loader加载Linux了,:) 其实上面过程基本上和用NT Loader加载LILO一样.其基本思想就是用NT Loader来加载LILO或grub的引导区(grub.lnx), 其中的关键就是LILO或grub的引导区的获取了,可以把它们安装在Linux的ROOT分区上,然后用dd取得这个引导分区信息(即分区的第1个扇区), 存为一个文件,放到windows的C:\下,在boot.ini中加入相应的引导指示行即可。