展会信息港展会大全

多系统引导工具GRUB4DOS(GRUB FOR DOS)简介
来源:互联网   发布日期:2011-10-01 14:11:01   浏览:10803次  

导读:人工智能研讨论坛 GRUB for DOS(注:一般简写为GRUB4DOS)是GNU GRUB的DOS编译版本(译者注:准确的说,GRUB4DOS是一个基于GNU GRUB Legacy的二次开发版本),...

[资料文本] 多系统引导工具GRUB4DOS(GRUB FOR DOS)简介

不点, GRUB4DOS, GRUB

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)。

GRUB4DOS是免费的并且开放源代码的软件,遵从GNU General Public License协议 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或者软盘上(包括映像文件)。

启动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)。

相信许多liunxer初次听到“GRUB4DOS”这个名字,第一感觉就是:这个对我没用,因为我不用DOS,即使用也不会去通过它启动GRUB。先别急,再问一句:您是否用过grldr呢?是否用过MaxDos、一键ghost、矮人DOS工具盘?如果答案是肯定的,那您已经在用GRUB4DOS了。是它的名字给人们造成了误解,这也是历史遗留问题——一开始仅仅是“for dos”,而后来开发越来越深入,“FOR DOS”已远不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,很久之后才重新发现它,所以写下这篇文字,希望更多人能够了解并使用这一优秀作品,享受它带来的可靠与便捷。

首先搞清楚与 GNU GRUB 的关系。 GNU GRUB 分为 GNU GRUB Lagecy 和 GNU GRUB2 两代 。GNU GRUB Lagecy 其实就是原来的 GNU GRUB 0.xx ,最新版是 2005 年发布的 GNU GRUB 0.97 。目前已停止开发,并改名为 GNU GRUB Lagecy 。GNU GRUB2 是第二代 GRUB,它将取代原来的 GNU GRUB (例如0.9x版),但目前还处于开发阶段,尚未发布正式版。

而 GRUB4DOS 则是对 GNU GRUB Lagecy 的二次开发。该项目最早由“不点”在2003年发起,目前主要由他、bean 和另外几位中国人维护,很多人贡献了代码,再加上广大网友热心帮助,使得 GRUB4DOS 不断完善。在当前新的GRUB2没有到位、老的 GNU GRUB Lagecy 又有许多不完善的情况下,GRUB4DOS 受到越来越多人的欢迎。

GRUB4DOS 在保留 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)将GRUB4DOS引导代码写入硬盘MBR,开机直接进入grub环境
乍一看这不算什么改进——GNU GRUB本来就可以这样引导,但实际上在这里 GRUB4DOS 有相当大的革新。
GNU GRUB 的安装方法是: root (xxx,x) setup (xxx) 第一句是指定一个分区,该分区须存放有/boot/stage1和/boot/stage2文件,第二句是将引导代码写入硬盘MBR。这样安装的 GRUB,其MBR引导代码被设置为从固定的分区加载stage2。
假如我们某一天因为某些原因,需要删除或格式化该分区,或者做一些会引起该分区序号变化的操作(比如用 pqmagic 在该分区前添加或删除分区),就需要预先重装一次grub,重新指定存放stage2文件的分区,否则将无法引导。这一点上 GNU GRUB 显得不够灵活。
而 GRUB4DOS 采取了新的策略:其MBR引导代码并非固定地指向某个分区,而是搜索所有分区,查找并加载 grldr,只要某分区上存有一份 grldr,就能启动。而且安装时可以将原微软的MBR备份,启动时如果找不到grldr,便自动加载备份的MBR。
显然这种方式更加灵活、稳健,所以 GRUB4DOS 虽然保留了 GNU GRUB 的全部命令和功能(包括 setup 命令),但不推荐使用传统的安装方式。

当然 GRUB4DOS 方式也不是十全十美,因为其引导代码还不能识别所有的文件系统,目前支持仅 NTFS/FAT12/FAT16/FAT32/EXT2/EXT3(也不少了 ,以后将支持更多的格式),所以可能需要专门设一个分区来存放 grldr 。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。

4、图片背景支持
可用640x480@14位色的图片做背景。图片制作请参考这里:
http://bbs.znpc.net/viewthread.php?tid=2204&extra=page%3D4

5、中文支持 GRUB4DOS
发布有中文版,大大方便了中文用户。

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

GRUB4DOS WIKI:http://grub4dos.sourceforge.net/wiki/index.php  
GRUB4DOS 下载地址:http://sourceforge.net/projects/grub4dos/
GRUB4DOS 论坛讨论区:http://bbs.znpc.net/forumdisplay.php?fid=4  

refered to:
GRUB4DOS(GRUB FOR DOS)简介
http://info.52z.com/html/27401.html
GRUB4DOS(GRUB FOR DOS)简介
http://hi.baidu.com/ny999/blog/item/fb82eaddc79f76e977c63828.html

本主题由 jink2005 于 2011-5-12 23:39 分类

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港