找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2119|回复: 3

GNU GRUB及GRUB4DOS参考资料汇总[转贴】

[复制链接]
发表于 2007-5-29 12:31:40 | 显示全部楼层 |阅读模式
GNU GRUBGRUB4DOS参考资料汇总
整理者:Climbing(xclimbing@msn.com)
整理日期:2007.02.14

这里引用的很多资料都来自于互联网,我只是进行了适当的翻译和整理,版权归原网站或者原作者所有。
基本上,看完这里汇总的资料,你已经对GRUBGRUB4DOS有了基本的了解(包括使用),至于高级的用法要靠你自己去努力和创造了。

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://www.znpc.net/bbs/viewthread.php?tid=2269

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


2. GRUB for DOS - Bridging DOS/Windows to Unix/Linux
GRUB for DOS,连接DOS/WindowsUnix/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 GRUBDOS编译版本(译者注:准确的说,GRUB4DOS是一个基于GNU GRUB Legacy的二次开发版本),它可以运行于实模式的DOS环境下,而且它还具有很多新功能,例如:它可以通过Windows(NT)boot.ini((使用grldr文件)或者Linuxkexec(使用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/Windows9xCONFIG.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.exeWindows下将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 NTNTLDR,方式:chainloader (DEVICE)/ntldr

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

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

注:使用类似的方式可以启动NTsetupldr.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.
下面是一些有关GRUB4DOSWINGRUB的有用的链接:

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下载包):
CODE:
# 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://www.znpc.net/bbs/viewthread.php?tid=2214

相信许多liunxer初次听到“GRUB FOR DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别急,再问一句:您是否用过grldr呢?是否用过MaxDos、一键ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB FOR DOS了。
是它的名字给人们造成了误解,这也是历史遗留问题。一开始确实仅仅是“for dos”,后来开发面越来越广,功能越来越强,“for dos”已不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,直到最近才对它逐步了解,相见恨晚 。正是我个人的历程促使我写下这篇文字,希望更多人能尽快地了解并使用GRUB4DOS这一优秀作品,享受它带来的可靠与便捷。
很多新手都误以为GRUB4DOSGNU GRUB的一部分或一个组件,其实不然。应该说它是对GNU GRUB的二次开发,最早由不点2003年发起,目前主要由他和另外几位中国人维护,很多人贡献了代码,还有广大网友热心地帮助测试,使得GRUB4DOS发展到今天取得了长足进步。目前最新版本是0.4.2,基于GNU GRUB 0.97,并做了相当多的改进,简单归纳如下:
1A20代码
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.97bug还有很多,有些在Changelog中并没有提到。到目前为止,已经把那些严重的BUG排解殆尽了,应该可以比较平滑地使用GRUB4DOS了。
2、磁盘仿真(虚拟磁盘)
这是GRUB4DOS的一大特色功能,开发者下了不少功夫。这一功能是将
软盘镜像或硬盘镜像甚至某个硬盘分区
虚拟成
软驱或硬盘,进而运行其中的操作系统(DOSwin98),类似于以前流行的虚拟软驱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 (xxxx),然后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),DOSlinux下用bootlace.com(参见readme)。
4、图片背景支持
相信大多数用户都乐于使用图片背景来代替单调的黑白画面。虽然仅能支持 640x480@14位色,但也总比两色好得多。
5、中文支持
GRUB4DOS
中同时发布有支持中文的grldrgrub.exe,大大方便了中文用户。
6、光驱支持
该功能使得用户可以再GRUB环境下访问光驱,并可由光驱启动,很实用。
以上仅是大致介绍,更详尽的信息和使用方法请参阅readme
现在我用的每块硬盘包括u盘都安装了GRUB4DOS,既可启动windows,又能启动linux,还可通过磁盘仿真来启动dos,放上自己喜欢的图片做背景,全中文界面,HOHO,感觉很不错,您不想试试吗?
本文参考资料来自互联网,如有错漏敬请指正。更新日期:20070127

4. GRUB 2使用简介 by bean@sysoft
sysoft论坛的bean所写的GRUB 2中文简介:http://www.znpc.net/bbs/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正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。


 楼主| 发表于 2007-5-29 12:32:42 | 显示全部楼层
安装和使用

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://www.znpc.net/bbs/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分区没有装任何东西。
QUOTE:
  
###############################################
#
# 一个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 控制台。显示如下:
QUOTE:
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 键时得到以下列表:
QUOTE:
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 文件系统,到装入内核的时候了
QUOTE:
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文件所在的位置即可。
回复

使用道具 举报

发表于 2007-5-29 12:38:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-6-7 12:53:46 | 显示全部楼层
受教了,谢谢楼主:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-4-20 15:29

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表