grub

 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.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 <-- 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后的数字。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参数。

 

 

 

 

 

 

 

 

 

 


June 16, 2004
决战initrd (lilo grub)
今天遇到的问题就是这玩意儿坏了

lilo 引导提示
Kernel Panic

可以在启动菜单时选择 p 然后 ctrl+x 进入提示符
boot: linux 1 noinitrd
进去
然后删除 initrd=/boot/initrd-2.4.20-28.7.img 那一行

grub 引导的话 e 编辑命令行 kernel 后面加上 single 就可进入单用户模式


/initrd RH7.3 里面是有的 从什么时候开始有没注意 印象里这个目录还不能删 即便为空

lilo 引导
一般会有
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
restricted
password=ursecret
linear

image=/boot/vmlinuz-2.4.20-28.7
        label=linux
        root=/dev/hda1
        read-only
        initrd=/boot/initrd-2.4.20-28.7.img

grub 引导
一般是
% more /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,0)
#          kernel /boot/vmlinuz-version ro root=/dev/hda1
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
password --md5 $1$***.
title Red Hat Linux (2.4.20-28.7)
        root (hd0,0)
        kernel /boot/vmlinuz-2.4.20-28.7 ro root=/dev/hda1
        initrd /boot/initrd-2.4.20-28.7.img

initrd.img 一般是系统启动需要事先装载的模块 比如硬件驱动等


-----> http://www.linuxsir.org/bbs/showthread.php?s=&threadid=22081
/bin - 用来贮存用户命令。 目录 /usr/bin 中也贮存了一些用户命令。
/sbin - 许多系统命令的贮存位置,例如 shutdown。目录 /usr/bin 中也包括了许多系统命令。
/root - 根用户(超级用户)的主目录。
/mnt - 该目录中包括的典型内容是系统引导后被挂载的文件系统的挂载点。 譬如,默认的光盘挂载点是 /mnt/cdrom。
/boot - 包括内核和其它系统启动时使用的文件。
/lost+found - 被 fsck 用来放置零散文件(没有名称的文件)。
/lib - 包含许多被 /bin 和 /sbin 中的程序使用的库文件。 目录 /usr/bin 中含有更多库文件。
/dev - 贮存设备文件。
/etc - 包含许多配置文件和目录。
/var - 用于贮存"多种"文件,例如日志文件和打印机假脱。
/usr - 包括与系统用户直接有关的文件和目录。
/proc - 一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。
/initrd - 用来在计算机启动时挂载 initrd.img 映像文件的目录以及载入所需设备模块。
警告
不要删除该目录。如果你删除了该目录再重新引导 Red Hat Linux 时,你将无法引导你的机器。
/tmp - 一个用户和程序的"草稿本"。 /tmp 有全局读写权。
/home - 用户主目录的典型位置。

----->   http://linuxfans.org/nuke/software/Redhatdoc/rhl-ig-x86-zh_CN-9/ch-bootopts.html
Red Hat Linux 9: Red Hat Linux x86 安装指南
--------------------------------------------------------------------------------
附录 H. 附加引导选项
该附录讨论 Red Hat Linux 安装程序中提供的附加引导和内核引导选项。

要使用这里提到的任何一个引导选项,在安装 boot: 提示下键入你想启用的命令。

例如:

boot: text
     
 


引导时的命令参数

apic
该命令绕过在 Intel 440GX 芯片集 BIOS 中可能会普遍遇到的错误,它只应该使用安装程序内核来执行。

apm=allow_ints
该命令改变挂起服务的处理方式(对于某些便携电脑来说可能是必要的)。

apm=off
该命令禁用 APM(高级电源管理)。它很有用处,因为某些 BIOS 的电源管理(APM)问题重重,很容易崩溃。

apm=power_off
该命令会使 Red Hat Linux 默认关闭(断电)系统。它对于不默认关闭的 SMP 系统来说有用。

apm=realmode_power_off
某些 BIOS 在试图关闭(断电)机器时崩溃。该命令把操作方法从 Windows NT 方式改为 Windows 95 方式。

dd
这个参数会导致安装程序提示你使用驱动程序盘。

display=IP:0
该命令允许远程显示转发。其中,IP 应该用你想充当显示系统的 IP 地址替换。

在你想用来显示的系统上,你必须执行 xhost +remotehostname 命令,这里的 remotehostname 是你运行显示命令的主机名称。使用 xhost +remotehostname 命令限制了对远程显示终端的访问,而且不允许来自没有被确切授予远程访问权的人员和系统的访问。

driverdisk
该命令执行的功能和 dd 命令相同,它还会在 Red Hat Linux 安装中提示你使用驱动程序盘。

expert
该命令会启用下列特殊功能:


允许在可移介质上分区

提示插入驱动程序盘


ide=nodma
该命令禁用所有 IDE 设备上的 DMA,在遇到 IDE 相关的问题时可能有用。

isa
该命令提示你输入 ISA 设备配置。

linux upgradeany
该命令会放松对你的 /etc/redhat-release 文件的某些检查。如果你的 /etc/redhat-release 文件已从默认内容被改变了。在试图升级 Red Hat Linux 9 时就可能会找不到你的 Red Hat Linux 安装。

lowres
该命令强制图形化(GUI)安装程序使用较低的分辨率运行(640x480)。

mediacheck
该命令给你提供测试安装源完好性的机会(如果使用的是基于 ISO 的方法)。在试图安装前先校验 ISO 映像的完整性会帮助你避免在安装中经常遇到的问题。

mem=xxxM
该命令允许你超越内核在机器上检测到的内存数量。在某些较老的仅检测到 16 MB 的系统上,以及某些较新的视频卡与主内存共享视频内存的机器上,你可能需要使用该命令。当执行这项命令时,xxx 应该用以 MB 为单位的内存数量替换。

nmi_watchdog=1
该命令启用内建的内核死锁检测器。它可以用来调试硬性内核锁定。通过执行定期的 NMI(不可屏蔽中断)中断,内核可以监控 CPU 是否被锁,并在需要时打印出调试消息。

noapic
该命令告诉内核不要使用 APIC 芯片。它对于某些带有不良 APIC(如 Abit BP6)或错误重重的 BIOS 的母板有帮助。

noathlon
该命令告诉内核禁用 Athlon 优化。若 Athlon 优化在某些芯片集上被发现无效,它就会起到作用。

noht
该命令禁用超线程(若在 SMP 系统中可用)。

nomce
该命令禁用在 CPU 上执行的自我诊断检查。内核默认启用 CPU 的自我诊断(称为机器检查意外,Machine Check Exception)。在一些较老的 Compaq 机器上,这类检查运行的太频繁,可能需要禁用。

nopass
该命令禁止把键盘和鼠标信息传递给安装程序的第二阶段。当执行网络安装时,它可以用来在安装的第二阶段测试鼠标和键盘配置屏幕。

nopcmcia
该命令忽略系统上的任何 PCMCIA 控制器。

noprobe
该命令禁用硬件检测,相反,它提示用户来提供硬件信息。

noshell
该命令禁止在安装时进入第二虚拟控制台上的 shell。

nousb
该命令禁止在安装中载入 USB 支持。如果安装程序在进程早期容易挂起,该命令就能够起到作用。

nousbstorage
该命令在安装程序的载入程序中禁止载入 usbstorage 模块。它对 SCSI 系统上的设备排序可能有帮助。

reboot=b
该命令改变内核试图重新引导机器的方式。 如果系统关闭时内核被挂起,该命令会导致系统被成功地重新引导。

rescue
该命令将会运行救援模式。关于救援模式的详细信息,请参阅 《Red Hat Linux 定制指南》。

resolution=
告诉安装程序要运行哪种视频模式。它接受所有标准的分辨率,如 640x480、 800x600、 1024x768 等等。

serial
该命令启用串行控制台支持。

skipddc
该命令跳过 ddc 显示器探测, 这种探测在某些系统上会导致问题。

text
该命令禁用图形化安装程序,并强制安装程序在文本模式下运行。

updates
该命令会提示你插入包含更新(错误修正)的软盘。如果你执行的是网络安装,并且已把更新映像存放在服务器上的 RHupdates/ 目录下,则不需要使用该命令。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值