admin 管理员组文章数量: 1087649
2024年12月25日发(作者:苹果base64编码)
Grub引导程序的安装、配置及使用汇总
(一)安装linux时安装grub.
安装redhat linux时会提示安装引导程序,如果选择grub为引导程序,建议把grub安
装到硬盘的引导扇区MBR. grub 还可以引导其它操作系统,如 FreeBSD、NetBSD、
OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。
(二)grub的配置
一旦选择了grub为引导程序,下面我们来了解一下它的配置.
/boot/grub/是grub产生一个引导选择菜单以及设置一些选项.下面是我的
:
#==========例子开始==========
# generated by anaconda
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,6)
# kernel /vmlinuz-version ro root=/dev/hda10
# initrd /
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,6)/grub/
# --> Redhat Linux 8.0 <--
title Red Hat Linux (2.4.18-14)
root (hd0,6)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /
# --> Microsoft Windows XP <--
title Microsoft Windows XP
rootnoverify (hd0,0)
chainloader +1
#===========例子结束==========
配置选项解释:
以"#"开头的是注释行.
我这里有两个操作系统,分别是Red Hat Linux和Microsoft Windows XP.
其中 timeout标识默认等待时间,我这设置为10秒,超过10秒用户还没作出选择的话,
将自动选择默认的操作系统(我这里默认的是Redhat linux 8.0)
默认的操作系统是由default一项来控制的,default后的数字表明第几个是默认的,这
里0表示第一个,1表示第二个.所以如果你想修改默认的操作系统,就修改default后的数
字.
title一项是设置操作系统的名称,grub不支持中文(有点遗憾).
splashimage一项指定grub界面的背景图片,有兴趣的朋友可以修改grub的背景哦!
root (hd0,6)标识从第一个硬盘,第7个分区来启动搜索引导内核.注意这儿的root与
linux的root分区不同,此root非彼root也! grub的硬盘标识方法与linux的有点不同.
在linux中第一个主分区为hda1,第二个主分区为hda2,第一个逻辑分区为hda5,而在 grub
中是以(hdx,y)来标识的,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,4)依此类推.所
以这儿root后面的是你的 /boot所在分区标识.
知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /vmlinuz-2.2.18-14 ro root=LABEL=/.说明/boot/vmlinuz-2.2.18-14 就是要
载入的内核。后面的都是传递给内核的参数。ro是以readonly的意思。注意我这里内核前
面的路径是"/",因为我的boot单独分了一个区, 如果你没有为boot单独分区,那么内核前
面的路径就是"/boot".
initrd用来初始的linux image,并设置相应的参数
再来看一看windows的定义段吧。
这里,我添加了一项来引导 WindowsXP。要完成此操作,GRUB 使用了"链式装入器
"(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 winXP 自己的引导装入
器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另
一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。如果你在计算机
中装有win98,winme,win2k,winxp的话,chainloader会把引导权交与win的 NTLoader来引
导.
(四).恢复被windows破坏的grub.
如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR中
的grub,这时需要恢复grub.
1.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱
来引导。
2.等安装界面出来后,按[F4]键,也就是linux rescue模式。
3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比
较简单。
4.然后会出现这样的提示符:
sh#
5.我们就可以操作GRUB了.输入grub:
sh#grub
会出现这样的提示符:
grub>
我们就可以在这样的字符后面,输入:
grub>root (hdX,Y)
grub>setup (hd0)
如果成功会有一个
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,
那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘
的MBR上。
(五).用NTLoader来引导linux.
如果你在安装linux时没有选择安装grub,不必着急,现在我们来看看如何在安装linux
后安装grub.并用windows的NTLoader来引导linux.
1. 安装grub
我用的grub是Redhat8.0带的grub安装包:
安装: rpm -ivh
2. 建立grub的环境
cp /usr/share/grub/i386-pc/* /boot/grub
3. 生成grub的配置文件/boot/grub/
按照上面所讲的来生成一个配置文件.
注意了, 这里我的linux在/dev/hda4,所以那些分区位置为(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/
(注意,上面"grub>"为grub的提示符,其后内容写在一行上.)
4. 取得grub的boot信息
过程如下:
dd if=/dev/hda4 of=/ bs=512 count=1
这样得到grub的引导信息,只要用NT Loader来加载它就行了.
5. 将上面得到的弄到Windows的C盘根目录下
可以先把弄得软盘上,然后启动windows,拷贝到C:; 情况允许也可以直接在
Linux下拷贝到C:了. 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄过去
了. 如下:
mount -t vfat /dev/hda1 /mnt/c
cp / /mnt/c
umount /mnt/c
6. 修改NT Loader的
在其中加入一行: C:="Redhat Linux - GRUB"
加入后的内容如下:
[boot loader]
timeout=15
default=C:
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP
Professional" /fastdetect
[VGA mode]" /basevideo /sos
C:="Redhat Linux - GRUB"
OK. 可以用NT Loader加载Linux了, 其实上面过程基本上和用NT Loader加载LILO
一样.其基本思想就是用NT Loader来加载LILO或grub的引导区(), 其中的关键
就是LILO或grub的引导区的获取.
(六)活用grub的交互功能
grub具有强大的交互功能.学会了将会使你受益非浅!
没有显示菜单怎么办?
当开机后进入grub界面但没了菜单,只剩下一个grub>提示符,怎么启动呢?别急,看下
面:
grub>cat (hd0,6)/boot/grub/ (为了看参数)
grub>root (hd0,6)
grub>kernel (hd0,6)/vmlinuz-2.4.18-14 ro root=LABEL=/
grub>initrd (hd0,6)/
grub>boot
OK!启动了吧!以上有些数字要根据你的实际情况更改.
以上这个方法也可以用于测试新编译的内核.
2.进入单用户模式.
有时不小心把root用户密码忘了,只能进入单用户模式来重新设置root密码.方法如下:
开机进入grub界面,按C进入命令行模式,然后按照上面的方法进行,只是在第三步要在
后面加入single参数。
到GRUB的设置的那一块。我们要把GRUB安装到MBR上。这样就把mandrake的GRUB覆盖。
这也没有什么可怕的,我们可以把它加在Redhat 的GRUB中,系统安装好后,我们设置一
下就行了。只是修改一个文件/etc/
4.如何修改/etc/
一般的发行版,GRUB的配置文件都在/etc/中,如果我们安装了多个linux,就
要修改这个文件。那我们如何修改呢?一般的情况 下,windows是自动加载到了
中,打开,就能看到windows的设置情况。可能有时系统会突然出现不能引志
windwows的情况,我们就要下面的类似的改动一下。
title DOS
rootnoverify (hd0,0)
chainloader +1
改成
title WinXP在这里,title是必须的,WinXP,您可以用别的名,您喜欢怎么样就怎么样。
root (hd0,0)
chainloader +1
这样就能启动了。
2.如何把其它的linux的引导加入到GRUB来引导呢?我们可以用下面的方法。也是比较简
单。GRUB引导linux系统,就是靠三行来定义。
title XXX
在这里,XXX是您要引导的操作系统的名字。可以自己来定。
root (hdX,Y)
在这里,X和Y都代表一个数值。X是linux的根分区在哪个硬盘上。如果您只有一个硬
盘。那就是hd0。如果您 的linux的一个发行版是安装在第二个硬盘,这个X,就是1。那
Y代表什么?Y是代表您所安装的linux是在哪个区。这个数值有点不同。用原理没有办 法
说清楚。应该用实例来说。比如我把mandrake安装到hda8了。那他的root (hdX,Y),就
应该写为root (hd0,7),也是说是linux所在的根分区hdaZ中的Z减去1就是这个Y的数
值:在这之中,hdaZ或者 hdbZ中的Z也是一个数值。看一下上面的例子就明白了。
用fdisk -l 或者df -la来查看
kernel /boot/vmlinuz root=/dev/hdaZ
这里中的Z,也是一个数值,接着上面的例子,我们把Mandrake的引导加入到Redhat 的
GRUB中。就可以写成如下的样子:
kernel /boot/vmlinuz root=/dev/hda8
通过上面的分析,我们要让Redhat的GRUB来引导Mandrake 9.0,我们要改动Redhat中的
GRUB的配置文件,加入下面的一段:
title MD 8.0
root (hd0,7)
kernel /boot/vmlinuz root=/dev/hda8
如果您想加入其它的操作系统到Redhat 中的GRUB中,也不过是如此,如者用其它发行版
中的GRUB来引导别的发行版,原理也是一样的。
GRUB是不是很简单???
版权声明:本文标题:Grub、磁盘分区配置详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735194013a1641750.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论