转载请注明作者:ptptptptptpt@163.com

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

是它的名字给人们造成了误解,这也是历史遗留问题——一开始仅仅是“for dos”,而后来开发越来越深入,“FORDOS”已远不能涵盖其全部。于是它的名字就成了一个障碍,新接触的人往往望名生意,以为它是专给DOS用的,便不去关注——我本人就是如此,很久之后才重新发现它,所以写下这篇文字,希望更多人能够了解并使用这一优秀作品,享受它带来的可靠与便捷。

首先搞清楚与 GNU GRUB 的关系。 GNU GRUB 分为 GNU GRUB Lagecy 和 GNU GRUB2 两代 。GNUGRUB 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 与 gnu grub 0.97 是 100% 兼容的。

在 grub4dos 下可以用 root 和 setup 命令来安装 gnu grub 的 stage's 文件。这些 stage's文件既可以是来自 GNU GRUB 原版的,也可以是来自于 GRUB4DOS 中的(编译 grub4dos 就可以生成所有的 stage's文件)。

但是,不要以为 stage's 文件在你的几台或者几十台机器上成功了,你就认为它们是可靠的了。我建议发行版的制作者们应该认真考虑究竟是选用 GRLDR.MBR 还是选用 setup 命令,这两者的差别可大了。据我观察,旧的 setup 所安装的stage's 的引导失败率很高,在我们国内,每年都有失败的报告,失败率很稳定的,而不是说失败报告越来越少。而 GRLDR 安装在 MBR上,我确实还没有见到一例失败的报告。当然,如果你认为 grub4dos的总体使用人数少,还没有足够充分地暴露出问题来,那你这种想法也是合理的。所以,最后裁定是在于你自己了。

在我看来,旧的 stage's 的失败率很稳定,随着年份的增加,失败率不增也不减。这个事实应该足以让你放弃这种安装方法了。旧的 gnugrub 0.97 也基本上是处于不维护的状态了,这实际上等于说,这里面的 bug 很难有保证会得到解决了。这就迫使你要么选择 grub2,要么选择 grub4dos。

……

开发者们如果觉得 grub4dos 有什么地方需要完善的,完全可以给 grub4dos 提建议,或者提交补丁。不少人已经把 grub4dos当作仍然处于活跃开发当中的 grub legacy 了,当他们给 grub 0.XX 的补丁被搁浅时,他们又把补丁投递给了 grub4dos。”

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

4、图片背景支持
可用 640x480@14位色 的图片做背景。

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

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

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

GRUB4DOS  WIKI:http://grub4dos.sourceforge.net/wiki/index.php/Main_Page

GRUB4DOS下载地址: http://download.gna.org/grub4dos/

GRUB4DOS 论坛讨论区:http://www.znpc.net/bbs/forumdisplay.php?fid=4

GRUB4DOS 简介相关推荐

  1. GRUB4DOS(GRUB FOR DOS)简介

    GRUB4DOS(GRUB FOR DOS)简介< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com: ...

  2. grub4dos初级教程-入门篇

    grub4dos初级教程-入门篇 2008年04月21日 星期一 15:37 0 为何写此初级教程? 假如你是第一次听说grub,你可能说我不需要grub.那么,你是否用过"一键ghost& ...

  3. Grub 4 DOS 简介

    Grub 4 DOS 简介 From Grub4DOS Wiki 目录 1 总述 2 GRUB4DOS 对 GNU GRUB 0.97 的改进 2.1 A20代码 和 bug修正 2.2 磁盘仿真(虚 ...

  4. 系统启动之——grub4dos篇

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

  5. [ZT]grub4dos初级教程-入门篇

    From:http://hi.baidu.com/rabeta/blog/item/4814a81bd7d9d91c8618bff0.html 0 为何写此初级教程? 假如你是第一次听说grub,你可 ...

  6. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  7. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  8. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  9. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

最新文章

  1. 轮盘赌算法的简单说明
  2. python 遍历删除
  3. 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结
  4. 同一个局域网,不同网段的远程控制
  5. block作用域与流程控制(块block、if-else、while、do-while、for-foreach、switch-case、break、continue、label)
  6. centos升级内核
  7. bat kafka启动_windows下搭建Kafka,并通过命令窗口收发消息
  8. 2017.4.26 组合数问题 思考记录
  9. 《那些年啊,那些事——一个程序员的奋斗史》——30
  10. 使用Intersection Observer API创建无限加载组件
  11. vue-scroller的使用
  12. cookie和session笔记
  13. 服装制版师用软件代替手工_楚天都市报_多媒体报
  14. 极简fseek()函数讲解,一分钟掌握
  15. 线性规划——单纯形法
  16. 【科技论文的写作程序及方法】
  17. 偏差、方差、标准差、协方差
  18. c语言中的绝对值符号
  19. 记一次git pull 错误
  20. WPF 委托和事件实现子窗口回调函数, 实时刷新主窗口控件

热门文章

  1. Open-XML-SDK 如何实现更新Word中域的值
  2. 大气科学需要计算机能力吗,大气科学专业学什么
  3. 双照电子受邀参加广州人工智能公共算力中心企业对接会
  4. 一文快速搞懂对95%置信区间的理解
  5. 代码随想录训练营day57
  6. Attention机制和SE-net论文总结
  7. Helly定理与证明
  8. iphone 的屏幕像素
  9. 用Web3.py、Infura和Graph查询以太坊数据
  10. CAD软件入门教程,分享给零基础的人