系统启动之——grub4dos篇

1.1  grub简介

GRUB 是一个遵从Multiboot(多重启动)规范的启动管理程序。现在接触到的有3种,即GNU Grub Lagecy , GNU Grub2 和 Grub for dos(grub4dos)。

GNU GRUB Lagecy其实就是原来的 GNU GRUB 0.xx ,最新版是2005年发布的GNU GRUB 0.97。 目前已停止开发,并改名为 GNU GRUB Lagecy。

GNU GRUB2是第二代GRUB,它将取代原来的GNU GRUB(例如0.9x版),但目前还处于开发阶段,尚未发布正式版。

GNU GRUB Lagecy和GNU GRUB2都是 GNU 组织的项目。

GRUB for DOS(GRUB4DOS)是一个以 GNU GRUB 为基础的功能强大的引导器。它可以在 DOS 和 LINUX下运行,也可以通过其他引导器来运行,还可以作为MBR运行。GRUB4DOS内置了功能完善的 BIOS 级磁盘仿真。
GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重 操作系统 启动管理器。用来引导不同系统,如windows,linux。
在X86 架构的机器中,Linux、BSD 或其它Unix类的 操作系统 中GRUB、LILO 是大家最为常用,应该说是主流。

Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 7后,我们再安装一个Windows 8 ,在机器启动的会有一个菜单让我们选择进入是进入Windows 7 还是进入Windows 8。NTLOADER就是一个多系统启动引导管理器,(这里不多介绍~在接下来日志会有)

grub4dos0.4.4下载地址:    grub4dos-0.4.4-2009-01-11.zip (806.54 KB, 下载次数: 20) 

     1.2  通过mbr启动grub (命令修改)
GRUB4DOS:(占用18个扇区,老版本占用16个扇区)是强大的引导程序,可以安装在MBR ,也可以安装在分区 PBR ,若安装在MBR,则可以搜索所有分区,启动其指定文件-GRLDR(不需读入分区PBR) ,从而正常启动。
引导过程为: MBR → grldr

通过软件包里的bootlace.com(可运行于DOS/Win9x)安装GRLDR引导记录到硬盘或者硬盘映像文件的主引导记录,或者安装到软盘或者软盘映像的引导扇区。电脑启动时,通过击热键(默认为空格键,可自定义)来启动grub。

比如:
在DOS下安装GRLDR代码到主引导记录:
bootlace.com 0x80

在DOS下安装GRLDR代码到软盘:
bootlace.com --floppy --chs 0x00

在DOS下安装GRLDR代码到软盘映像:
bootlace.com --floppy --chs floppy.img

我所使用的命令为:
bootlace --force-backup-mbr --boot-prevmbr-first --time-out=3 --hot-key=0x3920 --mbr-disable-floppy 0x80  
表示安装GRLDR代码到MBR时,备份原MBR(--force-backup-mbr),默认启动原MBR,即启动原windows xp系统(--boot-prevmbr-first),等待时间3秒(--time-out=3),热键为空格键(--hot-key=0x3920), 不搜索软盘上的GRLDR(--mbr-disable-floppy)。

也就是说启动时等待3秒,3秒内不击热键的话,启动windows xp;3秒内击热键则启动grub4dos。 

bootlace的其它参数及自定义热键用法可参看readme.txt文件。

装入mbr后,再将grldr和menu.lst文件复制到某分区的根目录(现在支持的文件系统是FAT12,FAT16, FAT32, NTFS,EXT2 or EXT3 的分区。对于Windows用户,最好是fat分区),menu.lst也可保存到其它指定位置。

此方法的优点是:不依赖于操作系统;能够自动搜索硬盘上各个分区的grldr文件。 

以上为用命令安装grub4dos,命令看上去比较复杂且不易操作,所以我们可以用bootice.exe(百度一下,就能下到)这个软件修改MBR和PBR
     
注:主引导记录可为其他形式如hdd+/zip/NT等、例如主引导记录为hdd+,pbr为grub4dos 可引导活动分区的grldr文件,读取menu.lst列表。pbr为NT时可引导NTLDR或BOOTMGR(修改PBR).
主引导记录为NT时同理,pbr可为NT/GRLDR/BOOTMGR,引导对应文件。

   1.4 如何使用grub4dos
A:  grub的启动菜单是由grldr读取menu.lst这个文件而来的,所以系统启动设备。进入grub启动界面后,有哪些系统,选择哪个系统进入,能否进入都取决于menu.lst这个文件,所以编辑menu.lst至关重要。
GRUB 里的设备命名法则 它使用了UNIX对设备的命名方法.比如我们拥有两块硬盘,那么采用这种形式(hdx,y), 这里,x,y, 都是从0开始计数的.所以两块硬盘是 (hd0,y),(hd1,y). 他们位于第一个sata接口上. 对 hd0 来说, 请看下图:
 

(注, C: 为第一主分区, 其他分区是扩展分区.由于主分区只能有四个,即 0,1,2,3, 所以第一个扩展分区的编号从 4 开始.)
这是硬盘,那么光驱采用(cd). 网络设备使用 (nd).
那么,这里就要提及 GRUB 里的一个很首要的概念了, 即 "根(/)", 或者 root. 其实,它就是一个源一样的东西,与草木的"根"相类似. 在GRUB中,其它的文件对象都域于此. 所以,一旦你指定了一个根,后续的操作除非显示地说明,否则都是对"根"而言的.
其实在某种意义上来说,和相对/绝对路径有点关联性. ;-) 正如,你所猜到的那样, GRUB 使用 root 命令来指定根设备(通常都是文件系统).

B:从U盘上的应用初步了解menu.lst的修改
在优盘上应用grub,与软盘类似,主要有两种方式,即通过DOS启动grub和把GRLDR引导记录安装到优盘的引导扇区。

使用bootice写入引导,使得U盘具有引导功能,然后设置BIOS从U盘启动或者开机按快捷键(这里不多介绍)

不同的启动模式,U盘启动进入dos后,在你的电脑上可能是A盘,也可能C盘。
由于u盘容量大,在u盘上就可以存放各种工具及WinPE。

当显示为A盘时,使用方法类似于软盘。

menu.lst文件中启动img镜像文件的用法如:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem 
(fd0) /boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

当显示为C盘时,使用方法类似于硬盘。

menu.lst文件中启动img镜像文件的用法如:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
map --mem
 (hd0,0) /boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

在上面的例子里,menu.lst中引用文件使用的是绝对路径,即(fd0)/boot/grub/gghost.img和(hd0,0)/boot/grub/gghost.img,这种用法对于特定的机子是没有问题的。但在同一U盘,要使用到不同机子时,可能带来一个问题。也就是可能不同的机子,要用不同的menu.lst文件,否则不能正常启动工具。那么,能否用什么办法,不用这么麻烦呢?答案是肯定的,那就是使用"find --set-root"和相对路径来实现。这样就不必为U盘被识别为fd还是hd烦恼了。

比如,你可以在u盘根目录建一个特征文件,如myudisk.txt

这样在启动u盘上的img镜像文件就可用下面的方法来实现:

title GreenGhost [Ghost v8.3/v11] (MAP-HOOK)
find --set-root /myudisk.txt
map --mem /boot/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

启动u盘上的WinPE就可用: 

title Micro Windows XPE (by LaoMaotao) 
find --set-root /myudisk.txt
chainloader /ldrxpe
本人硬盘上PE menu.lst:
title LAOMAOTAO PE
find --set-root /LMT.iso 
map /LMT.iso (0xff)
map --hook
chainloader (0xff)

title Ton8PE_V4.0
find --set-root /Ton8PE_V4.0.iso
map /Ton8PE_V4.0.iso (0xff)
map --hook
chainloader (0xff)
title   『YLMF PE』
find --set-root --ignore-floppies --ignore-cd /YlmF_PH/grub/back.gz || find --set-root /YlmF_PH/grub/back.gz
chainloader ()/YlmF_PH/grub/peldr

参考其它示例,通过编辑你的menu.lst,你就能够充分发挥U盘的效能。
具体的menu.lst今后会单独介绍。
先到这  有什么问题欢迎跟帖
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值