免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2937 | 回复: 11
打印 上一主题 下一主题

系统重新启动能否自动出现选择硬盘 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-14 08:39 |只看该作者 |倒序浏览
2块硬盘  1个是xp   1 个 是 centos5.5
现在 每次切换系统 需要在 BIOS里 做 选择操作。 很烦

有没有方法让系统重新启动后 自动出现选择硬盘(或者说os) 的菜单    ?  (这样我不用 每次跑到 bios里设置)

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-05-14 08:41 |只看该作者
楼主两个硬盘接在不同接口上?
试试在centos的grub.conf里面添加xp的启动项

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-07-11 22:20:00
3 [报告]
发表于 2011-05-14 13:00 |只看该作者
1 安装grub
2 用grub参数 default 和 timeout来控制。详细信息请看/boot/grub/grub.conf

论坛徽章:
0
4 [报告]
发表于 2011-05-14 17:33 |只看该作者
是的  两个硬盘接在不同接口上

论坛徽章:
0
5 [报告]
发表于 2011-05-14 21:14 |只看该作者
现在有两块硬盘,里面个有一个linux系统,这两个linux系统是一样的(包括grub内容也是)。所以进入一个系统时,会出现 /boot 分区 duplicate。
想问一下grub要如和设置才能正确进入呢?谢谢

问题补充:

如果grub.conf:
default=1
timeout=30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.9-1.667)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-1.667.img
title Fedora Core (2.6.9-1.667)
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-1.667.img
这两个系统是一样的,就是分别在两块硬盘上,就会出现上面说的问题。
该如何解决呢?

二楼的,用了你的方法,但是还是不行啊,为什么呢?

其他回答 共2条

GRUB(统一引导装入器)是基本的Linux引导装入器。
其有四个作用,如下:

1.选择操作系统(如果计算机上安装了多个操作系统)。
2.表示相应引导文件所在的分区。
3.找到内核。
4.运行初始内存盘,设置内核和相关模块。
GRUB的设置文件是/boot/grub/grub.conf

/boot/grub/grub.conf中典型的GRUB设置文件,如下图
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,9)
#          kernel /boot/vmlinuz-version ro root=/dev/hda10
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=1
timeout=30
splashimage=(hd0,9)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.9-1.667)
        root (hd0,9)
        kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.9-1.667.img
title Other
        rootnoverify (hd0,0)
        chainloader +1
对上图中GRUB的变量进行说明如下:

变量               说明
#:             对菜单设置文件进行注释。
default:       指定默认操作系统。如果为0,则没有用户输入时,自动启动第一段中显示的操作系统。
timeout:       设置GRUB启动默认之前的时间极限(秒数)。在上图中为30秒。
splashimage:   指定默认GRUB引导时所使用的背景图像的位置。
hiddenmenu:    这个命令被使用时,他不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,能看到标准的GRUB菜单。能在其前加#或删除来达到显示菜单借口的目的。
title:         设置GRUB菜单中显示的选项。一个是显示Fedora Core (2.6.9-1.667),一个  为Other,也即我使用的视窗系统 XP。
kernel:        指定Linux内核地址。
initrd:        指定初始内存盘地址。
rootnoverify:  对视窗系统 XP之类的敏感操作系统指定引导文件所在分区。
chainloader:   +1表示对指定分区中第一个扇区寻找引导文件。
说明1:password变量未被列出,是因为我在安装系统时,未选择引导装载口令。这个变量被使用时,他能防止不知道口令的用户编辑菜单的项目。

在GRUB中增加口令的办法:使用grub-md5-crypt命令,在提示下输入所要口令。能看到一系列奇怪的字符,能将其复制到设置文件中。非常容易从命令行复制这个口令,只要用鼠标加亮选择口令,在文本编辑器中打开/etc/grub.conf,在所要位置右单击鼠标,然后Linux即会自动插入加亮的MD5口令。

说明2:为了方便起见,/etc/grub.conf链接实际引导装入器的设置文件/boot/grub/grub.conf。

更有一些其他的GRUB变量未被列出,如果要查询更周详的信息,能参考如下:

能在系统里使用man grub或info grub命令。
以下是一些关于grub的站点:

http://www.gnu.org/software/grub
- GNU GRUB 项目的主页。这个站点包含了GRUB发展状态的信息及一个FAQ。

http://www.uruk.org/orig-grub
- 在这个项目被脱管到免费软件基金会进一步发展前的最初的GRUB文件。

http://www.redhat.com/mirrors/LD ... boot-with-GRUB.html
- 研究GRUB各种不同的用法,包括引导非Linux操作系统。

http://www.linuxgazette.com/issue64/kohli.html
- 一篇介绍性的文章,讨论在一个系统上GRUB设置,包括GRUB命令行选项的概述。

回答者: HuaTine | 五级 | 2010-1-15 17:41

简单点说吧.
如果BIOS设置第一硬盘启动吧,那么grub.conf应该如下:
default=1
timeout=30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.9-1.667)
        root (hd0,0)
        kernel (hd0,0)/boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
        initrd (hd0,0)/boot/initrd-2.6.9-1.667.img
title Fedora Core (2.6.9-1.667)
        root (hd1,0)
        kernel (hd1,0)/boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
        initrd (hd1,0)/boot/initrd-2.6.9-1.667.img

现在 是 2个os 在 不同 的盘
具体 的grub 该如何详细i写   (感觉 grub似乎 还要 安装 ?)

论坛徽章:
0
6 [报告]
发表于 2011-05-17 15:20 |只看该作者
参考如下
有两块硬盘
magic linux装在第一块硬盘上
WINDOWS XP系统在第二块硬盘的第一分区上,这样写grub的menu.lst 却无法引导
title Microsoft Windows XP
rootnoverify (hd1,0)
chainloader +1
显示器一直显示出“
title Microsoft Windows XP
rootnoverify (hd1,0)
chainloader +1”
并保持不变,无错误提示
保持不变,无法正常进入WINDOWS XP系统
不知该如何修改menu.lst才能正常

装好硬盘后,BIOS中显示10G小硬盘为master主盘,80G硬盘为从盘,GRUB安装进小硬盘的MBR,在BIOS中设置主盘优先引导后正常进入linux系统,为了让GRUB也能引导大硬盘上的WINDOWS XP系统,我修改menu.lst的内容为:
# Note that you do not have to rerun grub after making changes to this file.
default=0
timeout=6
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title MagicLinux
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.15.3  ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Graphics Mode)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.15.3 init 5 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Console Mode)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.15.3 init 3 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Single Mode)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.15.3 init 1 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img

# --> Microsoft Windows XP <--
title Microsoft Windows XP
      rootnoverify (hd1,0)
      chainloader +1

结果是显示器一直显示出“
title Microsoft Windows XP
rootnoverify (hd1,0)
chainloader +1”
并保持不变,无错误提示
保持不变,无法正常进入WINDOWS XP系统,这样写应当是正确的啊............

不能从小硬盘引导大硬盘让我很郁闷,但总不能每次都修改CMOS进不同系统吧~~~~~~~~~我决定让尝试让大硬盘来引导小硬盘上的系统,使用GRUB FOR DOS 网上留传的GRUB FOR DOS功能简单,设置也怪麻烦,但现在的许多DOS工具箱都使用GRUB FOR DOS来进行对不同功能工具的引导,同时还多来不少系统维护的实用工具,所以我直接到WWW.51CT.CN下载了51lite DOS 工具箱,安装后windows系统c盘多了几个文件,其中有grldr,文件夹xc_dos等,boot.ini,boot.ini的内容为
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /detecthal
C:\grldr="51lite DOS tools"
打开目录xc_dos里的文件xc_menu.lst(xunchi很牛,grub被修改得满彻底www.xunchi.com)进行修改,修改后内容如下:
#########
password
timeout 5
###########
default 0
fallback 1
fontfile (hd0,0)/xc_dos/fonts
###########
splashimage (hd0,0)/xc_dos/bj2008.xpm.gz
###########
************************************************************************************
title MagicLinux
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.15.3  ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Graphics Mode)
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.15.3 init 5 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Console Mode)
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.15.3 init 3 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
title MagicLinux (Single Mode)
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.15.3 init 1 ro root=/dev/hda1 vga=791 splash=silent
        initrd /boot/initrd-2.6.15.3.img
**************************************************************************************
title 运行     Max DOS 工具盘 5.5
##
root    (hd0,0)
kernel (hd0,0)/xc_dos/memdisk.gz c=60 h=4 s=36 floppy
###########
###########
initrd (hd0,0)/xc_dos/Max_dos.IMG c=60 h=4 s=36 floppy
#####
password
###
title 运行     矮人 GHOST 8.2 向导工具(矮人版,简单易用)
password
####root    (hd0,0)
kernel (hd0,0)/xc_dos/memdisk.gz
###########
initrd (hd0,0)/xc_dos/ar_ghost.img
####
title 运行     GHOST 8.2 高级功能版(DOS之家版,功能强大)
password
####root    (hd0,0)
kernel (hd0,0)/xc_dos/memdisk.gz
###########
initrd (hd0,0)/xc_dos/g82.IMA
#####
title 调用     从光盘启动系统
scdrom --bootcd
###########
title 返回     WINDOWS启动菜单
rootnoverify (hd0,0)
makeactive
chainloader  +1
########################

自此实现了双系统的正常引导,只是有一点很奇怪,grub均把自己所在硬盘认成是hd0!!GRUB FOR DOS可以引导第二块硬盘上的操作系统,而magic linux装的GRUB却无法引导第二块硬盘上的WINDOWS XP系统,两者的版本相同,同为GRUB  version 0.95

疑惑中,不知到底是不是我写menu.lst造成的错误,烦劳知情者指点


已经完全解决了

现在修改menu.lst内容如下,引导问题解决
# --> Microsoft Windows XP <--
title Microsoft Windows XP
root (hd1,0)
savedefault
makeactive
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

查到资料,修改原因如下:
If you have installed DOS (or Windows) on a non-first hard disk, you have to use the disk swapping technique, because that OS cannot boot from any disks but the first one. The workaround used in GRUB is the command map (see map), like this:

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

就是hd0的分区变成了hd1的,而hd1的分区变成了hd0的,用map命令可以虚拟掉换两硬盘的id.


http://linux.chinaitlab.com/List_93.html

论坛徽章:
0
7 [报告]
发表于 2011-05-17 15:24 |只看该作者
本帖最后由 liyihongcug 于 2011-05-17 20:29 编辑

在自己机器 配置如下 失败
cat /boot/grub/menu.lst
# grub.conf 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,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-194.el5.img
#--> Microsoft Windows XP <--
title Microsoft Windows XP
root (hd1,0)
savedefault
makeactive
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

重新启动 系统 发现不能出现2个系统的选择,  是否上面的配置错误  ??





[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

论坛徽章:
0
8 [报告]
发表于 2011-05-19 15:39 |只看该作者
本帖最后由 liyihongcug 于 2011-05-27 13:29 编辑

重新启动  需要在 bios切换一2此 就 可以出现界面了

主要 他要认得第一,安装linux时安装grub.
安装redhat linux时会提示安装引导程序,如果选择grub为引导程序,建议把grub安装到硬盘的引导扇区MBR.grub 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。
(二)grub的配置  U盘工厂支持
一旦选择了grub为引导程序,下面我们来了解一下它的配置.
/boot/grub/grub.conf是grub产生一个引导选择菜单以及设置一些选项.下面是我的grub.conf:
#==========例子开始==========
# grub.conf 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 /initrd-version.img

www.gzusb.com  U盘工厂 瑞和数码


#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,6)/grub/splash.xpm.gz
# --> 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 /initrd-2.4.18-14.img
# --> 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后的数字. www.gzusb.com
title一项是设置操作系统的名称,grub不支持中文(有点遗憾).
splashimage一项指定grub界面的背景图片,有兴趣的朋友可以修改grub的背景哦!
root (hd0,6)标识从第一个硬盘,第7个分区来启动搜索引导内核.注意这儿的root与linux的root分区不同,此root非彼root也! grub的硬盘标识方法与linux的有点不同.在linux中第一个主分区为hda1,第二个主分区为hda1,第一个逻辑分区为hda5,而在 grub中是以(hdx,y)来标识的,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,1)依此类推.所以这儿root后面的是你的 /boot所在分区标识.
知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /vmlinuz-2.2.18-14 ro root=LABEL=/.说明/boot/vmlinuz-2.2.18-14 就是要载入的内核。后面的都是传递给内核的参数。ro是以readonly的意思。注意我这里内核前面的路径是"/",因为我的boot单独分了一个区, 如果你没有为boot单独分区,那么内核前面的路径就是"/boot". U盘之家
initrd用来初始的linux image,并设置相应的参数
再来看一看windows的定义段吧。
这里,我添加了一项来引导 WindowsXP。要完成此操作,GRUB 使用了"链式装入器"(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 winXP 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。如果你在计算机中装有win98,winme,win2k,winxp的话,chainloader会把引导权交与win的 NTLoader来引导.
(三)Grub启动盘的制作
要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。
将一张空盘插入 1.44MB 软驱,输入:
# mke2fs /dev/fd0 瑞和数码
创建了 ext2 文件系统后,需要安装该文件系统:
# mount /dev/fd0 /mnt/floppy
现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一个步骤,就能得到可用的引导盘。
在linux bash中,从 root 用户运行"grub",该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。
在 grub> 提示符处,输入:
grub> root (fd0)
grub> setup (fd0)
grub> quit

www.gzusb.com

现在,引导盘完成了。
(四).恢复被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)
如果成功会有一个successful......
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。

U盘之家


(五).用NTLoader来引导linux.
如果你在安装linux时没有选择安装grub,不必着急,现在我们来看看如何在安装linux后安装grub.并用windows的NTLoader来引导linux.
1. 安装grub
我用的grub是Redhat8.0带的grub安装包: grub-0.92-7.rpm
安装: rpm -ivh grub-0.92-7.rpm
其他安装方式也一样,只要你安装上grub就行了.RH8缺省用的grub, 1,2步骤可以省了.
2. 建立grub的环境
cp /usr/share/grub/i386-pc/* /boot/grub
3. 生成grub的配置文件/boot/grub/menu.conf
按照上面所讲的grub.conf来生成一个配置文件.
注意了, 这里我的linux在/dev/hda4,所以menu.conf那些分区位置为(hd0,3),
你的可能不一样了,不能完全照着"画瓢"噢! 下面第3步install的中的分区位置也应该和你的系统一致.
3. 安装grub至Linux分区boot
将grub的stage1安装到/dev/hda4的boot扇区(hd0,3). 过程如下:
/sbin/grub (运行grub) www.gzusb.com
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=15
default=C:\boot.lnx
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect U盘之家
[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的引导区的获取.
(六)活用grub的交互功能
grub具有强大的交互功能.学会了将会使你受益非浅!
1.grub没有显示菜单怎么办?
当开机后进入grub界面但没了菜单,只剩下一个grub>提示符,怎么启动呢?别急,看下面:
grub>cat (hd0,6)/boot/grub/grub.conf (为了看参数)
grub>root (hd0,6)
grub>kernel (hd0,6)/vmlinuz-2.4.18-14 ro root=LABEL=/
grub>initrd (hd0,6)/initrd-2.4.18-14.img
grub>boot
OK!启动了吧!以上有些数字要根据你的实际情况更改.
以上这个方法也可以用于测试新编译的内核.
2.进入单用户模式.
有时不小心把root用户密码忘了,只能进入单用户模式来重新设置root密码.方法如下:

瑞和数码

开机进入grub界面,按C进入命令行模式,然后按照上面的方法进行,只是在第三步要在后面加入single参数.

以上转载于中国IT实验室,再次表示感谢
什么是 GRUB?
GRUB 是引导装入器 -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。
GRUB 是一个很棒的引导装入器。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。(AIX、SUN的系统?我还不知道能不能支持)这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单 优盘之家
Linux 世界在很长一段时间里一直使用 LILO 引导装入器,而且它可以让上百万的 Linux 用户引导系统。是的,的确是这样,LILO 很有效。但是,LILO 的维修率很高,而且很不灵活。与其花很多时间来描述 GRUB 的优点,还不如演示如何创建自己的 GRUB 引导盘以及如何使用它来引导系统。然后,我将说明 GRUB 的一些很“酷”的技术细节,并指导您完成将 GRUB 安装到 MBR(主引导记录)的过程,以使它成为缺省引导装入器。
如果您有点胆小,不必害怕。可以学习前半部分,创建 GRUB 引导盘,尝试使用 GRUB 而不必弄乱现有的引导装入器。或者,可以用其安全的“驻留”方式来熟悉 GRUB。那么,让我们立即开始吧。
下载 GRUB
要开始探究 GRUB 的精妙之处,首先需要下载、编译和安装它。但不要害怕 -- 根本不会修改您的引导记录 -- 我们只是要编译和安装 GRUB,就像其它程序一样,在此过程中我们可以创建 GRUB 引导盘。请不要担心;在修改引导过程之前,我会告诉您。 www.gzusb.com
现在开始。访问 ftp://alpha.gnu.org/gnu/grub/
并下载可以找到的最新版本的 GRUB tar 压缩包。我编写本教程时,最新的 tar 压缩包是 grub-0.5.96.1.tar.gz。下载了最新版本后,就可以安装了。
安装期
这里是从 tar 压缩包安装 GRUB 所需输入的命令。我将在 /tmp 中编译源文件,并将所有部分都安装到硬盘的 /usr 目录下。从 root 用户,输入以下命令:
# cd /tmp
# tar zxvf /path/to/archive/here/grub-0.5.96.1.tar.gz
# cd grub-0.5.96.1
# ./configure --prefix=/usr
# make
# make install
现在已经安装了 GRUB,准备开始使用它。
制作引导盘
要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

U盘之家


制作引导盘,第二部分
好,将一张空盘插入 1.44MB 软驱,输入:
# mke2fs /dev/fd0
创建了 ext2 文件系统后,需要安装该文件系统:
# mount /dev/fd0 /mnt/floppy
现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /usr/share/grub/i386-pc/stage1 /mnt/floppy/boot/grub
# cp /usr/share/grub/i386-pc/stage2 /mnt/floppy/boot/grub
只需要再有一个步骤,就能得到可用的引导盘。

制作引导盘,第三部分
解压、编译和安装 GRUB 源 tar压缩包时,会将程序 grub 放到 /usr/sbin 中。该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。是的,尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面完全相同。 瑞和数码
这是有趣的设计策略,现在该使用驻留版本的 GRUB 来设置引导盘的引导扇区了。从 root 用户,输入 "grub"。GRUB 控制台将启动,显示如下:
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub>
欢迎使用 GRUB 控制台。现在,研究命令。

制作引导盘,第四部分
在 grub> 提示符处,输入:
grub> root (fd0)
grub> setup (fd0)
grub> quit
现在,引导盘完成了。在继续下一步骤之前,在看一下刚才输入的命令。第一个 "root" 命令告诉 GRUB 到哪里查找辅助文件 stage1 和 stage2。缺省情况下,GRUB 会在指定的分区或磁盘上的 /boot/grub 目录中进行查找。在安装引导盘时,也就是几分钟以前,我们已将这些文件复制到正确的位置。接着,输入了 setup 命令,它告诉 GRUB 将引导装入器安装到软盘的引导记录上;我们将在以后详细讨论这一过程。然后退出。现在,已经制作好引导盘,可以开始使用 GRUB 了。

瑞和数码


使用 GRUB 引导系统之前,需要知道一些信息。首先,应知道哪个分区保存了 Linux 内核,以及 root 文件系统的分区名称。然后,应查看现有 LILO 配置来寻找需要传递给内核的变量,如 "mem=128M"。一旦获取了这些信息,就可以开始了。
要启动 GRUB,需要关闭系统并退出引导盘。如果由于某些原因而不能立即关闭系统(比如上班时在部门的服务器上测试 GRUB),那么只要在提示中输入 "grub" 并继续操作。所有程序的运行情况都不会改变,只是您不能执行引导(因为 Linux 正在运行)。
装入引导盘时,在屏幕顶部将出现一条消息,告诉您正在装入第一阶段和第二阶段。几秒后,将会出现一个熟悉的屏幕,显示如下:
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible www.gzusb.com
completions of a device/filename. ]
grub>
可以看到,这些内容与在 Linux 中以驻留方式运行 GRUB 时出现的消息完全相同 -- 只不过现在我们是使用 GRUB 来引导 Linux。
在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。例如,在 Gentoo Linux 中,有一个单独的小分区专用于保存 Linux 内核与引导信息。大多数情况下,我们不安装这个分区,这样在系统意外崩溃或重新引导时,就不会把它弄乱。
这些,我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区,我们很快就会讨论这个功能。但现在,让我们输入 root 分区。在提示中输入 root,但不要按 Enter 键:

瑞和数码


grub> root (
现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:
grub> root (hd0,
现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:
grub> root (hd0, (tab)
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
Partition num: 2, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is reiserfs, partition type 0x83
Partition num: 5, Filesystem type is reiserfs, partition type 0x83 瑞和数码
如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了。
GRUB 命名约定
到目前为止,您可能会感到一点困惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,回来看一下 GRUB 提示,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。如果已经明白了 GRUB 硬盘/分区命名,您也许要调整当前 root 命令行,以使它指向保存 Linux 内核的分区。按以下格式输完命令,然后按 Enter 键:
grub> root (hd0,4) (hit enter)
Filesystem type is reiserfs, partition type 0x83

www.gzusb.com


装入内核
现在已安装了 root 文件系统,到装入内核的时候了。在 GRUB 提示中,依次输入 "kernel"、空格、到内核的路径、空格、内核参数,如 root 参数(GRUB 将自动插入适当的 "mem=" 参数)。我在我的系统中输入:
grub> kernel /boot/bz2.4 root=/dev/hda5
[Linux-bzImage, setup=0x1200, size=0xe1a30]
请留意 "root=" 内核参数,它非常重要。它应该指向保存 root 文件系统的 Linux 分区。您也许要写下到目前为止输入的命令,这样在教程后面讲述如何创建 GRUB 引导菜单时,就可以迅速找到它们。
Root,内核,引导!
您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。
重新调查引导软盘
如果一切正常,就可以使用使用 GRUB 引导盘来引导当前 Linux 发行版。如您所见,GRUB 是功能非常强大的引导装入器,它让您可以随意动态配置以进行引导。我将向您介绍如何创建 GRUB 引导菜单,这样就可以从菜单中进行 OS 选择,而不是输入三行命令来引导 Linux。但在动手之前,现在是深入了解 GRUB 幕后是如何工作的好时机。我将说明引导盘引导过程的工作原理,这样您就可以对 GRUB 有一个更好的评价和了解。

www.gzusb.com

两阶段过程
要制作引导软盘,需要做两件事 -- 将文件复制到软盘的 ext2 文件系统的 /boot/grub 目录中,运行 GRUB 的安装程序。运行 GRUB 安装程序时,GRUB 将 "stage 1" 装入器安装到软盘的引导记录中。它还将 stage 1 装入器配置成从 ext2 文件系统直接装入 stage2。通常,GRUB 通过在包含 stage2 数据的软盘上创建一列块来完成此操作,这样 stage1 装入 stage2 时不必知道 ext2 文件系统的任何情况。
但是,大多数情况下,GRUB 在安装完 stage1 之后,会立即将 stage1.5 装入器安装到引导记录中。这个特殊的 stage1.5 允许无需使用原始块列表就能从 ext2 文件系统装入 stage2,却要更灵活的标准基于路径的方法。GRUB 理解文件系统结构的这一能力使 GRUB 比 LILO 更强壮。例如,如果正好在整理引导盘文件系统的碎片,stage1 就可以找到 stage2(归功于 ext2 stage1.5)。而 LILO 就不能完成此项操作。因为 LILO 只能依赖于映射文件,每次更新内核或在磁盘上物理移动数据时,即使不更改路径,也需要重新运行它。

www.gzusb.com

阶段 1、1.5 和 2 第 3 页
您也许会想知道:如果使用 FAT 而不是 ext2 文件系统创建引导盘,GRUB 是否可以工作。是的,它可以工作,因为在输入 "setup (fd0)" 时,GRUB 会安装与 root 文件系统类型匹配的 stage1.5。即使没有没有空间可以安装 stage1.5,GRUB 仍可以通过追溯到更原始的块列表,来装入 stage2
搜索和恢复
在继续讨论之前,先研究一个与引导软盘相关的实用提示。由于 GRUB 的交互式性质,它为恢复软盘生成了一个很好的引导装入器。但是,如果将好的内核复制到引导盘上,那它就更好了。那样,即使硬盘上的内核坏了或者被意外删除了,也可以追溯到引导盘内核,并启动和运行系统。要将备用内核复制到引导盘,执行以下操作:
# mount /dev/fd0 /mnt/floppy
# cp /path/to/bzImage /mnt/floppy/boot
# umount /dev/fd0
现在,软盘已包含备用内核,可以在 GRUB 中使用它来引导 Linux 发行版,操作如下: 瑞和数码
grub> root (fd0)
grub> kernel /boot/bzImage root=/dev/hda5 (将 /dev/hda5 更改成想要引导的分区名称)
grub> boot
硬盘引导

论坛徽章:
0
9 [报告]
发表于 2011-05-27 13:17 |只看该作者
参考  一块硬盘多个 os的引导
分区时,最好一次成功,不要给后面安装操作系统带来麻烦。比如空间的大小,分区的个数等。主、扩展以及逻辑分区的个数。这些都是最重要的。

  1.硬盘划分为什么很重要?

  您可以用dos下的PQ,可能这是最简单的分区工具了。主分区最好只有一个,扩展分区也是一个了。逻辑分区那就根据自己的需要来分。分区要规划好,以防为以后安装操作系统带来麻烦。要有个预期,也就是说,以防您以后安装操作系统,而没有空间。所以我们就要划分硬盘要好好的规划。以满足我们未来不可预期情况的需要。

  2.我应该把硬盘划分为多少个区,每个区应该有多大?

  对于这个问题,可能有的弟兄很是疑惑。其实对于我们玩家来说,无非是学习和实践。所以我们要为每个linux划分为一个区,空间大小为6G以上。现在的linux体积都很大,如果是初次玩linux,我还是建议完全安装,这样便于您的学习,否则少东少西的,自己都不知道为什么。等玩的技术差不多时,你再拫据自己的需求来选择安装组件。

  举个例子,比如我想在一块硬盘上安装两个linux和一个 windows,那我就可以这样来划分硬盘。把windows的分区放在硬盘的第一个分区。这个分区大家常用来安装windows系统。如果您还想为 windows划分应用程序的分区以及备份文件的分区,那就把第二个和第三个等分区做为windows的分区。linux分区要放在windows的分区的后面,应该避免把windows和linux的分区交叉。我们可以用PQ把linux分区分好。为每个linux分一个大一点的分区6G以上,这里,我们将要在每个分区里,要安装一个linux,其实每个6G左右的分区,就是我们要安装linux的根分区。然后再划分一个小一点的分区,大小为内存的两倍就行。如果用PQ来划分。linux的分区格式,可以不用指定。因为安装系统时,也会有相关的步骤来格式化磁盘。

  仔细看一下下面的例子:

  在这里,我把安装了,两个linux和一个windows,分区情况如下。主分区是hda1,格式为ntfs,系统是XP,hda2是扩展分区,hda5是逻辑分区,格式为nfts,是windows的安装应用软件的磁盘,hda6,hda7是逻辑分区,格式为fat32的,也是windwows用的,我用来备份和存放常用程序和文档的磁盘。hda8和hda9是 linux的磁盘。看一下应该能看得出来,大小为6-7G左右吧。在hda8和hda9,我每个区都安装了一个linux,也就是说,这两个分区是不同的 linux的/根分区。hda10也是linux的磁盘,大小是内存的1.5倍,如果您的内存为512M或者以上的,交换分区和内存大小一样就行,格式为 /swap.也就是linux的交换分区。

  Linux的分区,没有windows下面的C盘和D盘的概念。这一点大家应该明白。

  一块磁盘最多只能分4个主分区。扩展分区也算一个主分区,所以为了简便,我们一块硬盘就分一个主分区,一个扩展分区,其它的都是逻辑分区。下面的例子就是。这样做的好处就是在安装linux的时候,分区表不会错,也不会出现这样或者那样危机windows分区的情况。

  在linux中,逻辑分区是从hda5开始的,当然这是说一台机器中只有一个硬盘的情况来说的。如果有两个硬盘,可能就是从hdb5开始,以此类推。如果您不知道,是怎么回事,就要用fdisk -l来查看。要安装系统的时候,也会有相应的让您选择安装位置 ,也是hdaX或者 hdbX分区之类的,没有WIN的C和D盘的概念。

  [root@linuxsir01 root]# fdisk -l
  Disk /dev/hda: 255 heads, 63 sectors, 4865 cylinders
  Units = cylinders of 16065 * 512 bytes
  Device Boot Start End Blocks Id System
  /dev/hda1 * 1 1147 9213246 7 HPFS/NTFS
  /dev/hda2 1148 4864 29856802+ f Win95 Ext'd (LBA)
  /dev/hda5 1148 2039 7164958+ 7 HPFS/NTFS
  /dev/hda6 2040 2804 6144831 b Win95 FAT32
  /dev/hda7 2805 3824 8193118+ b Win95 FAT32
  /dev/hda8 3825 3830 7768163+ 83 Linux
  /dev/hda9 3831 4799 7783461 83 Linux
  /dev/hda10 4800 4864 522081 82 Linux swap

  3.硬盘的分区划好后,我如何安装linux呢?

  我们可以先安装windows,然后再安装linux,这样做的目的就是用grub能把windows引导起来。如果先安装linux,可能windows就把grub从MBR中删除。我们如果重装windwows 经常会出现这样的情况,方法只是把GRUB恢复一下就行了。所以为了方便,我们还是先安装windows.这样就减少不少劳动。呵……

  接着举例:

  在这里,我是先安装Mandrake 9.0,到hda8,这样做的,在安装过程中,有个[自定义],在划分硬盘和安装软件时都有[自定义].我们就选这一项,然后把光标移动到hda8,[编辑,指定分区格式和挂载点。格式为ext3,挂载点为/.OK一下,然后再移动hda10,我们编辑这个分区,格式为/swap.这样就简单了。分区都处理好了,就是选择组件来来装。下面就是点鼠标。应该简单……一直到最后。

  然后我们安装redhat 8.0到hda9,也就是说,我们要把redhat 8.0的根分区设置为hda9.安装过程也一样的……在划分磁盘是,要[自定义]用disk druid 来分区。光标移动到hda9,然后[编辑],格式为ext3,挂载点为/,可能会跳出一个对话框,那就anyway.吧。不用再编辑交换区了,因为系统能认得出hda10是交换区,不用我们再设置了。linux的交换区是能共用的。我们把hda9设置好后,确认一下,就进入软件安装的过程了。也是[自定久]……下面的就一路下去,不用我多说了。

  到GRUB的设置的那一块。我们要把GRUB安装到MBR上。这样就把mandrake的GRUB覆盖。这也没有什么可怕的,我们可以把它加在Redhat 的GRUB中,系统安装好后,我们设置一下就行了。只是修改一个文件/etc/grub.conf

  4.如何修改/etc/grub.conf

  一般的发行版,GRUB的配置文件都在/etc /grub.conf中,如果我们安装了多个linux,就要修改这个文件。那我们如何修改呢?一般的情况下,windows是自动加载到了 grub.conf中,打开grub.conf,就能看到windows的设置情况。可能有时系统会突然出现不能引志windwows的情况,我们就要下面的类似的改动一下。

  title DOS
  rootnoverify (hd0,0)
  chainloader +1

  改成

  title WinXP在这里,title是必须的,WinXP,您可以用别的名,您喜欢怎么样就怎么样。
  root (hd0,0)
  chainloader +1

  这样就能启动了。

  5.如何把其它的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的引导菜单,用上下健选中所要启动的linux系统,然后按字母“e”,进入编辑模式。之后再选中系统的启动内核项(如:kernel (hd0,0)/boot/vmlinuz or root= /dev/hda1 )再次按字母“e”,出现grub>;提示,
如下:
grub>;kernel (hd0,0)/boot/vmlinuz or root=/dev/hda1
在上面的hda1后空一格,输入init n(init 和n之间有空格,其中n为要求系统进入的运行级别,1 为单用户模式,在这个模式下默认 root用户登陆,不要求密码,所以可以在忘记root密码的情况下在这里修改root用户的密码,2 为多用户文本模式(没有NFS),3 为完整的多用户模式(文本),5 为XWINDOWS模式)

完成后如下:

grub>;kernel (hd0,0)/boot/vmlinuz or root=/dev/hda1 init 1

然后回车确认,自动返回前一页面,然后再按字母“b”启动系统就可以以修改后的运行级别进入系统,(在这里的修改只影响本次启动,不会修改系统的/etc/inittab文件)。

论坛徽章:
0
10 [报告]
发表于 2011-05-27 13:29 |只看该作者
好,现在如何将 GRUB 安装到硬盘上?这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件从 /usr/share/grub/i386-pc 复制到该目录中。可以通过重新引导系统并使用引导盘,或者使用驻留版本的 GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。现在,只差一步。
接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):
grub> setup (hd0)
如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

瑞和数码


grub> setup (hd0,4)
现在,已安装 GRUB。引导系统时,应该立即以 GRUB 的控制台方式结束(如果安装到 MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。
引导菜单
要创建菜单,只需在 /boot/grub 中创建一个简单的文本文件 menu.lst。如果将它放在正确位置,它将在 root GRUB 驱动器的 stage1 和 stage2 文件的旁边。这里是一个样本 menu.lst 文件,可以将它作为一个您的菜单的基础:
default 0
timeout 30
color white/blue blue/green
title=Boot Linux
root (hd0,4)
kernel /boot/bzImage root=/dev/hda5
title=Boot Linux using initrd
root (hd0,5)
kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gz
initrd /initdisk.gz
title=Windows NT
root (hd0,3)
chainloader +1
我将在以下的屏面中说明 menu.lst 格式。
理解引导菜单
引导菜单很容易理解。前三行设置缺省菜单项(项目号 0,第一个)、设置超时值(30 秒),并选择整个菜单的一些颜色。 优盘之家
接着的三行配置 "Boot Linux" 菜单项。要创建手工引导命令系列之外的菜单项,只要添加一行 "title=" 作为第一行,并从最后一行中除去 "boot" 命令(GRUB 会自动添加这个命令)。
接着的四行显示了如何使用 GRUB 来引导 initrd(初始 root 磁盘),如果您愿意的话。现在,讨论最后三行……
链式装入器
这里是示例 menu.lst 的最后三行……
title=Windows NT
root (hd0,3)
chainloader +1
这里,我添加了一项来引导 Windows NT。要完成此操作,GRUB 使用了“链式装入器”。链式装入器从分区 (hd0,3) 的引导记录中装入 NT 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。
GRUB 的弹性
GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

瑞和数码

只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

GRUB多重启动管理器
1. 什么是grub
  grub 是一个多重启动管理器。grub是GRand Unified Bootloader的缩写,它可以在
多个操作系统共存时选择引导哪个系统。它可以引导的操作系统包括Linux,FreeBSD,So
laris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000。它可以载入操作系
统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Win
dows 98)来完成引导。
2. grub的特点
  grub可以代替lilo来完成对Linux的引导,特别适用于linux与其它操作系统共存情

www.gzusb.com

况,与lilo相比,它有以下特点:
支持大硬盘
  现在大多数Linux发行版本的lilo都有同样的一个问题:根分区(/boot分区)不能分
在超过1024柱面的地方,一般是在8.4G左右的地方,否则lilo不能安装,或者安装后不
能正确引导系统。而grub就不会出现这种情况,只要安装时你的大硬盘是在LBA模式下,
grub就可以引导根分区在8G以外的操作系统。
支持开机画面
  grub支持在引导开机的同时显示一个开机画面。对于玩家来说,这样可以制作自己
的个性化开机画面;对于PC厂商,这样可以在开机时显示电脑的一些信息和厂商的标志
等。grub支持640x480,800x600,1024x768各种模式的开机画面,而且可以自动侦测选择
最佳模式,与Windows那320x400的开机画面不可同日而语。
两种执行模式
  grub不但可以通过配置文件进行例行的引导,还可以在选择引导前动态改变引导时

www.gzusb.com


的参数,还可以动态加载各种设备。例如你在Linux下编译了一个新的核心,但不能确定
它能不能工作,你就可以在引导时动态改变grub的参数,尝试装载这个新的核心进行使
用。Grub的命令行有非常强大的功能,而且支持如bash或doskey一样的历史功能,你可
以用上下键来寻找以前的命令。
菜单式选择
  在lilo下,你需要手工输入操作系统的名字来引导不同的操作系统。而grub使用一
个菜单来选择不同的系统进行引导。你还可以自己配置各种参数,如延迟时间,默认操
作系统等。
分区位置改变后不必重新配置
  lilo是通过读取硬盘上的绝对扇区来装入操作系统,因此每次分区改变都必须重新
配置lilo,例如你用PQ magic调整了分区的大小,那lilo在你重新配置好之前就不能引
导这个分区的操作系统了。而grub是通过文件系统直接把核心读取到内存,因此只要操 www.gzusb.com
作系统核心的路径没有改变,grub就可以引导系统。 除此之外,Grub还有许多非常强大
的功能。例如支持多种外部设备,动态装载操作系统内核,甚至可以通过网络装载操作
系统核心。Grub支持多种文件系统,支持多种可执行文件格式,支持自动解压,可以引
导不支持多重引导的操作系统等。
3. grub的使用
安装grub
  如果已经安装了蓝点Linux2.0则grub是默认安装的。要把grub重新安装到主引导扇
区上,只需要简单打入makebootable命令就可以了。
制作grub启动盘
  首先确定grub已经安装,然后进入grub的目录,键入:
  #cd /boot/grub
  放入一张软盘,然后敲入命令:
  #dd if=stage1 of=/dev/fd0 bs=512 count=1
  #dd if=/stage2 of=/dev/fd0 bs512 seek=1
  这样就可以做好一张启动盘了。
开机

U盘之家

  安装了grub开机后会出现一个菜单,列出所有的启动选项。如果设置了启动画面则
会显示启动画面,按Esc键则可以取消启动画面显示菜单选项。蓝点Linux所带的grub的
命令提示是全中文的,在菜单下面详细列出如按e是编辑启动命令,按c是使用命令行等
。用上下键可以选择菜单项,按回车启动所选项。按e键可以编辑所选项的启动命令,你
可以用这个功能临时改变你的系统的启动参数,参见配置grub一节。按c键则进入命令行
模式。   
  在命令行模式下可以打入命令直接执行,例如你可以敲入poweroff关闭计算机。按
Tab键可以列出所有支持的命令。蓝点Linux已经把grub汉化了,其中一部分命令敲入名
字后会给出中文提示,显示命令的用法和参数。
4. 配置grub
  grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此

www.gzusb.com


文件则不进入菜单模式而直接进入命令行模式。
  menu.lst 是一个文本文件,你可以用任何一个文本编辑器来打开它。每一行代表一
个配置命令,如果一行的第一个字符为井号"#"则这一行为注释,你可以简单地用增加或
减少注释行来改变配置。
编辑menu.lst,一般会有以下各行
timeout second
设定在second秒之后引导默认的操作系统。
蓝点Linux默认是timeout 5,就是5秒没有其他指令就引导系统,如果设成-1,则grub会
一直等待直到用户选择一个选项为止。
default num
默认启动第num+1行选项,也就说default=0则默认启动菜单第一行的操作系统,defaul
t=1则启动第2行的系统,如此类推。
splash pathname/filename
指出开机画面的文件所存放的路径和文件名,如 splash /boot/logo/800x600x8.img 是
指用在/boot/logo路径下的800x600.img文件作为开机画面

U盘之家


title OSname title
后面的字符就是你在菜单项上所看见的选项,你可以写上操作系统的名字和描述,如用
title BluePoint Linux, Single Mode 代表这一选项是引导蓝点Linux的单用户模式。
下面结合两个系统引导描述来解释几个引导选项的意义
title BluePoint Linux, Default Mode
root (hd0,1)
kernel /boot/vmlinuz vga=auto root=/dev/hda2
hd0是指第一个硬盘(主硬盘) (hd0,1)是指第一个硬盘的第二个分区。 kernel /boot/v
mlinuz 是指出Linux核心的路径在/boot/vmlinuz中。vga=auto 是设定显示模式,root
=/dev/hda2是指把第一个硬盘的第二个分区作为根挂载点("/")。
title Microsoft Windows
root (hd1,0)
chainloader (hd1,0)+1
root (hd1,0)这是指第二个硬盘(从硬盘)上第一个分区
chainloader (hd1,0)+1 装入一个扇区的数据然后把引导权交给它。
5. 从软盘启动grub

U盘之家

  制作启动盘后可以用软盘启动引导硬盘上的操作系统 插入制作好的启动软盘,进入
BIOS设定软盘启动。软盘启动成功后就会进入grub的命令行模式
grub>
  要启动一个操作系统,首先指定引导哪个分区上的系统,例如要引导指第一个硬盘
上的第一个分区的操作系统,先键入
grub>root (hd0,0)
  接着如果要启动的是Windows系统,键入
grub>chainloader (hd0,0)+1
  注意(hd0,0)要随着硬盘和分区的不同而改变数字。 如果要引导Linux或其他系统,
应键入
grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
  注意hda1参数也要随着硬盘和分区的不同而改变,如从第二个硬盘的第一个分区引
导则用hdb1。
  最后敲入boot就可以启动系统了。
  在任何时候不能确定命令或者命令的参数都可以按Tab获得相关的帮助。用上下键可 www.gzusb.com
以获得命令的历史记录。 其实这些命令就是menu.lst的启动描述,您也可以根据那些描
述来自己键入启动命令,最后敲入boot就可以引导系统了。
 
GRUB使用说明
从Red Hat Linux 7.2起,GRUB(GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。相信LILO对于大家来说都是很熟悉的。这次Red Hat Linux用GRUB代替LILO,可见GRUB大有过人之处。不过,相对于LILO来说,大家对GRUB还是要陌生一些。本文将对GRUB的基本情况、术语、接口、命令以及配置文件做个介绍,希望对大家有所帮助。
  一、GRUB的概述
  在Red Hat linux装载一个系统前,它必须由一个引导装载程序(boot loader,启动管理程序)中的特定指令告诉它去引导系统。这个程序一般是位于系统的主硬盘驱动器或是其他知道如何去开始linux内核的媒介驱动器上。
  如果说一个x86系统只安装了Red Hat Linux而且只有一个版本的linux内核,那么通过引导装载程序开始Red Hat Linux的特定过程就不重要了。Red Hat Linux安装程序允许用户快速方便地配置引导装载程序存放在主硬盘驱动的主引导记录中来引导操作系统。 U盘之家
  然而,为了能从多个linux内核或其他操作系统引导,那么就很有必要了解Red hat linux用于提供必要的引导选项的方法,以及理解引导的过程与如何去改变。
  本文是讨论GRUB,它是Red Hat Linux用来在x86系统上装载操作系统的默认方法。同时,本文也将详细介绍用于控制引导过程的各种命令和配置选项。
  GRUB的定义
  GNU GRUB(GRand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来装载一个GRUB菜单或是GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数(如可用的RAM大小)。
  x86的引导过程
  当一个x86机器启动后,系统BIOS开始检测系统参数,如内存的大小、日期和时间、磁盘设备、以及这些磁盘设备用于引导的顺序等。通常情况下, BIOS都是被配置成首先检查软驱或光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区,寻找用于装载操作系统的指令。这些最初的扇区-主引导记录-开始装载一个预选择操作系统的过程,一个操作系统选项贩 GRUB菜单,或是一个执行特定选项的GRUB命令行接口。  瑞和数码
  装载GRUB和操作系统的过程,包括以下几个操作步骤:
  1、装载基本的引导装载程序,这通常是第一步。基本引导装载程序必须是位于主引导扇区中一个非常小的空间,少于512字节。因此,基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。这主要是归结于在主引导扇区中没有足够的空间用于其他东西了。
  2、装载第二引导装载程序,这通常称为第二步。这第二引导装载程序实际上是引出更高级的功能 ,以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。
  3、装载在一个特定分区上的操作系统,如linux内核。一旦GRUB从它的命令行或是配置文件中,接到开始操作系统的正确指令,它就寻找必要的引导文件,然后把机器的控制权移交给操作系统。


  注意
  在一些文件系统以及文件系统的配置中,可能需要一个1.5步的文件,用来连接基本引导程序与第二引导程序之间的差异。 www.gzusb.com
  举个例子来说,如果第二步中的引导装载程序文件位于一个使用了第一步引导装载程序所不能访问的文件系统的分区中,那么就可能需要指示第一步引导装载程序,从1.5步文件中载入附加的指令来读取第二步引导装载程序的文件。更多相关的信息,请参考GRUB的信息页。
  前面所提到的引导方法被称为直接装载。因为这种方法中使用的是直接装载操作系统的指令,没有用到任何在引导装载程序和操作系统主文件(如内核)之间的中间代码。然而,不同操作系统所采用的引导过程可能会与上面提到的有一些细微的不同。例如,微软的DOS和Windows操作系统在安装时,倾趋于完全重写主引导记录,而不是合并当前的主引导记录的配置。这将破坏掉其他操作系统保存在主引导记录中的所有信息,如Red Hat Linux。微软操作系统,还有一些其他的专有操作系统,都是使用一种称为链式装载的引导方法来启动的。在这种方法中,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。 瑞和数码
  GRUB支持直接和链式装载的引导方法。GRUB能用于几乎所有操作系统,绝大多数流行的文件系统,以及几乎所有的系统BIOS所能识别的硬盘。
  GRUB的特性
  GRUB包含许多特性,这使得GRUB比其他可用的引导装载程序更加优越。下面列出一些比较重要的特性:
  ·GRUB在x86机器上,提供一个真正基于命令行的,先于操作系统(pre-OS)的环境。它对于用确定的选项装载操作系统或收集系统信息方面,提供了最大程度的适应性。许多非x86的体系结构已经使用先于操作系统环璄许多年了,它提供控制系统如何从一个命令行引导。当LILO或其他x86引导装载程序使用了一些命令特性的时候,GRUB已经包含了许多这方面的特性。
  ·GRUB支持逻辑块寻址(LBA)方式。LBA将用于寻找驱动器上文件的地址转换工作置于驱动器的硬件中,它被用在许多IDE和所有的SCSI硬盘中。在使用LBA之前,硬盘驱动器遇到一个1024柱面的限制,即BIOS不能找到在1024柱面后的文件(比如一个引导装载程序或是内核文件)。只要系统BIOS能支持LBA模式(大多数都支持),那么LBA就允许GRUB超越 1024柱面的限制,引导操作系统。

U盘之家


  ·GRUB的配置能在每次系统引导时被读取。这就避免了用户每次改变引导选项时都要重写一次主引导记录。大多数的引导装载程序都不能很老道地读取配置文件,并使用它们来设置引导选项。比如说,用户必需改变一个LILO的配置文件,然后运行一个命令将新的配置数据重写回系统的主引导记录。这种方法比 GRUB所采用 的方法更加危险,因为一个错误配置的主引导记录将让系统无法引导。在使用GRUB中,如果说配置文件被错误配置并且引导,那它也仅仅简单地转到一个默认的命令行,允许用户手工输入命令来运行操作系统。除开更新系统引导的第一步、第二步、或是菜单配置文件的位置,主引导记录是不会被触及到的,而这种情况是很少发生的。
  注意:
  当GRUB的配置文件发生改变时,没有必要重新启动GRUB。所有的改变都能被自动地检测到。如果GRUB被重新启动,那么用户将退回到命令行方式的GRUB外壳下。




  安装GRUB 
  如果在Red Hat Linux的安装过程中,GRUB没有被安装,下面将说明如何安装它,并将它设为默认的引导装载程序。
  注意:如果LILO已经被安装,并且是当前的系统引导装载程序,那并没有必要为了使用GRUB而删除它。GRUB一旦安装后,将做为系统默认的引导装载程序。
  首先,获取最新可用的GRUB包。在Red Hat Linux安装光盘上的GRUB包也可以使用。
  其次,在一个外壳提示下,运行命令/sbin/grub-install ,这里的是GRUB将要被安装的位置。比如说:/sbin/grub-install /dev/hda
  最后,重新引导系统。GRUB图形引导装载菜单将出现。  二、GRUB的术语
  在使用GRUB前,最重要的事情之一就是理解这个程序是如何引用设备的,如系统硬盘驱动器、分区等。对于配置GRUB实现多操作系统的引导,这方面的信息是很重要的。
  设备名称

www.gzusb.com

  系统的第一个硬盘驱动器被GRUB称为(hd0)。在它上面的第一个分区被称为(hd0,0),第二个硬盘驱动器上的第5个分区被称为(hd1,4)。通常使用GRUB时,文件系统习惯上采用下面的方式命名:
  (,)
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP