免费注册 查看新帖 |

Chinaunix

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

Grub 详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-20 16:35 |只看该作者 |倒序浏览
(一)安装
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.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 #boot=/dev/hda default=0 timeout=10 splashimage=(hd0,6)/grub/splash.xpm.gz # --> Redhat Linux 8.0  Microsoft
Windows XP
  
  配置选项解释:
  以"#"开头

是注释行。我这里有两个
操作
系统
,分别是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,第二个主分区为hda1,第一个逻辑分区为hda5,而在grub中是以(hdx,y)来标识

,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,1)依此类推。
  所以这儿root后面

是你

/boot所在分区标识。知道了内核在哪儿,还要具体指出哪个
文件
是内核
文件
,这就是ke
  rnel

工作。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来引导。
  (三)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
  现在,引导盘完成了。
 (四)恢复被
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上。
  (五)用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



分区位置也应该和你

系统
一致。
   安装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=15 default=C:\boot.lnx [operating systems] multi(0)disk(0)rdisk(0)partition(1)\ WINDOWS="Microsoft
Windows XP
Professional" /fastdetect [VGA mode]" /basevideo /sos C:\grub.lnx="Redhat Linux - GRUB"
  可以用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
  启动了吧!以上有些数字要根据你

实际情况更改。以上这个方法也可以用于测试新编译

内核。
  2.进入单用户模式。
  有时不小心把root用户密码忘了,只能进入单用户模式来重新设置root密码。方法如下:开机进入grub界面,按C进入命令行模式,然后按照上面

方法进行,只是在第三步要在后面加入single参数。
转自:http://blog.chinaunix.net/u1/46348/showart_396519.html


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28585/showart_404328.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP