您的位置:首页 > 其它

grub 使用技巧(实现多系统启动)

2008-11-03 09:21 323 查看
GRUB使用技巧

摘要:GRUB(GRand Unified Bootloader)是一款强有力的启动管理程序,它能够加载
启动多种操作系统, 主要包括Linux,FreeBSD,Hurd以及通过chain-loading方式加载专
有的Windows 98、 Windows 2K等操作系统。RedHat从7.2版本开始已经使用grub代替lilo
来启动Linux操作系统,它对比lilo具有许多优越性。本文以RedHat9.0带的GRUB为例,介
绍与说明使用GRUB的一些使用技巧,这些技巧不但对于Linux用户也对Windows用户具有实
际的使用价值。

关键字: grub lilo chainloader

相关软件下载:
linld.com : http://port.imtp.ilyichevsk.odes ... ld/linld095.tar.bz2
explore2fs : http://uranus.it.swin.edu.au/~jn ... ore2fs-1.00pre6.zip
grub.exe : ftp://ftp.cosoft.org.cn/incoming/grub_for_dos-0.0.6.tar.gz
grub的2进制发布:ftp://alpha.gnu.org/gnu/grub/grub-0.93-i386-pc.tar.gz

一、grub与lilo的比较:
lilo是早期较流行的启动管理器,被用来管理与引导多个操作系统,grub对比lilo具
有许多优点,下面简单地对比两者的优缺点:
⒈lilo最大缺点就是当每次编译新内核或者安装升级新的内核以后,都要重新修改配
置文件,运行lilo,才能使用新内核。而GRUB仅仅需要修改配置文件,甚至可以不要修改
配置文件,直接使用GRUB的命令行启动引导操作系统,对比lilo具有更多的灵活性。
⒉支持软件关机,执行grub> halt 就可以关机。
⒊grub对比lilo能提供良好的菜单功能, 提供编辑菜单行的命令行接口, 提供类似
bash命令补全功能,甚至可以把grub理解为一个小型的操作系统。这样即使grub配置文件
有错,也能够正常启动操作系统。
⒋在Redhat9.0中,grub提供漂亮splash开机界面,甚至可以定制开机界面。
⒌从软盘启动机器不需进入BIOS设置修改启动顺序。
⒍支持网络启动,能够使用TFTP协议从网络加载操作系统映像。
⒎支持命令行接口,并且支持口令加密,需要知道口令才能进入命令行,从一定程度
上保护系统安全。
⒏可以隐藏分区,配合口令加密功能,能够保护一些个人的重要文件不被删除与破坏。
也许grub还有许多优点,但是grub目前也存在一些缺点:
⒈目前不支持在菜单中选择从CDROM启动机器。
⒉生成的splash开机界面图片支持的颜色数量太少,无法做出漂亮的开机界面。
⒊目前并不支持NTFS文件系统,即不能通过grub命令行查看NTFS分区的文件。
总之相比之下,grub比lilo具有更多的灵活性。

二、grub的安装:
为了讲解的方便,本文假设安装操作系统布局如下:
/dev/hda1 windows98 FAT32
/dev/hda2 windows2000 NTFS
/dev/hda3 redhat 9.0/linux EXT2
/dev/hda5 windows98 d盘FAT32
....
/boot/grub/grub.conf配置文件如下:【注在redhat9.0中,menu.lst是grub.conf的链接
文件】
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
password --md5 $1$75KBk/$5zreS2IP2ZBC9/VQHxUpX1
title Windows 98
rootnoverify (hd0,0)
makeactive
chainloader +1
title Red Hat Linux 9 (2.4.20-9)
root (hd0,2)
kernel /boot/vmlinuz-2.4.20-9 ro root=/dev/hda3
initrd /boot/initrd-2.4.20-9.img
title Windows 2K
rootnoverify (hd0,1)
makeactive
chainloader +1
title Floppy
root (fd0)
chainloader +1
title SHUTDOWN
halt
简单说明:首先关于硬盘设备的命名,(fd0)表示软驱,(hd0)表示整个第一个硬盘,
注意grub无法区分硬盘是IDE还是SCSI的硬盘, 它仅仅简单地从0开始计数,一般IDE驱动
号小于SCSI的驱动号, 除非改变BIOS中的启动顺序。同样分区也是从0开始计算,另外注
意由于仅仅能够建立4个主分区,第一个扩展分区一定从4开始。例如(hd0,0) 表示第一块
硬盘上的第一个分区。类似地,(hd1,4)表示第二块硬盘上的第一个扩展分区,(hd2,0)表
示第三块硬盘上的第一个分区,(hd1) 表示整个第二个硬盘等等。timeout=n表示等待n秒
后自动选择缺省的title菜单进入操作系统【注意default也是从0开始计算】 ,在本例中
即选择第二项。splashimage=……指向开机画面文件,password --md5 PASSWORD表示只有
输入正确的口令才能进入grub的命令行和编辑菜单项。 如果此项在某个title中,只有输
入正确的口令才能启动操作系统。 title表示一个菜单项开始,后面的内容表示显示的菜
单项。 makeactive表示激活分区标志;chainloader表示如果要启动一些特殊的操作系统
【如windows 98】 ,它的启动程序内嵌在安装操作系统分区的第一个扇区,+1 就表示直
接读取该分区的第一个扇区。grub还支持许多命令,更多的内容参考info文档。
通常grub启动过程如下:使用root命令设置包含OS映像的根分区,再使用kernel命令
加载内核映像以及一些必要的参数, 如有必要加载模块或者initrd映像【对于linux】然
后执行boot命令启动操作系统。Linux, FreeBSD, NetBSD and OpenBSD等操作系统都使用
相似的方式。对于不支持的操作系统【如Windows98】,使用chain-load的方式操作系统,
首先使用rootnoverify命令设置根分区, 再使用makeactive命令激活该分区,
chainloader +1读取分区的第一个扇区,然后执行boot命令。由于boot命令在最后一定要
执行,一般是在配置菜单项中是隐含的。
grub的安装非常简单, 以root登陆后编辑好配置文件【实际上在安装redhat9.0时已
经配置安装好】,执行如下命令:
grub-install /dev/hda # 将grub引导程序安装在MBR
或者
grub-install /dev/hda3 # 将grub引导程序安装在/dev/hda3,linux分区标志必须
激活才能引导。
以后编译新内核或者安装升级新的内核,仅仅需要修改配置文件。另外建议以上命令
最好都要执行, 这样在重新安装Wndows98后由于在安装过程中会覆盖MBR引导区,会破坏
grub的引导程序导致无法进入Linux, 出现这种情况仅仅在Windows98下执行fdisk激活
Linux分区, 重新启动就可以进入Linux,再重新执行grub-install /dev/hda,就可以将
grub引导程序安装在MBR。 【注意:在本例子中千万不要执行grub-install /dev/dha1或
者在grub命令行中执行setup (hd0,0) ,这样将会破坏Windows的启动信息,导致windows
操作系统无法启动!】。

三、GRUB的使用技巧:
⒈定制开机界面:
首先选择自己喜欢的图片, 最好色彩不能太丰富, 大小640*480象素, 也可以使用
gimp编辑与制作,选择14色调色板,以xmp格式存盘【假设文件以penguin.xpm命名】。执
行gzip -9命令压缩文件放入/boot/grub目录,再修改grub.conf文件。
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
改为
splashimage=(hd0,2)/boot/grub/penguin.xpm.gz
如图1:

⒉使用grub安装多个操作系统:
目前出于工作学习的需要,在一台机器上安装多个操作系统的用户越来越多,例如工
作需要安装日文或者英文版的Windows等等, 或者在家里多人公用一台机器,或者想尝试
新的操作系统,例如如果想在/dev/hda2安装windows2000,仅仅需要进入grub的命令行执
行如下命令:
grub> hide (hd0,0)
grub> unhide (hd0,1)
grub> rootnoverify (hd0,1)
grub> makeactive
再重新启动机器,使用安装光盘就可以执行安装Windows 2000的操作过程。甚至可以
在一台机器上安装2套Windows 98【使用克隆的方式】 ,供多人使用。安装完成后,再使
用unhide命令将隐藏分区的属性取消。另外注意如果在机器中安装多个Windows操作系统,
在grub的配置文件中相关windows启动菜单项加入中makeactive命令, 能够很好的保证
windows操作系统正常启动。并且通过使用hide命令,隐藏重要的分区【由于Windows98盘
符顺序,最好隐藏最后一个分区】,保护自己的重要文件不被破坏与删除。
另外如果拥有两个硬盘,分别安装Windows 98,按平常需要进入BIOS设置,修改启动
顺序。使用grub就不需要这么麻烦,仅仅需要在菜单中加入如下命令就可以实现:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

⒊口令保护:
如果能够进入grub的命令行,就能够非常方便地查看文件系统里面的文件内容,例如
打入:
grub> cat (hd0,2)/etc/passwd
就可以查看passwd文件,所以尽量避免非法的用户进入grub命令行接口,grub引入了
password命令, 只有打入p后输入正确的口令才能进入grub命令行与编辑菜单项。如果觉
得这样还不够安全, 可以在每个title下加入lock命令,这样只有输入正确的口令后才能
启动机器。 另外也可以在每个title下加入password命令,并且可以给每个菜单项使用不
同的口令,保护机器里面数据的安全。
password密文的生成有两种方式:
⑴进入grub命令行,执行md5crypt命令,输入口令:
grub> md5crypt
Password: **********
⑵在Linux命令行下执行grub-md5-crypt命令,
最后将加密字符串拷贝粘贴到grub.conf配置文件中。

⒋如果没有安装Linux,是否可以安装使用grub。
答案是肯定的,前提条件是硬盘中必须存在FAT分区,假设c盘(/dev/hda1)是FAT分
区。
⑴从ftp: //alpha.gnu.org/gnu/grub/grub-0.93-i386-pc.tar.gz下载并解压到c: /
boot/grub目录,再从ftp: //ftp.cosoft.org.cn/incoming/grub_for_dos-0.0.6.tar.gz
下载并解压grub.exe与grub.pif文件。
⑵在c:/boot/grub目录下编辑grub配置文件menu.lst文件。例子:
title Windows 98
rootnoverify (hd0,0)
makeactive
chainloader +1
title Windows 2K
rootnoverify (hd0,1)
makeactive
chainloader +1
title Floppy
root (fd0)
chainloader +1
title SHUTDOWN
halt
⑶执行grub.exe,系统进入grub命令行模式,执行
grub> root (hd0,0)
grub> setup (hd0)
重新启动就可以使用grub引导操作系统,但是要注意一点c:/boot/grub目录内的文件
不能删除,否则会导致grub无法引导操作系统。

5.如何恢复grub的引导?
许多初学者都有过这样的经历, 由于各种原因重新安装Windows98,导致破坏硬盘的
系统引导区,破坏了grub引导机制,恢复grub引导具体操作如下:
⑴使用explore2fs软件,取回内核文件命名为vmlinuz 文件,注意有时候还要取回对
应的initrd.img文件(特别是根文件系统使用ext3或者使用scsi的硬盘)。
⑵在dos实模式下,执行:
linld image=vmlinuz [initrd=initrd.img] cl=root=/dev/hda3
【注意:cl后面的参数如果有空格一定要使用引号引起来。】
⑶进入Linux操作系统后,执行:grub-install /dev/hda
如果没有安装Windows98, 并且在硬盘中不存在FAT分区,可以建立windows98的启动
盘,再拷贝grub.exe文件到软盘,使用它来引导机器,执行grub.exe命令进入grub命令行,
执行:
grub > root (hd0,2)
grub > setup (hd0)
再重新启动就会出现grub菜单界面,另外如果以前执行grub /dev/hda3命令,另仅仅
需要使用fdisk命令激活Linux分区就可以进入Linux, 再安装grub到MBR。当然如果Linux
的根分区在扩展分区,只能采用前面介绍的两种方法来恢复grub的引导。

四、总结:
通过以上例子可以看出grub是一个非常优秀的启动管理程序,比lilo具有更多的灵活
性,建议安装Linux的用户使用GRUB。

五、参考资料:
⒈ grub info文档。
⒉《DOS下用GRUB.EXE修复启动故障》
http://www.linuxeden.com/edu/doctext.php?docid=2981
⒊《自己动手制作grub启动的菜单背景》
http://www.linuxeden.com/edu/doctext.php?docid=2893
⒋ 《给GRUB加上密码锁》
http://www.linuxeden.com/edu/doctext.php?docid=2175
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐