前言: 为何写此初级教程?
假如你是第一次听说grub,你可能说我不需要grub。那么,你是否用过“一键ghost”,或者“矮人DOS工具箱”?如果你用过的话,那么你实际上已经在用grub了。包括本人的“GGhost一键恢复”在内的大多数windows下安装的一键恢复类工具及其它dos类维护工具合集,都是基于grub的。
grub4dos相关的资料互联网上并不少,grub4dos软件包里也有说明文件,可是绝大多数资料并不适合刚接触grub的人。初学者下载了grub4dos软件包后,即使大概看了readme.txt文件后,也很可能仍然是一团雾水,不知从何处入手。出现这种状况的一个主要原因是,此软件是作者利用业余时间开发的,开发者在有限的时间里集中精力于排除软件bug,从而无过多剩余精力撰写文档。[注:bean的中文文档的发布,已使文档方面欠缺的局面得以根本改观。]
其实,初步使用这个软件并不难,可以说非常简单。下面的内容参考了有关资料,并结合自己的使用经验,供初学者参考,希望能对你入门grub有所帮助。我自身也是接触grub不久,对grub的了解还很肤浅,错误之处,在所难免,还望不吝指出。
致谢
本文的完成,参考、引用了众多的资料,不少已找不到原始出处。初稿完成后,网友们提出了不少意见和建议,也得到了软件开发者的支持和鼓励。在此一并表示感谢。
lianjiang 2007.03 初稿
2009.04 最后修改
目录
1 grub4dos初级教程-入门篇
1.1 grub简介
1.2 如何获得grub4dos最新版
1.3 如何安装grub4dos
1.3.1 通过Windows NT的启动菜单进入grub4dos
1.3.2 通过DOS启动grub
1.3.3 通过mbr启动grub
1.3.4 通过Windows VISTA的启动菜单进入grub4dos
1.4 如何使用grub4dos
1.5 结言
2 grub4dos初级教程-应用篇
2.1 硬盘上的应用
2.1.1 加载软盘镜像
2.1.2 启动WinPE
2.1.3 启动系统
2.1.4 引导光盘镜像(ISO仿真)
2.2 光盘上的应用
2.2.1 grub引导的可启动光盘
2.2.2 BCDW引导GRUB的可启动光盘
2.3 软盘上的应用
2.3.1 通过DOS启动grub的软盘应用
2.3.2 引导扇区安装了GRLDR引导记录的软盘应用
2.4 优盘上的应用
2.5 结言
3 grub4dos初级教程-进阶篇
3.1 设置密码
3.2 菜单内置
3.3a 使用个性化grub4dos文件名 (grubinst)
3.3b 用批处理自动给grldr改名 (适用于最新版grldr)NEW!
3.4 安装Windows XPE到逻辑分区
3.5 利用savedefault命令传递参数的方法与应用
3.6 利用dd命令传递参数的方法与应用 NEW!
4 附录
grub legacy资料
4.01 Grub 命令索引
4.02 Grub 简体中文化版使用方法
4.03 GRUB安装配置使用汇总
4.04 Grub命令使用详解
4.05 GRUB三步通
4.06 Grub相关安装配置及使用实例汇总讲析
Grub2资料
4.07 GRUB2使用简介 by bean NEW!
4.08 GRUB2高级教程 by bean NEW!
Grub4dos资料
4.09 gfxmenu定制高级教程(新增可定制菜单) by bean NEW!
4.10 如何使用grubinst_gui by bean
Grub4dos官方文档
4.11 Grub4dos_tutorial (英文)
4.12 Grub4dos简介
4.13 Grub4dos安装和启动
4.14 Grub4dos新手指南
4.15 Grub4dos高级功能
4.16 Grub4dos命令索引
4.17 Grubinst使用介绍
4.18 Grub4dos readme (英文)
4.19 Grub4dos readme (中文) NEW!
1.1 grub简介
GRUB 是一个遵从Multiboot(多重启动)规范的启动管理程序。现在接触到的有3种,即GNU Grub Legacy , GNU Grub2 和 Grub for dos(grub4dos)。
GNU GRUB Legacy其实就是原来的 GNU GRUB 0.xx ,最新版是2005年发布的GNU GRUB 0.97。 目前已停止开发,并改名为 GNU GRUB Legacy。
GNU GRUB2是第二代GRUB,它将取代原来的GNU GRUB(例如0.9x版),但目前还处于开发阶段,尚未发布正式版。
GNU GRUB Legacy和GNU GRUB2都是 GNU 组织的项目。
GRUB for DOS(GRUB4DOS)是一个以 GNU GRUB 为基础的功能强大的引导器。它可以在 DOS 和 LINUX下运行,也可以通过其他引导器来运行,还可以作为MBR运行。GRUB4DOS内置了功能完善的 BIOS 级磁盘仿真。
下面以比较广泛使用的GRUB4DOS为基础进行说明。GNU GRUB与GRUB4DOS的不同之处,可参看相关说明文件。
1 grub4dos初级教程-入门篇
1.2 如何获得grub4dos最新版
可从以下网址下载GRUB4DOS最新版及较早版本。
http://download.gna.org/grub4dos/
http://grub4dos.sourceforge.net/
http://sarovar.org/projects/grub4dos/
http://grub4dos.nufans.net/
http://grub4dos.jot.com/
http://download.gna.org/grubutil/
http://grub4dos.sourceforge.net/wiki (官方说明文档)
http://bbs.znpc.net/forumdisplay.php?fid=4 (官方论坛)
1 grub4dos初级教程-入门篇
1.3 如何安装grub4dos?
下载grub4dos后,解压缩后就可以了。核心文件有下面这几个:grldr(VISTA系统,还需grldr.mbr)和grub.exe,及menu.lst(此为样本,需修改)。如果你需要中文支持,就用chinese子目录中的文件。
安装方法常见的有下面4种。
1.3.1 通过Windows NT的启动菜单进入grub4dos
将grldr文件复制到c:\,去掉boot.ini的只读属性,然后修改c:\boot.ini文件,在boot.ini的最后面加一行:
c:\grldr="Start GRUB4DOS"
并将boot.ini中的timeout值设置为大于0的数字,如:timeout=5,然后保存boot.ini,改回只读属性。
编辑boot.ini前,可在cmd下输入:
attrib -s -r -h c:\boot.ini
解除boot.ini的只读属性,编辑完后输入:
attrib +s +r +h c:\boot.ini
恢复boot.ini的原有属性。
这样,编辑完重新启动计算机,在NT的启动菜单就会出现“Start GRUB4DOS”这一项,选择该项即可进入grub4dos的环境。【图1】
此方法的优点是:不需要修改MBR。
初学者使用grub一般都需要grub菜单,把准备好的menu.lst文件放到C:\下(也可放到其它分区根目录或其它指定目录)。menu.lst的编写方法可参考readme.txt或者别人提供的menu.lst。在下面的“1.4 如何使用grub4dos”中将作简单介绍。
1 grub4dos初级教程-入门篇
1.3.2 通过DOS启动grub
将机器通过任何可能的方式(软盘,U盘,光盘等)启动到DOS环境(最好是纯DOS环境,即不加载任何驱动程序和TSR程序的DOS环境),然后在DOS下或者AUTOEXEC.BAT中运行grub.exe,即可进入grub4dos。
也可在DOS/Windows9x的CONFIG.SYS中使用下列任一方式启动grub。
DEVICE=GRUB.EXE
INSTALL=GRUB.EXE
SHELL=GRUB.EXE
此方法的优点是:不需要修改MBR;可根据需要在脚本或者其它DOS程序中启动GRUB4DOS。
菜单文件menu.lst可保存在grub文件所在目录或其它指定路径。
1 grub4dos初级教程-入门篇
1.3.3 通过mbr启动grub
通过软件包里的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文件。
另外,2000/xp/2003/vista环境下可用另一软件grubinst来把GRLDR引导记录安装到硬盘的MBR。grubinst具有图形界面和命令行两种工作模式供选用,并附有比较详细的使用说明,很易于使用。【参看附录 4.1 如何使用grubinst_gui】
1 grub4dos初级教程-入门篇
1.3 如何安装grub4dos?
1.3.4 通过Windows VISTA/Window 7的启动菜单进入grub4dos
用批处理自动把grub4dos装入Vista启动项(非MBR)。
把grub4dos装入Vista启动项,比装入MBR相对来说要安全。
【对于vista系统,不能通过fdisk /mbr来恢复mbr,这样会造成vista无法启动。】
关于手动把grub4dos装入Vista的启动项的方法,网上有一些介绍。比起winxp修改Boot.ini来,操作要麻烦不少。
主要就是操作过程中要产生一个ID号【如:b88a2da4-0a4e-11dc-813a-00e04c75ef59】,需要手动输入3次,实在是麻烦。
下面的批处理自动完成整个装入操作。
说明:
1,批处理与grldr.mbr在同一目录时,自动复制grldr.mbr文件到系统根目录,否则需自行复制。
2,启动项里添加上grub4dos项后,需把准备好的menu.lst和grldr文件复制到C:\下(也可放到其它分区根目录)。
-------------------------------
安装批处理
@echo off
rem by lianjiang
cls
echo.
echo 请以管理员身份运行。
echo.
pause
set gname=GRUB for DOS
set vid=
set timeout=5
bcdedit >bcdtemp.txt
type bcdtemp.txt | find "\grldr.mbr" >nul && echo. && echo BCD启动项中已有grub4dos的项目,无需再安装。&& pause && goto exit
bcdedit /export "Bcd_Backup" >nul
bcdedit /create /d "%gname%" /application bootsector >vid.ini
for,/f,"tokens=2 delims={",%%i,In (vid.ini) Do (
set vida=%%i
)
for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do (
set vid={%%i}
)
echo %vid%>vid.ini
bcdedit /set %vid% device partition=%systemdrive% >nul
bcdedit /set %vid% path \grldr.mbr >nul
bcdedit /displayorder %vid% /addlast >nul
bcdedit /timeout %timeout% >nul
if exist grldr.mbr copy grldr.mbr %systemdrive%\ /y && goto exit
echo.
echo 稍后请自行把grldr.mbr拷贝到%systemdrive%\根目录
echo.
pause
:exit
del bcdtemp.txt >nul
-------------------------------
卸载批处理
@echo off
rem by lianjiang
cls
echo.
echo 要求存在用安装批处理安装时自动保存的临时文件。
echo.
echo 请以管理员身份运行。
echo.
pause
set vid=
set timeout=5
if exist Bcd_Backup bcdedit /import "Bcd_Backup" >nul&& goto 1
if not exist vid.ini (
echo.
echo 因相关文件被删,不能自动删除启动项项目,只能手动删除。
echo.
pause
goto exit
)
for,/f,"tokens=1",%%i,In (vid.ini) Do (
set vid=%%i
)
bcdedit /delete %vid% /cleanup >nul
bcdedit /timeout %timeout% >nul
:1
del vid.ini >nul
if exist %systemdrive%\grldr.mbr (
attrib -h -s -r %systemdrive%\grldr.mbr >nul
del %systemdrive%\grldr.mbr >nul
)
:exit
-------------------------------
此方法的优点是:不需要修改MBR。
grub菜单文件的准备同“1.3.1 通过Windows NT的启动菜单进入grub4dos”。
1 grub4dos初级教程-入门篇
1.4 如何使用grub4dos
对于多数没有或很少接触过linux的windows用户来说,刚开始使用grub时离不开菜单。也就是说,使用grub前,我们要准备menu.lst文件。
下面是一个menu.lst的例子。(以#开始的行,表示注释,不执行)
# 默认延迟时间(秒)
timeout 30
# 第一项为默认值
default 0
# 设置图形背景文件
splashimage (hd0,0)/boot/grub/xp2008.gz
# 设置中文支持的字体文件
fontfile (hd0,0)/boot/grub/fonts
title 使用map启动本地硬盘上的瑞星杀毒软盘镜像文件
map (hd0,0)/boot/grub/rav.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 使用memdisk启动本地 Win98 软盘镜像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img
title 使用memdisk启动本地硬盘上的瑞星杀毒软盘压缩镜像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip
title 启动第一主分区(hd0,0)上的操作系统
rootnoverify (hd0,0)
makeactive
chainloader +1
title 启动第二主分区(hd0,1)上的操作系统
rootnoverify (hd0,1)
makeactive
chainloader +1
title 重启
reboot
title 关机
halt
此菜单文件的运行效果如下图。【图2】
参考这个例子,我们就可以根据自己需要对菜单进行修改。
比如从网上下载了效率源的镜像文件,文件名为XLY.IMG。我们只需把
title 使用memdisk启动本地 Win98 软盘镜像文件
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/win98.img
改成
title 硬盘检测修复工具 效率源 (memdisk)
kernel (hd0,0)/boot/grub/memdisk.gz
initrd (hd0,0)/boot/grub/xly.img
或者改成
title 硬盘检测修复工具 效率源 (map)
map (hd0,0)/boot/grub/xly.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
同时把xly.img文件保存到第一主分区(一般是C:)的boot\grub目录下。
当然也可以保存到其它路径。
比如xly.img文件保存到C:\boot下,则menu.lst文件相应改为:
map (hd0,0)/boot/xly.img (fd0)
又如xly.img文件保存到D:\test下,则menu.lst文件相应改为:
map (hd0,4)/test/xly.img (fd0)
(参看下面的几点提示d)
从上面的例子可以看出,启动软盘镜象,有两种方式,即用memdisk或用map。
用memdisk时,img文件可压缩;在img文件大小为非1.44MB或2.88MB标准镜像时,需要指定CHS参数。img文件的CHS参数可用winimage获得。
【提示:参数H, S是关键参数,必须准确无误;参数C设定错了,也不影响引导。】
注:图引用自“Grub 简体中文化版使用方法”
即例子中的:
title 使用memdisk启动本地硬盘上的瑞星杀毒软盘压缩镜像文件
root (hd0,0)
kernel /boot/grub/memdisk.gz c=80 h=12 s=36 floppy
initrd /boot/rav.zip
另外,菜单文件中的文件路径可用相对路径(如:/boot/rav.zip)或绝对路径(如:(hd0,0)/boot/grub/xly.img)表示。
map方式对软盘映像大小没有限制,但要求必须连续存放。
map --mem则无此限制,但要求有足够的内存(使用超大映像文件时要注意这点)。
此映像将被拷贝到一个内存区域,映像本身可以是非连续的,甚至可以是被压缩的。
比如:
map --mem /boot/xxx.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
官方文档“Grub4dos高级功能”中对map和memdisk的区别进行了说明:
map是GRUB4DOS内置的功能,而memdisk是一个外部的程序
map可以直接映射磁盘上的文件,而memdisk必须要把文件装载到内存里。
map可以把影像文件映射为第二只硬盘,而而memdisk只能映射为第一只硬盘。
map有自动生成MBR的功能,而memdisk没有。因此memdisk只能使用磁盘影像,不能使用文件系统影像。
几点提示:
a, 菜单文件中所用的memdisk.gz文件,不包括在grub4dos的发行包里,需自行准备。可从SysLinux软件包或从其它基于grub的工具(如本人的GGhost一键恢复)中获得。
b, 菜单中所用的其它文件如xp2008.gz(背景文件)、fonts(中文字体文件)及各种镜像文件等,均需拷贝到文件中指定路径。 fontfile命令不可单独使用,需与splashimage一起使用。
c, 菜单文件中的命令全部使用小写。
d, 初学者使用绝对路径时要注意GRUB对设备的命名方法。系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从0开始计数的,x表示硬盘号,y表示分区号。
由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。
一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(cd)表示,第一软驱用(fd0)表示。
如我的硬盘有两个主分区,其余为逻辑分区。用(hdx,y)的方法表示如下图:
下面是我的“GGhost一键恢复”中使用的菜单效果图及menu.lst文件,供参考。【图3】
color white/green yellow/green
timeout 3
find --set-root /ggho/grub/gghost.img
password --md5 $1$5$jsGtVo0c88ndMdo6JZfrJ0
default /ggho/grub/default
title 0. GGhost 2008 [Ghost v11] (map-mem)
find --set-root /ggho/grub/gghost.img
map --mem /ggho/grub/gghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
savedefault
title 1. GGhost 2008 [Ghost v11] (memdisk)
find --set-root /ggho/grub/gghost.img
kernel /ggho/grub/memdisk.gz c=280 h=2 s=36 floppy
initrd /ggho/grub/gghost.img c=280 h=2 s=36 floppy
savedefault
title 2. Boot /ggho/grub/mytools.img
find --set-root /ggho/grub/mytools.img
map --mem /ggho/grub/mytools.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title 3. Boot /ggho/grub/myiso.iso
find --set-root /ggho/grub/myiso.iso
map --mem /ggho/grub/myiso.iso (0xff)
map --hook
chainloader (0xff)
title 4. Micro Windows XPE
find --set-root --ignore-floppies /setupldr.bin
map --in-situ +1 (hd0)
chainloader /setupldr.bin
title 5. Boot NT/2000/XP/2003
find --set-root /ntldr
chainloader /ntldr
title 6. Boot Vista
find --set-root /bootmgr
chainloader /bootmgr
title 7. Boot from Hard Drive (hd0,0)
root (hd0,0)
chainloader +1
title 8. Boot from First CDROM
cdrom --init
map --hook
chainloader (cd0)
boot
title 9. Reboot
reboot
title 10. Shutdown
halt
源CHM 下载地址