发新话题
打印

GNU GRUB及GRUB4DOS参考资料汇总(不断完善中...)

本主题被作者加入到个人文集中

GNU GRUB及GRUB4DOS参考资料汇总(不断完善中...)

GNU GRUB及GRUB4DOS参考资料汇总
整理者:Climbing(xclimbing@msn.com)
整理日期:2007.02.14
最后修改日期:2009.03.20

这里引用的很多资料都来自于互联网,我只是进行了适当的翻译和整理,版权归原网站或者原作者所有。

基本上,看完这里汇总的资料,你已经对GRUB及GRUB4DOS有了基本的了解(包括使用),至于高级的用法要靠你自己去努力和创造了。

1. GNU GRUB

资源来源于GNU GRUB官方网站:http://www.gnu.org/software/grub

1.1 Introduction(GNU GRUB简介)

GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.

GNU GRUB是一个遵从Multiboot(多重启动)规范的启动管理程序。 GRUB是“ GRand Unified Bootloader(强大标准的启动管理程序)”的缩写,最早由Erich Stefan Boleyn设计并实现。

Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU).

一般来说,启动管理程序是计算机启动时第一个运行的软件,它的主要作用是加载操作系统的内核并将控制权交给它,然后操作系统的内核再对操作系统的其它部分进行初始化操作。

1.2 GRUB 2 and GRUB Legacy

Currently under development, GRUB 2, has replaced what was formerly known as GRUB (i.e. version 0.9x), which has, in turn, become GRUB Legacy.

GRUB 2是GRUB的当前开发版本,它取代了原来的GRUB(例如0.9x版),这样,原来的版本就叫作GRUB Legacy。

GRUB 2 aims at merging sources from PUPA in order to create the next generation of GNU GRUB.

GRUB 2的主要目标是融合PUPA(译者注:PUPA是什么东东,我也不甚了了,应该是新一代启动管理器的研究项目)的源代码以产生下一代的GNU GRUB。

GRUB Legacy is no longer being developed. For the differences between GRUB Legacy and GRUB 2, please visit their respective pages.
GRUB Legacy已经停止开发。两者的不同请参考二者对应的网页内容。

附件:
1) 由sysoft论坛的bean所写的GRUB 2中文简介:http://bbs.znpc.net/viewthread.php?tid=2269

2) 网友所写的GRUB使用说明“GRUB三步通”
原始链接:http://www.cc.ac.cn/~peace/articles/grub.txt
Gandalf美化版:http://bbs.znpc.net/viewthread.php?tid=873


2. GRUB for DOS - Bridging DOS/Windows to Unix/Linux(GRUB for DOS,连接DOS/Windows和Unix/Linux的桥梁)

资料来源于GRUB4DOS的官方Wiki:http://grub4dos.jot.com/WikiHome

GRUB for DOS is a build of the GNU GRUB boot manager for DOS, and can be run under real mode DOS. It also has many new features. For example, it can be booted through BOOT.INI of Windows (grldr) and kexec of Linux (grub.exe). The disk emulation feature is another enhancement over GNU GRUB, and can be used to run legacy DOS/Windows9x systems with floppy or hard disk images.

GRUB for DOS(注:一般简写为GRUB4DOS)是GNU GRUB的DOS编译版本(译者注:准确的说,GRUB4DOS是一个基于GNU GRUB Legacy的二次开发版本),它可以运行于实模式的DOS环境下,而且它还具有很多新功能,例如:它可以通过Windows(NT)的boot.ini((使用grldr文件)或者Linux的kexec(使用grub.exe文件)来启动。另外,相对于GNU GRUB来说,它的磁盘仿真功能是另一个重大改进,通过这个功能,可以从软盘或者硬盘映像文件中启动传统的DOS/Windows9x系统。(译者注:GRUB4DOS实际上处于很活跃的开发状态,它的功能是不断增强的,详细信息请参考它的readme.txt或者ChangeLog.txt)。

GRUB for DOS is free and open-source software, released under the GNU General Public License.

GRUB4DOS是免费的并且开放源代码的软件,遵从GNU General Public License协议。

2.1 You can boot the GRUB4DOS boot-loader/boot-manager in different manners:
GRUB4DOS的各种启动方式:


(1) Run GRUB.EXE at the DOS prompt or in AUTOEXEC.BAT

在DOS命令行或者AUTOEXEC.BAT中直接运行GRUB.EXE文件。

(2) In CONFIG.SYS of DOS/Windows9x, use DEVICE=GRUB.EXE or INSTALL=GRUB.EXE or SHELL=GRUB.EXE

在DOS/Windows9x的CONFIG.SYS中使用下列任一方式:
DEVICE=GRUB.EXE
INSTALL=GRUB.EXE
SHELL=GRUB.EXE

(3) In BOOT.INI of Windows NT/2K/XP, use C:\GRLDR="GRUB" (there should be a backslash between C: and GRLDR)

在Windows NT系列操作系统(NT/2K/XP/2003)的boot.ini中增加形如下面的一项:
c:\grldr="GRUB4DOS"

(注:前提是将grldr放到C:盘根目录下。)

(4) Under Linux, use "kexec -l grub.exe" and then "kexec -e"

在Linux下:
# kexec -l grub.exe
# kexec -e

(5) In syslinux.cfg, use "kernel grub.exe"

使用syslinux,在syslinux.cfg中使用:
kernel grub.exe

(6) Under GNU GRUB, use "kernel (DEVICE)/PATH/grub.exe"

在GNU GRUB中使用:
kernel (DEVICE)/PATH/grub.exe

例如:
kernel (hd0,4)/boot/grub/grub.exe

(7) In lilo.conf, use "image=/boot/grub.exe"

使用lilo,在lilo.conf中使用类似下面的形式:
image=/boot/grub.exe

All above methods won't touch the MBR nor the boot area of any partition.
上面的这些启动方式都不会改变硬盘的主引导记录(MBR)或者分区的引导扇区。

(8) Boot from MBR(or floppy) by installing boot sectors onto it with the DOS/LINUX utility bootlace.com.

通过bootlace.com(可以运行于DOS/Linux)将GRUB4DOS的引导扇区安装到硬盘的MBR(或者软盘引导区)启动。

译者注:现在可以使用Bean编写的grubinst.exe在Windows下将GRUB4DOS的引导扇区安装到MBR或者软盘上(包括映像文件)。

2.2 When GRUB4DOS gets running, you can boot other OSes:
启动GRUB4DOS后,可以通过它启动其它的操作系统:


(1) Boot Linux kernel with "kernel (DEVICE)/PATH/vmlinuz"

启动Linux的内核,方式:kernel (DEVICE)/PATH/vmlinuz。

(2) Boot MS-DOS7+ kernel with "chainloader (DEVICE)/io.sys"

启动 MS-DOS7+的内核,方式:chainloader (DEVICE)/io.sys

(3) Boot FreeDOS kernel with "chainloader (DEVICE)/kernel.sys"

启动FreeDOS的内核,方式:chainloader (DEVICE)/kernel.sys

(4) Boot NTLDR of Windows NT/2K/XP with "chainloader (DEVICE)/ntldr"

启动Windows NT的NTLDR,方式:chainloader (DEVICE)/ntldr

(5) Boot CMLDR of Windows NT/2K/XP with "chainloader (DEVICE)/cmldr"

启动Windows NT的恢复控制台的CMLDR,方式:chainloader (DEVICE)/cmldr

注:使用类似的方式可以启动NT的setupldr.bin。

(6) Boot other OSes with "chainloader (DEVICE)+1"

使用chainloader (DEVICE)+1的方式启动其它操作系统。

注:主要用来引导对应设备的引导扇区(MBR),例如硬盘MBR、光盘、软盘、主分区引导扇区等。

(7) Boot DOS/Windows9x disk image files with the memdrive feature.

通过磁盘仿真(内存盘)从磁盘映像文件中启动DOS/Windows9x。

(8) Boot Smart Boot Manager with the memdrive feature(SBM can boot CD-ROMs).

启动“Smart Boot Manager(SBM)”进而通过它从光盘启动。

注:GRUB4DOS 0.4.2中已经内置了从光盘启动的功能。

README.txt has more details.(更详细的介绍请参考readme.txt)。


2.3 Useful Links (有用的链接)

Here are some useful resources about GRUB for DOS and WINGRUB.
下面是一些有关GRUB4DOS和WINGRUB的有用的链接:

GNU GRUB: The homepage of the original GRUB.GNU GRUB的官方网站。
grub4dos.sf.net:This is the project home page at http://sourceforge.net.
http://sarovar.org/projects/grub4dos: This is the project home page at http://sarovar.org/
Original GRUB for DOS homepage(最早的GRUB4DOS主页,已失效)
http://grub4dos.freespaces.com/
http://freshmeat.net/projects/grub4dos/
http://marc.herbert.free.fr/linux/win2linstall.html
GRUB for DOS scratchpad (in Chinese)
United DOS Forum (DOS联盟论坛启动盘室)
Sysoft Forum (in Chinese)(SYSOFT时空论坛)


2.4 Other Download Sites
其它下载站点:


http://sarovar.org/projects/grub4dos/

http://grub4dos.sourceforge.net/

http://grub4dos.freespaces.com/

GRUB for DOS scratchpad(in Chinese)

2.5 Other Resources(其它资源)

Ralf Brown's Interrupt List: It's cool.http://www.ctyme.com/rbrown.htm
A Disk Editor View of the NTFS Boot Sector and "Bootstrap Code" http://www.therdcom.com/asm/mbr/NTFSbrHexEd.htm
The Second Extended File System(Internal Layout) http://www.nongnu.org/ext2-doc/ext2.html
OSD: PC bootstrap http://my.execpc.com/CE/AC/geezer/osd/boot/
eXtended Memory Specification: http://freedos.sourceforge.net/freedos/news/press/1991-xms30.html
High-res high-speed VESA tutorial http://www.monstersoft.com/tutorial1/
BIOS Data Area http://www.bioscentral.com/misc/bda.htm
Hardware and Software Documentation http://www.o3one.org/hwdocs.html


2.6 Screen shot showing the new features (GRUB4DOS新功能展示屏幕截图)



对应的menu.lst文件(注:取自grub4dos 0.4.2下载包):
复制内容到剪贴板
代码:
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color black/cyan yellow/cyan
timeout 30
default /default

title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2

title find and load CMLDR of Windows NT/2K/XP
fallback 2
find --set-root /cmldr
chainloader /cmldr
savedefault --wait=2

title find and load IO.SYS of Windows 9x/Me
fallback 3
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2

title find and boot Mandriva with menu.lst already installed
fallback 4
find --set-root /etc/mandriva-release
savedefault --wait=2
configfile /boot/grub/menu.lst

title find and boot Linux with menu.lst already installed
fallback 5
find --set-root /sbin/init
savedefault --wait=2
configfile /boot/grub/menu.lst

title commandline
savedefault --wait=2
commandline

title floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
savedefault --wait=2

title back to dos
savedefault --wait=2
quit

title reboot
savedefault --wait=2
reboot

title halt
savedefault --wait=2
halt

title memdrive duplicated from floppy image file (hd0,0)/sbm.bin
map --mem (hd0,0)/sbm.bin (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
savedefault --wait=2

title memdrive based on win98 partition (hd0,6)
map --mem (hd0,6)+1 (hd0)
# map --mem (hd0,0)/win98.gz (hd0)
map --hook
chainloader (hd0)+1
rootnoverify (hd0)
savedefault --wait=2
3. GRUB for DOS简介 by pt@sysoft

由sysoft论坛网友pt写的GRUB for DOS简介:http://bbs.znpc.net/viewthread.php?tid=2214

相信许多liunxer初次听到“GRUB FOR DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别急,再问一句:您是否用过grldr呢?是否用过MaxDos、一键ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB FOR DOS了。

是它的名字给人们造成了误解,这也是历史遗留问题。一开始确实仅仅是“for dos”,后来开发面越来越广,功能越来越强,“for dos”已不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,直到最近才对它逐步了解,相见恨晚。正是我个人的历程促使我写下这篇文字,希望更多人能尽快地了解并使用GRUB4DOS这一优秀作品,享受它带来的可靠与便捷。

很多新手都误以为GRUB4DOS是GNU GRUB的一部分或一个组件,其实不然。应该说它是对GNU GRUB的二次开发,最早由“不点”在2003年发起,目前主要由他和另外几位中国人维护,很多人贡献了代码,还有广大网友热心地帮助测试,使得GRUB4DOS发展到今天取得了长足进步。目前最新版本是0.4.2,基于GNU GRUB 0.97,并做了相当多的改进,简单归纳如下:

1、A20代码 和 bug修正
对A20的处理历来就是一个棘手问题。当初IBM引入这一设计,本意是为了让以往那些BUGGY软件能够运行,结果造成后世无穷无尽的隐患。当然不能全怪IBM,真正应当责怪的是那些不遵守IBM标准的硬件厂商,它们生产的系统无法用常规的几种方法来控制A20,使得软件开发者可能在很多意想不到的地方碰上A20这个妖魔,除了造成死机之外,还导致执行效率的极度降低。在微软的XMS规范中就明确写着,A20的控制在有些机器上是非常耗时的一个操作。

GNU GRUB 0.97中的A20代码很明确是有问题的,这在GNU GRUB邮件列表档案中就有提到。很多用户报告在使用gnu grub 0.97时键盘失去响应。grub开发组在grub2中对A20代码打了补丁,以解决这些问题,但是这个补丁并没有打到我们目前广泛使用的0.97版上。为此GRUB4DOS用取自Linux内核的A20代码替换了原代码,并参考其他一些开源代码做了很多改进,基本上解决了这一问题。

A20只是改造的一个方面,在GRUB4DOS的开发过程中修复的GNU GRUB 0.97的bug还有很多,有些在Changelog中并没有提到。到目前为止,已经把那些严重的BUG排解殆尽了,应该可以比较平滑地使用GRUB4DOS了。

2、磁盘仿真(虚拟磁盘)
这是GRUB4DOS的一大特色功能,开发者下了不少功夫。这一功能是将 软盘镜像或硬盘镜像甚至某个硬盘分区 虚拟成 软驱或硬盘,进而运行其中的操作系统(DOS、win98),类似于以前流行的“虚拟软驱”(vfloppy),但功能要强得多。
用SYSLINUX中的memdisk也可实现虚拟磁盘。比较而言,GRUB4DOS功能更强,限制更少,用法更灵活,同时对bios的要求也要高一些,在一些BIOS有缺陷的机子上可能会出问题。

3、多种方式进入grub环境
1)通过dos
在dos下运行grub.exe即可进入纯粹的grub环境,并部分地支持退回到DOS。也可把grub.exe作为 CONFIG.SYS 里的设备驱动文件而运行。

2)通过Windows启动菜单
这是被广泛使用的一种用法。MaxDos、一键ghost硬盘版、矮人DOS工具盘之类的软件就是以这种方式启动grldr,再通过磁盘仿真虚拟出一个软驱,进而启动DOS的。

3)通过MBR引导代码(开机直接进入)
乍一看这似乎不算什么改进——GNU GRUB本来就可以这样引导,但实际上在这里GRUB4DOS有相当大的革新。把GRUB安装到硬盘MBR的传统方法是:先运行root (xxx,x),然后setup (xxx)——前面一句是指定一个分区,该分区须存放有/boot/stage1和/boot/stage2文件,后面的setup (xxx) 是将引导代码写入指定磁盘的MBR。这样安装的GRUB,其MBR引导代码被设置为从固定的分区加载stage2,一旦该分区出了问题,系统便无法引导;如果我们想删除该分区,或格式化分区,或者做一些会引起该分区序号改变的操作,就需要预先重新安装一次grub,重新指定存放stage文件的分区,否则也会引导失败。这一点上grub显得不够灵活。

而GRUB4DOS采取了新的策略:其MBR引导代码并非固定地指向某个分区,而是搜索所有分区,查找并加载grldr,只要某分区上存有一份grldr,就能启动。而且安装时可以将原微软的MBR备份,启动时如果找不到grldr,便自动加载备份的MBR。显然这种方式更加灵活、稳健,所以GRUB4DOS虽然保留了GNU GRUB的全部命令和功能,包括setup命令,但不推荐使用传统的安装方式。

当然GRUB4DOS的方式也并非十全十美,它的引导代码虽然可以搜索硬盘,但识别文件系统的能力有限,目前仅限于FAT12/FAT16/FAT32/EXT2/EXT3这几种(以后将支持更多的格式),所以可能需要专门设一个分区来存放grldr。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。

目前已有多种方法给硬盘安装GRUB4DOS引导代码:2000/xp/2003下用grubinst(请参考 http://bbs.znpc.net/viewthread.php?tid=2170&extra=page%3D1),DOS和linux下用bootlace.com(参见readme)。

4、图片背景支持
相信大多数用户都乐于使用图片背景来代替单调的黑白画面。虽然仅能支持 640x480@14位色,但也总比两色好得多。

5、中文支持
GRUB4DOS中同时发布有支持中文的grldr和grub.exe,大大方便了中文用户。

6、光驱支持
该功能使得用户可以再GRUB环境下访问光驱,并可由光驱启动,很实用。

以上仅是大致介绍,更详尽的信息和使用方法请参阅readme。

现在我用的每块硬盘包括u盘都安装了GRUB4DOS,既可启动windows,又能启动linux,还可通过磁盘仿真来启动dos,放上自己喜欢的图片做背景,全中文界面,HOHO,感觉很不错,您不想试试吗?

本文参考资料来自互联网,如有错漏敬请指正。更新日期:2007-01-27

4. GRUB 2使用简介 by bean@sysoft

由sysoft论坛的bean所写的GRUB 2中文简介:http://bbs.znpc.net/viewthread.php?tid=2269

Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:

1、模块化设计

不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。

2、支持多体系结构

Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。

3、国际化的支持

Grub 2 可以支持非英语的语言。

4、内存管理

Grub 2 有真正的内存管理系统。

5、脚本语言

Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。

当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。

安装和使用

Grub 2的内核是符合multiboot标准的,因此可以在Grub中引导。

1、下载
http://grub4dos.sourceforge.net/grub2.zip
解压到某个FAT分区的根目录,会生成/boot/grub目录,Grub 2的文件便在该目
录下。

2、修改 /boot/grub/grub.cfg
这是Grub 2的配置文件,它的格式不同于menu.lst,以下是一个例子:

set timeout=20
set default=0

menuentry "Chainload First Part" {
    set root=(hd0,1)
    chainloader +1
}

menuentry "Load Linux at Second Part" {
    set root=(hd0,2)
    linux /vmlinuz root=/dev/hda2
    initrd /initrd
}

如果你熟悉Grub,应该可以看明白里面的内容。要注意的是:
a、timeout, default等参数用变量来储存
d、菜单项由menuentry定义
c、第1个分区是(hd0,1)而不是(hd0,0)
d、当前支持的启动方式是chainload,linux和multiboot

3、在Grub中使用以下的命令进入Grub2
root (hd0,0)
kernel /boot/grub/core.img
boot
(hd0,0)请用存放Grub2的分区的名字来代替

4、进入Grub 2后,在菜单界面下输入 c 便可进入控制界面。

基本命令:

lsmod
列表当前装载的模块

insmod mod_name
装载模块

rmmod mod_name
卸除模块

help [command]
显示帮助

ls [options] [dir]
列表目录。当不带参数时,显示的是所有的硬盘设备,带参数时,显示的是目录里的子目录和文件。

还有很多其它的命令,全部命令的列表在/boot/grub/command.lst里:
boot cat chainloader cmp . configfile export font halt hello help initrd
lsmod linux loopback ls lsmod module multiboot play reboot rescue rmmod
search set source terminal terminfo [ unset vbeinfo vbetest videotest

可以用help来看具体的用法

注意:

a、很大一部分命令都在模块里,如果输入时显示找不到命令,只需要用insmod
装载相应的模块就可以了。

b、你可以定制内核,使所需的命令包在其中。

从代码中编译:

1、用cvs取得源代码
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub co grub2

2、当前的Grub2代码中有一个bug,使得启动后不会显示grub.cfg中的菜单,我写了
一个补丁,在:
http://grub4dos.sourceforge.net/grub2-menu.diff
要使用该补丁,请进入grub2的目录,然后:
patch -p1 < grub2-menu.diff
这里假设grub2-menu.diff放在grub2目录下

3、./configure
然后
   ./make

4、定制内核

   ./grub-mkimage -d . -v -o core.img fat pc

   core.img是内核的名字,fat和pc是加入内核的模块。常用模块有:

   fat: 支持 fat 文件系统
   ext2: 支持 ext2 文件系统
   pc: 支持主分区和扩展分区
   help: help命令
   ls: ls命令

除了当前分区的文件系统的模块外,其它的都可以用insmod在进入grub2后才转载

5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst
抄到某一分区的 /boot/grub目录下,然后编写配置文件grub.cfg

5. GRUB 三步通 by 不知名网友

网友所写的GRUB使用说明--“GRUB三步通”,推荐新手阅读。

原始链接:http://www.cc.ac.cn/~peace/articles/grub.txt
Gandalf美化版:http://bbs.znpc.net/viewthread.php?tid=873

另外,请新手注意: GRUB4DOS实际上只是GNU GRUB 0.97的功能增强版,除了某些命令的使用方法稍有不同之外,基本的用法跟GNU GRUB是完全一样的,因此,你可以直接访问GNU GRUB的官方网站并查看网站上提供的GNU GRUB在线使用手册(Online manual)来学习GRUB最基本的用法。

GRUB 的优点                                                                  

  GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。

  GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单。 更令人惊讶的是,这是一个自由软件!!!


GRUB 菜单                                                                          

先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。
此文件将在开机时产生一个菜单,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个swap分区(0x82)。ntfs用来装win2000,三个ext2fs装了三个linux,c盘fat16分区没有装任何东西。
引用:
  
###############################################
#
# 一个GRUB configure 的例子
#
###############################################

timeout 10
default 2

# --> Debian linux <--
title Debian linux
root (hd0,2)
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
initrd /boot/initrd-2.2.18.gz
# --> Debian END <--


# --> Windows 菜单选项 <--
title Windows2000
root (hd0,0)
chainloader +1
# --> Winddows 结束 <--


# --> RedHat linux 菜单选项 <--
title RedHat linux
root (hd0,8)
chainloader +1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。
# --> RedHat linux 结束 <--


# --> Mandrake linux 菜单选项 <--
title Mandrake linux
root (hd0,5)
kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
initrd /boot/initrd-2.4.3-20mdk.img

# --> Mandrake linux 结束 <--
以符号井 # 开头的行表示被注释掉,没有任何意义。

timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root与linux的root分区极其不同,此root非彼root也!

在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。

到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。

知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro说明/boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。
initrd用来初始的linux image,并设置相应的参数。

是不是感觉很简单啊!再来看一看windows的定义段吧。
这里,我添加了一项来引导 Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧!

GRUB的交互性                                                                  

  GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

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

  GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入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 控制台绕过lilo来启动RedHat linux)

grub> root

  现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:

  grub> root (hd0,

  现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:
引用:
grub> root (hd0,                                                                                          // (tab,按tab键一下)
Possible partitions are:
Partition num: 0, Filesystem type is fat, partition type 0x6
Partition num: 2, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x7
Partition num: 5, Filesystem type is ext2fs, partition type 0x83
Partition num: 6, Filesystem type is fat, partition type 0xb
Partition num: 7, Filesystem type is fat, partition type 0xb
Partition num: 8, Filesystem type is ext2fs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82
  如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了

grub> root (hd0,8)

现在已安装了 root 文件系统,到装入内核的时候了
引用:
grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
[Linux-bzImage, setup=0x1200, size=0xe1a30]
  您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。

#####################
# 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

现在,引导盘完成了。
如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的 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创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

Climbing注:上面介绍的都是GNU GRUB的传统安装方式(安装到MBR或者引导扇区),而对于GRUB4DOS来说,它又比GNU GRUB多出了更多更好的而且更灵活的启动方式和安装方式,详细信息请参考本文相关内容。

小结:在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档。

GRUB的下载:ftp://alpha.gnu.org/gnu/grub/


再补充:三种硬盘安装Linux方法的 grub 命令集(采用任何一种都可以的,随便你喜欢哪个方法):

1.用 hd.img 安装,这需要用到 grub for dos 的软盘仿真功能:

grub> map (hd0,0)/hd.img (fd0)
grub> chainloader (hd0,0)/hd.img
grub> rootnoverify (fd0)
grub> boot

2.用 vmlinuz 和 hd.rdz 两个文件来安装(无需使用 grub for dos,用 GNU 原来的
GRUB 都管用):

grub> kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3
automatic=method:disk acpi=ht vga=788
grub> initrd (hd0,0)/hd.rdz
grub> boot
注意 kernel 一行很长,不要截断成两行。还要注意上述命令都假定这些文件位于
(hd0,0) 的根目录,如果你的不同,当然要作适当的修改
来源:LinuxEden


3.首先下载grub for dos(http://grub.linuxeden.com),其最新版本支持ntfs分区,而且可以利用ntloader调用,比如winxp的引导菜单.
提取grldr到c:/下;
修改boot.ini,加入 C:\GRLDR=Boot Grub (方法:在桌面我的电脑点右键--属性--高级--启动和故障恢复-设置--编辑,不用到c盘去找了,麻烦);
在c盘根目录下建立/boot/grub文件夹,建立menu.lst文本文件;
把ML的iso放在vfat分区,提取mbvmlinuz,mbinitrd-hd.gz与iso都放在根目录下 ;
修改menu.lst,加入
代码:

title Magci linux1.2-setup
      kernel (hd0,6)/mbvmlinuz ro root=/dev/ram0  ramdisk_size=32000 vga=788
      initrd (hd0,6)/mbinitrd-hd.gz

(hd0,6)为我的放置iso和mbvmlinuz,mbinitrd-hd.gz的分区,修改成你的,注意kernel后有个空格。
重启,选择boot grub,选择Magic linux1.2-setup ;
后面的我就不说了,按照提示一步一步来就行了;
当然你可以在安装成功后,修改menu.lst,加入你的ML启动项,你就可以用grub for dos 启动你的ML。


################## ################## ################## ################## ################## ##################
我的机器无光驱软驱,直接由iso文件安装mandriva的方法,(其它linux也同理)。
首先,需要把第一张cd中的install/alt1目录下的vmlinuz 和 all.rdz 解压出来。说明:这层目录下面还有alt0和alt2,它们安装了不同的内核,详情可见install下面的说明文件,(文件名忘记了)。

其次,这种方法利用iso安装的原理基本上就是利用grub引导安装映象,那么我介绍我所知的三种方法:

A,已经拥有了grub引导,比如原有的linux仍存在,而且是由grub引导系统的。(这种情况比较简单)。
1,只要确定好上一步解压出来的vmlinuz 和 all.rdz在硬盘上的位置,比如第一块硬盘的第一个分区是/dev/hda1,那么改分区的位置在grub中就表示为(hd0, 0);
2,然后就可以利用原来的grub引导系统,当出现grub引导菜单的时候,根据下面的提示,按 "c",会出现命令行式的grub,然后按照以下格式输入:(以第一步中的位置为例)
kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788  #注释,然后输入回车
initrd (hd0,0)/all.rdz    #注释,然后输入回车
boot                      #注释,然后输入回车

就可以看到引导安装开始了,方法A 结束。

B,如果没有grub,但是有装好的windows(以winxp为例),也可以利用windows的c:盘下的boot.ini 结合 grub for dos引导安装。这里根据直接用winxp 引导 grub for dos,或者进入实dos再用grub for dos,可以分为一下两种情况。

B1, winxp 的boot.ini + grub_for_dos中的grldr;
在新版的grub_for_dos中,出现了一个文件grldr,它可以直接由winxp引导,实现引导grub,这样就不用安装grub了。方法如下:
1, 把grub_for_dos中的grldr 和 boot目录拷贝到c盘,就是和boot.ini所在的分区的根目录下;
2,编辑boot.ini,在最后加上一行:
C:\GRLDR="grub for dos"
3, 编辑boot/grub/menu.lst,如下:
title mandriva install
kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788
initrd (hd0,0)/all.rdz
注意,为了方便,也可以直接把menu.lst放在grldr所在的分区根目录。
4, 重启,然后在winxp的引导菜单选grub for dos就可以引导安装了。

B2, winxp的boot.ini + vfloppy + grub_for_dos
1,这种方法是首先在winxp中安装vfloppy,方法就不介绍了,这样在winxp引导菜单中选vfloppy对应的项,就可以进入实dos中了;
2,在dos中运行grub_for_dos中的grub.exe,可以直接指定由B1中编辑好的menu.lst,这样比较方便:
grub --config-file=(hd0,0)/boot/grub/menu.lst ,运行就可以引导安装了。


对于方法A和B,当引导安装开始后,只要指定系统安装所需的iso文件所需的位置就可以了。

以上方法所需要的软件,可以在这里下载,http://lsec.cc.ac.cn/~peace/service/software/win4linux.rar ,当然也可以在网上下载更新
的版本。

再补充 不用grub,直接用u盘引导从硬盘安装linux的方法。
1),这里利用mandriva提供的all.img,一般来说,解压cd1,在cd1/install/image/all.img;
2),插上U盘,搞清楚U盘的设备号,用mount命令即可,我这里是/dev/sda1;
3),用root,执行 dd if=path/all.img of=/dev/sda1即可;
4),用u盘引导,进入图形化安装过程,输入iso文件所在的位置即可。
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP


[2007.06.01]GRUB4DOS初级教程 (图文版) by lianjiang@sysoft:强烈推荐新手阅读。
[2007.05.26]GRUB4DOS PXE网络启动版下载及使用指南 by bean
引用:
by Climbing 2007.02.14

我先占一个二楼的位置。

希望所有网友都来积极提供你自己认为有用的grub相关资料,但我希望你以单独发帖的形式提供(不要在这里回帖),并在发表时注明原始链接,有必要的话对原始内容进行适当的美化,方便大家阅读。

我会不断根据大家提供的内容对本帖进行补充,从而在这个帖子的基础上产生一个类似于官方GRUB的manual文档。
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

赞一个...整理的很全面~~谢谢Climbing !

较常用参数的还有:
复制内容到剪贴板
代码:
title 映射第二硬盘为第一硬盘并启动NTLDR
map (hd1) (hd0)
map (hd0) (hd1)
map --hook
find --set-root /ntldr
chainloader /ntldr
复制内容到剪贴板
代码:
title  从光盘启动
cdrom --init
map --hook
chainloader (cd0)
boot

TOP

grub新手指南(自己整理的)

Grub4dos新手指南

配置文件menu.lst的基本结构

GRUB4DOS的配置文件和GRUB一样,都是menu.lst。以下是一个例子:
default 0
title Boot First Partition root (hd0,0) chainloader +1
title Boot Second Partition root (hd0,1) chainloader +1 </pre>
菜单项是由title来指定,该例子中有两个title,就是说GRUB4DOS器启动时会显示两个菜单项,菜单的标题是title的参数,也就是 Boot First Partition 和 Boot Second Partition。         在第一个title前的命令是全局命令,它们在显示菜单之前执行。
menu.lst一般放在和启动文件GRLDR同样的目录里。
基本命令
Help    Default    Timeout
Root
用来指定根设备,例子: root (hd0,0)  
Rootnoverify
该命令也可以用来指定根设备。root在设置根设备前,先测试一下该分区的文件系统是否可以识别,而rootnoverify则省略这一测试。 rootnoverify (hd0,0)
Chainloader
把启动扇区的内容装入内存,参数+1指的是把分区的第一个扇区,例子: chainloader +1 boot
启动操作系统。在使用该命令前,必须用kernel或者chainloader把系统内核或者启动扇区/启动文件装入内存。例子: boot
在配置文件中不需要使用这个命令。这是因为GRUB在执行了菜单项的所有命令后会自动加上boot。该命令一般在命令行界面里使用。

设备名字
在GRUB中,硬盘设备用以下的方法来命名:
(hdm) m是硬盘的序号。序号0相对于BIOS的第一只硬盘。
硬盘上的分区用以下的方法来命名:
(hdm,n) n是硬盘m里分区的序号。主分区最多有4个,其序号为0-3,扩展分区的序号从4开始。例子:
硬盘0上的第一个主分区: <pre>(hd0,0)</pre>
硬盘1上的第一个扩展分区: <pre>(hd1,4)</pre>
设备也可以用相应的BIOS设备号来表示。例如,第一只硬盘设备的设备号是0x80,因此,以下的表示是等价的: (hd0,0), (0x80,0), (128,0)。
另外,对于一些文件系统来说,例如FreeBSD中使用的ffs,或者是Solaris中使用的ufs,在分区中还继续划分为子分区。子分区的表示是在分区表示的基础上加上从a开始计算的子分区序号。例如:
硬盘0上的第一个主分区里的第一个子分区: <pre>(hd0,0,a)</pre>
软盘设备用以下的方法来命名:
(fdm)  m是软盘的序号。序号0相对于BIOS的第一只软盘。软盘设备后面同样可以加上分区或者子分区的序号。
GRUB还有其它一些设备,比如说(cd)是光盘设备,(nd)是网络设备,等等。
文件名字

GRUB的文件名字是在设备名字的基础上加上文件的路径,例子:硬盘0上第一个主分区根目录里的aa.img文件: <pre>(hd0,0)/aa.img</pre>
软盘0上boot目录里的aa.img文件: <pre>(fd0)/boot/aa.img</pre>
注意:目录的分隔符是 / ,而不是Windows/DOS下常用的 \ 。
另外,你还可以用扇区的位移和数量来指定数据,比如:
<pre>(hd0,0)0+100,200+1,300+300</pre>
表示硬盘0上第一个主分区里,从扇区0起的100个扇区,然后是从扇区200起的1个扇区,最后是从扇区300起的300个扇区。当位移为零时,可以省略不写,因此,(hd0,0)+1 表示的是硬盘0上第一个主分区里从扇区0起的1个扇区,也就是分区的第一个扇区。
GRUB中纪录了一个根设备,它由root命令来指定,例如:
<pre>root (hd0,0)</pre>
根设备上的文件可以省略设备名,例如,使用了以上的root命令后,文件名 +1 就等同于 (hd0,0)+1。
注意:在GRUB4DOS的扩展中,map命令中使用的文件名的意义和以上所说的有所不同。在map命令里,(hd0,0)+1表示的不是硬盘0上第一个主分区的第一个扇区,而是整个分区。

启动操作系统
启动一般系统
一般来说,操作系统会在其所在分区的第一个扇区里放入启动代码。因此,用以下的一组命令一般可以启动硬盘0第一主分区上的操作系统:
rootnoverify (hd0,0) chainloader +1 boot
对于不同的分区,只要修改设备名(hd0,0)就可以了。
注意:大部分的操作系统需要在第一只硬盘的主分区里才能正常启动。当把该组命令作为menu.lst里某一菜单项的内容时,最后的命令boot可以省略。该方法是通用的,它可以用来启动以下提到的系统,只要分区的第一个扇区中存在启动代码。
启动DOS/Windows 95/98/Me
在GRUB4DOS中,chainloader命令可以装载DOS/Windows 95/98/Me中的io.sys。因此,可以使用类似于以下的一组命令来启动这些系统:
    rootnoverify (hd0,0) chainloader (hd0,0)/io.sys boot
启动Windows NT/2000/XP/2003/Vista
在GRUB4DOS中,chainloader命令也可以装载Windows NT/2000/XP/2003中的ntldr和Windows Vista中的bootmanager。因此,可以使用类似于以下的一组命令来启动这些系统:           
启动Windows NT/2000/XP/2003: rootnoverify (hd0,0) chainloader (hd0,0)/ntldr
boot
启动Windows Vista: rootnoverify (hd0,0) chainloader (hd0,0)/bootmanager boot

启动Linux
可以用kernel指令装载Linux内核:
rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz boot
在内核(hd0,0)/vmlinuz后可以加上启动的参数。当启动Linux内核时,可以使initrd指令来装载初始的内存盘。
rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz initrd (hd0,0)/initrd boot
注意:chainloader用于装载启动扇区和特定的启动文件如io.sys和ntldr,而kernel用于装载Linux内核和符合其标准的启动文件。在一组启动命令中,两者不能同时使用。

修改界面的颜色
GRUB界面的颜色可以用color指令来指定。color中指定了两组颜色,第一组是正常文本的颜色,第二组是加亮文本(当前选择的菜单项)的颜色。对应于每组颜色,又需要指定两种颜色。第一种是前景的颜色,第二种是背景的颜色。因此,在color总共需要指定四种颜色,分别是,正常文本前景,正常文本背景,加亮文本前景和加亮文本背景。
颜色代码:
black (黑色) red (红色) green (绿色) brown (棕色) blue (蓝色) magenta (紫色) cyan (青色)
light-gray (灰色) dark-gray (暗灰) light-red (亮红) light-green (亮绿) yellow (黄色) light-blue (亮蓝) light-magenta (亮紫) light-cyan (亮青) white (白色)
前景色可以使用全部16种颜色,而背景色只能使用前面8种颜色。 例子:
color cyan/blue white/magenta
正常文本前景: cyan (青色) 正常文本背景: blue (蓝色) 加亮文本前景: white (白色) 加亮文本背景: magenta (紫色)
color命令一般是作为全局命令,在第一个title前使用。

使用背景图片
可以用splashimage命令来加载背景图片:
spashimage (hd0,0)/spash.gz
图片必须是640x480,14色的XPM格式,可以用gzip来进行压缩。使用了该命令后,GRUB启动时将进入图形模式。这时,color命令指定的文本颜色将会无效。图形模式下颜色的设置应该使用foreground命令:
foreground ffff00
以上命令设置字体的颜色。颜色用RGB值来表示,ffff00是黄色。如果没有使用foreground命令,缺省的文本颜色是白色。
splashimage和foreground命令一般在第一个title前使用。

使用中文界面
首先,你必须使用支持中文的版本。并且,要正常显示中文的菜单,你需要使用fontfile命令来装载中文字体:
fontfile (hd0,0)/fonts.gz
fonts.gz是字体文件,并且使用了gzip来压缩。fontfile命令可以和splashimage,foreground一起使用。例如:
splashimage (hd0,0)/splash.gz foreground ffff00 fontfile (hd0,0)/fonts.gz
title 启动第一个分区 root (hd0,0) chainloader +1
title 启动第二个分区 root (hd0,1) chainloader +1  

管理员。我想加入论坛,本人是一学生,有志于从事于计算机网络,近期对装多系统很感兴趣,而且这也是必须要懂的,找了好久才找到grub这个强大的软件,也找到这个论坛,从网上关于这个软件也搜索到了很多东西,但也有很多问题,希望加入这个论坛深入学习,谢谢!
邮箱 wzfjolin@yahoo.com.cn

TOP

Grub4dos高级功能(部分)

Grub4dos高级功能(部分)

1. 虚拟磁盘
    GRUB4DOS中的虚拟磁盘是由map命令实现的。map命令的功能介绍如下:
    1.1 磁盘交换
    map命令在GRUB Legacy中的也存在,它是用作磁盘交换。比如说,你有两只硬盘,但两只硬盘上均有可启动的系统。在第一只硬盘上启动时,不需要特殊的处理,直接用chainloader装载启动扇区就可以了。不过,如果要从第二只硬盘上启动,那么单单用chainloader是不够的,这是因为很多操作系统都缺省地从第一只硬盘上装载启动所需的文件,如果文件不在其上,系统便不能顺利地读取,从而导致启动失败。
    一个原始的解决方法是在BIOS中修改启动顺序,把需要启动的硬盘放到最前面。那么,重启计算机后该硬盘便会成为第一只硬盘,从而可以正常启动。
    GRUB中的map命令便是为了解决这个问题而设计的,它可以在运行时交换磁盘,而无需修改BIOS。例如:
    title Boot First Partition on Second Disk
    map (hd0) (hd1) map (hd1) (hd0)
    chainloader (hd1,0)+1 boot
    在该例子中,使用了map命令实现了(hd0)和(hd1)的交换。要注意的是,交换是在命令boot后才生效的。因此在chainloader命令中,读取的仍然是第二只硬盘。
    1.2 建立虚拟磁盘
    在GRUB4DOS中,大大地扩展了map命令的用法。利用该命令可以建立虚拟磁盘,例子:把(hd0,0)根目录下的aa.dsk文件映射为第二只硬盘,并且使用原来硬盘上的系统启动:
    title Create Virtual Disk
    map (hd0,0)/aa.dsk (hd1)
    root (hd0,0)  chainloader +1 boot
    把(hd0,0)根目录下的aa.dsk文件映射为第一只硬盘,原来的第一只映射为第二只硬盘,并且从aa.dsk里虚拟出来的磁盘中启动:
title Boot From Virtual Disk
map (hd0,0)/aa.dsk (hd0)
    map (hd0) (hd1)  map --hook
    root (hd0,0)  chainloader +1  boot
    在上面提到,map命令的映射不是马上起作用的。但是,要从虚拟磁盘中启动,就必须从中读取数据,因此需要使映射提前起效。在以上的例子中,map --hook的作用便是使前面map命令指定的映射立刻生效。
    把(hd0,0)根目录下的aa.img文件映射为第一只虚拟软盘,并从中启动:
    title Boot From Virtual Floppy
    map (hd0,0)/aa.img (fd0)
    map –hook  root (fd0)  chainloader +1  boot  
    使用这种方式进行映射后,虚拟磁盘的内容和影像文件的内容是同步的,也就是说,如果你修改了虚拟磁盘的内容,影像文件也同样被更新。如果你重启了机器,该修改的效果仍然存在。
    在使用这种方式进行映射时,影像文件在磁盘上的存放必须是连续的。
    GRUB4DOS中建立的虚拟磁盘,包括以下所说的内存盘,都是通过截取INT 13来实现的。因此在启动了操作系统后,如果该系统是通过INT 13来访问磁盘的,例如各类的DOS,那么在进入系统后仍然可以访问虚拟盘。如果系统是采用其它方式来访问磁盘,例如Linux,各类Unix和Windows NT系列的操作系统,那么在进入系统后便不能访问虚拟盘。Windows 9X系列的操作系统比较特殊,它通常是使用保护模式的驱动来访问磁盘,但当它找不到合适的驱动时,会依旧使用INT 13来访问磁盘,因此,在Windows 9X下也可以访问虚拟磁盘。
1.3 建立虚拟内存盘
用map也可以建立虚拟内存盘,其用法和以上的很相似,你只需要在map建立虚拟盘的命令中加上--mem参数就行了。例子:把(hd0,0)根目录下的aa.dsk文件映射为第一只硬盘,原来的第一只映射为第二只硬盘,并且从aa.dsk里虚拟出来的磁盘中启动:
  title Boot From Virtual Disk
  map --mem (hd0,0)/aa.dsk (hd0)
  map (hd0) (hd1)  map --hook
root (hd0,0) chainloader +1  boot
把(hd0,0)根目录下的aa.img文件映射为第一只虚拟软盘,并从中启动:
title Boot From Virtual Floppy
map --mem (hd0,0)/aa.img (fd0)
map –hook  root (fd0) chainloader +1  boot
使用了该映射方式,影像文件的内容是装载到内存后才进行映射。这意味着,你必须有足够的内存来存放影像和启动系统。而且,虚拟磁盘和影像文件是分离的,对虚拟磁盘所作的修改不会被更新到影像文件中。
在这种映射方式中,影像文件在磁盘上的存放不需要是连续的。
1.4 自动生成MBR
影像文件有两种类型。一种是文件系统影像,它里面只包含某一个文件系统的数据。另一种是磁盘影像,它里面包含了类似于物理硬盘的结构,也就是,影像以MBR开始,然后才是文件系统的数据。对于虚拟内存盘,其结构是类似于真实硬盘的,因此在使用map命令进行映射时,应该使用磁盘影像。
GRUB4DOS考虑到了这个问题。为了让用户使用更加方便,GRUB4DOS作了如下的改进:当把磁盘影像读入内存时,程序会检测其结构,如果发现是文件系统影像,那么在它前面自动生成MBR,把它变为磁盘影像。因此,无论用户选择使用文件系统影像还是磁盘影像,装载到内存后都会变成正确的格式。
自动生成MBR还有一个应用,就是直接从硬盘上的装载分区,从而生成虚拟磁盘。例如:
title Load Partition From Disk
map --mem (hd0,0)+1 (hd0)
map (hd0) (hd1)   map --hook
root (hd0,0) chainloader +1 boot
该菜单的功能是把硬盘上第一个分区的内容装载到内存,并且自动在其前面加上MBR而生成虚拟磁盘。然后,把该虚拟磁盘映射为第一只硬盘,原来的硬盘映射为第二只硬盘。最后,从虚拟磁盘中启动。
在使用该菜单启动后,系统分区的内容和好像和原来一样,但这时实际是使用在内存里的虚拟磁盘。对分区的修改在重启机器后便会消失。
该菜单是把整个分区的内容装载到内存,要确定内存足够大,否则命令不会成功。
在map命令中,(hd0,0)+1是指整个(hd0,0)分区,而不是(hd0,0)的第一个扇区。这种表示只是在map命令中适用,在其它的地方,(hd0,0)+1还是原来的意义。


管理员。我想加入论坛,本人是一学生,有志于从事于计算机网络,近期对装多系统很感兴趣,而且这也是必须要懂的,找了好久才找到grub这个强大的软件,也找到这个论坛,从网上关于这个软件也搜索到了很多东西,但也有很多问题,希望加入这个论坛深入学习,谢谢!
邮箱 wzfjolin@yahoo.com.cn

TOP

Grubinst使用介绍 (自己搜集整理的)

Grubinst使用介绍
1. 介绍
grubinst是一个用来将GRUB4DOS安装到硬盘的MBR(或者分区的引导扇区)以及映像文件中的工具。
grubinst.exe是一个命令行方式的程序,它的功能基本上与不点的GRUB4DOS发行包中的bootlace.com(可以运行在纯DOS或者Linux环境)相同,但是跟bootlace.com不同,grubinst完全是用C语言开发的,能够在Windows NT/2K/XP、Linux和FreeBSD等操作系统下编译并运行。
grubinst_gui.exe是grubinst.exe的图形界面shell程序,对于那些不熟悉命令行操作的用户来说,它提供了更友好的图形操作界面,目前,grubinst_gui.exe只能运行在Windows操作系统(事实上是只能运行在NT/2K/XP环境)下。
另外请注意,当前版本的grubinst不支持在Windows 95/98/ME下修改硬盘的MBR,对于这些操作系统,请使用bootlace.com。

2. grubinst跟bootlace.com的区别
在bootlace.com里,硬盘盘等设备只能用设备的BIOS识别号来表示,如0x80表示第一块硬盘,0x81表示第二块硬盘等等。而在grubinst中,硬盘则可以用特定的设备文件名来表示(跟grub的传统类似),如(hd0), (hd1)...。软驱暂时还不支持这种表示方式。
grubinst支持几个新的选项,主要用于恢复原来的MBR。
--save-mbr=FILENAME
这个选项用于保存原来的MBR到文件中。
--restore-mbr=FILENAME
这个选项用来从前面保存的文件中恢复原来的MBR。
--restore-prevmbr
这个选项用来恢复保存在硬盘或者映像文件中第二个扇区的原来的MBR。
正常情况下,原来的MBR只有一个扇区,它被保存在新的GRLDR MBR中的第二个扇区中。你可以用--restore-prevmbr选项来恢复它。然而,如果原来的MBR的长度超过一个扇区,例如,你安装了别的引导管理软件,那么GRLDR MBR就没有足够的空间保存原来的MBR。在这种情况下,你应该使用--save-mbr=FILENAME将原来的MBR保存到一个外部文件中,需要时再使用--restore-mbr=FILENAME选项从保存的文件中恢复它。
3 用法及示例
取自grubinst 1.1的--help。(by Climbing)
grubinst  [选项]  设备或文件
选项:
--help,-h               显示本帮助
       --pause                 退出前暂停
       --version               显示grubinst版本信息
       --verbose,-v            输出详细信息
       --list-part,-l          列出设备或者文件中的所有分区信息
       --save=FN,-s=FN         保存原来的MBR/引导扇区到文件FN中。
       --restore=FN,-r=FN      从前面备份的FN中恢复原来的MBR/引导扇区
       --restore-prevmbr,-r    恢复保存在设备或者文件第二扇区中的原来的MBR
       --read-only,-t          只是模拟操作,没有真正的写操作(测试模式)
       --no-backup-mbr         不在第二扇区中备份原来的MBR。
       --force-backup-mbr      强制备份原来的MBR到第二扇区(默认选项)
       --mbr-enable-floppy     在软驱上搜索grldr(默认选项)
       --mbr-disable-floppy    禁止搜索软驱上的grldr
       --mbr-enable-osbr       当分区表非法时(通常是某操作系统的引导扇区),仍然启动原来的MBR(默认选项)
       --mbr-disable-osbr      当分区表非法时(通常是某操作系统的引导扇区),禁止启动原来的MBR。
       --duce                  (不明白,无法翻译)disable the feature of unconditional entrance to the command-line.
      --boot-prevmbr-first    在搜索GRLDR之前尝试首先启动原来的MBR
      --boot-prevmbr-last     在启动原来的MBR之前先搜索GRLDR(默认选项)
      --preferred-drive=D     优先启动磁盘编号, 0 <= D < 255.
      --preferred-partition=P 优先启动分区编号, 0 <= P < 255.
      --time-out=T,-t=T       在启动原来的MBR之前等待T秒,如果T是0xff,无限等待,默认等待5秒
      --hot-key=K,-k=K        如果在启动原来的MBR之前按下了指定键,则启动GRUB。K的长度为一个字(word),也就是int16/AH=1中断的AX寄存器值。高位字节是对应按键的扫描码,低位字节是ASCII码。默认按键是0x3920,也就是空格键。
      --key-name=S            指定热键的显示名
      --floppy,-f             如果安装目标是软驱,则指定这个选项。
      --floppy=N              如果安装目标是硬盘的某个分区,则指定这个选项。N用来指定分区编号:0,1,2和3对应主分区,4,5,6,...对应逻辑分区。
      --sectors-per-track=S   对--floppy选项指定每磁道扇区数,1 <= S <= 63, 默认是63.
      --heads=H               对--floppy选项指定磁头数,1 <= H <= 256, 默认是255.
      --start-sector=B        对--floppy=N选项指定隐藏扇区数。
      --total-sectors=C       对--floppy选项指定总扇区数,默认是0。
      --lba                   对--floppy选项使用LBA方式。如果软驱的BIOS支持LBA,你可以指定这个选项。按规定所有的软驱BIOS都支持CHS方式,所以最好指定--chs选项。如果既没指定--lba也没指定--chs,则LBA指示字节(一般是启动扇区第3字节)的值不会被改变。
      --chs                   对--floppy选项使用chs方式。如果你的软驱BIOS不支持LBA方式,你应该指定--chs选项。我们假定所有的软驱BIOS都支持CHS方式,所以推荐使用--chs选项。如果既没指定--lba也没指定--chs,则LBA指示字节(一般是启动扇区第3字节)的值不会被改变。
      --install-partition=I   安装引导扇区到指定硬盘(或硬盘映像)的分区I。
       -p=I
      --boot-file=F,-b=F      改变默认启动文件名(默认是grldr)。
      --load-seg=S            改变启动文件的默认内存加载段(默认是0x2000:0)。
      --grub2,-2              装载grub2的内核g2ldr而不是grldr。
      --output,-o             输出内置的grldr.mbr(受-b参数的影响)。
示例 1: 安装GRLDR MBR到第一个硬盘   grubinst (hd0)
示例 2: 安装GRLDR MBR 到磁盘映像文件  disk.dsk grubinst disk.dsk
示例 3: 恢复第一块硬盘的单扇区MBR   grubinst --restore-prevmbr (hd0)
示例 4: 安装GRLDR MBR到第一块硬盘并保存原来的MBR到MBR.sav文件中。
grubinst --save-mbr=MBR.sav (hd0)
示例 5: 从保存的MBR.sav中恢复原来的MBR。   grubinst --restore-mbr=MBR.sav (hd0)
示例 6: 在启动时10秒内按下空格才加载GRUB
grubinst --boot-prevmbr-first --time-out=10 (hd0)

管理员。我想加入论坛,本人是一学生,有志于从事于计算机网络,近期对装多系统很感兴趣,而且这也是必须要懂的,找了好久才找到grub这个强大的软件,也找到这个论坛,从网上关于这个软件也搜索到了很多东西,但也有很多问题,希望加入这个论坛深入学习,谢谢!
邮箱 wzfjolin@yahoo.com.cn

TOP

GRUB4DOS Guide by Diddy @ BOOT-LAND(English)

[2008.11.13]GRUB4DOS Guide(使用指南英文版) by Diddy@boot-land:

http://diddy.boot-land.net/grub4dos/Grub4dos.htm
http://www.boot-land.net/forums/index.php?showtopic=5187
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

lianjiang站友的grub4dos初级教程_CHM图文版【2009-04-08 更新】

原始链接:http://bbs.wuyou.com/viewthread.php?tid=110562

教程下载链接(Climbing提供):
1、grub4dos初级教程CHM图文版(090118)by lianjiang
2、grub4dos初级教程CHM图文版(090408)by lianjiang(基于grub4dos-0.4.4正式版)
或从附件中下载:
grub4dos初级教程_CHM图文版_090118_by_lianjiang.rar (979.99 KB)
grub4dos初级教程_CHM图文版_090408_lianjiang.rar (1.01 MB)

2009-01-18:
grub4dos已进入最终正式版发布的倒计时,因此对初级教程进行最后一次更新。
此教程以后不再更新。

新增内容:

进阶篇:
3.3b 用批处理自动给grldr改名 (适用于最新版grldr)NEW!
3.6 利用dd命令传递参数的方法与应用 NEW!

附录:
4.07 GRUB2使用简介 by bean NEW!
4.08 GRUB2高级教程 by bean NEW!
4.09 gfxmenu定制高级教程(新增可定制菜单) by bean NEW!
-----------------------------  
           grub4dos初级教程
                               lianjiang 2009年1月

前言: 为何写此初级教程?

假如你是第一次听说grub,你可能说我不需要grub。那么,你是否用过“一键ghost”,或者“矮人DOS工具箱”?如果你用过的话,那么你实际上已经在用grub了。包括本人的“GGhost一键恢复”在内的大多数windows下安装的一键恢复类工具及其它dos类维护工具合集,都是基于grub的。

grub4dos相关的资料互联网上并不少,grub4dos软件包里也有说明文件,可是绝大多数资料并不适合刚接触grub的人。初学者下载了 grub4dos软件包后,即使大概看了readme.txt文件后,也很可能仍然是一团雾水,不知从何处入手。出现这种状况的一个主要原因是,此软件是作者利用业余时间开发的,开发者在有限的时间里集中精力于排除软件bug,从而无过多剩余精力撰写文档。[注:bean的中文文档的发布,已使文档方面欠缺的局面得以根本改观。]

其实,初步使用这个软件并不难,可以说非常简单。下面的内容参考了有关资料,并结合自己的使用经验,供初学者参考,希望能对你入门grub有所帮助。我自身也是接触grub不久,对grub的了解还很肤浅,错误之处,在所难免,还望不吝指出。



致谢

本文的完成,参考、引用了众多的资料,不少已找不到原始出处。初稿完成后,网友们提出了不少意见和建议,也得到了软件开发者的支持和鼓励。在此一并表示感谢。
                                            lianjiang 2007.03 初稿
                                                         2009.01 最后修改

【注: 我的网盘:http://lianjiang2007.ys168.com  http://lianjiang2004.ys168.com 也提供部分grub相关文件及资料的下载。】


目录

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 (中文)
夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

夫大块载我以形,劳我以生,佚我以老,息我以死。故善吾生者,乃所以善吾死也。

在本论坛发帖前,请认真阅读下面的链接及建议:
1、论坛基本守则
2、下面是论坛历史上真实发生的对论坛规则如何理解和应用的讨论帖子,对新手很有参考价值(请抱平常心浏览):
http://bbs.znpc.net/viewthread.php?tid=4505
http://bbs.znpc.net/viewthread.php?tid=5586
3、提问前先潜水并搜索,避免发月经帖;尊重别人就是尊重自己。
4、Public用户回帖时请注明自己的ID和邮箱以供识别,这不意味着你一定能获得邀请码,但遵守规矩总是有利的。
5、基本上我们认为你不需要注册本论坛ID,因此不要单独发帖索要(谁需要ID,由我们决定),你最好只关注自己的问题和论坛的规矩。

TOP

发新话题