 |
教程: Linux教程-软件教程-GRUB for DOS 磁盘仿真命令简介 |
 |
|
|
| 教程: Linux教程-软件教程-GRUB for DOS 磁盘仿真命令简介 |
|
|
|
|
该扇区通常是操作系统的引导扇区,例如 DOS 的 boot record)。这是对于 int13/AH=03h 来说的。程序并不禁止 int13/AH=43h (扩展写盘功能)的写入。也就是说,用 int13/AH=43h 可以写入任何扇区。 safeboot 默认时是开启的,可以使用 map 命令行参数 --unsafe-boot 来关闭它。【注:不存在 --safe-boot 选项。默认时之所以打开 safeboot,是因为曾经碰到 win98 破坏引导区的事情发生。如果您不准备启动 win98,您可以加上 --unsafe-boot 选项,从而允许 int13/AH=03h 写入引导扇区。很明显,只有在对虚拟盘进行分区以及格式化、或者运行 dos 的 sys 命令时才需要 --unsafe-boot 选项。】
map 命令还有两个命令行参数:
--heads-per-cylinder=NUM_HEADS
--sectors-per-track=NUM_SECTORS
NUM_HEADS 的取值范围是 1 至 256;NUM_SECTORS 的取值范围是 1 至 63。但它们也允许是 0,这表示用户允许 grub for dos 任意挑选一个合适的值。如果 map 的命令行没有指定 --heads-per-cylinder 以及 --sectors-per-track,那么,当 grub for dos 不能从 img 文件的第一扇区探测到一个合适的值时,会给出错误信息并拒绝仿真。
这里指出一点限制。GRUB for DOS 扩展了原来 GNU GRUB 的仿真。GNU GRUB 原来的仿真是一种简单的仿真,只能仿真整个磁盘,不能用一部分扇区来仿真。新的仿真可以用磁盘上的部分扇区序列来仿真,但是,这个功能的实现,利用了新型 BIOS 的逻辑块寻址(LBA)功能,也就是磁盘扩展读写功能。这对于老旧的 BIOS 是无效的。所以,老的 BIOS 无法利用新的仿真功能。但 GRUB for DOS 兼容 GNU GRUB 的仿真,所以,老的 BIOS 仍然可以用 GRUB for DOS 的“用整个磁盘来仿真”的功能,这是原来 GNU GRUB 本来就有的功能,其用法在 grub for dos 中完全没有变化。
可以在 grub> 提示符下用 help map 命令察看即时帮助信息。
下面介绍另外几个 map 命令行参数的用法。
map --status 这条命令显示磁盘仿真的状态,很有用。所显示的状态标题栏中,最右边的 Hk 表示 hook 的意思,其值是两位二进制数 xy,因此取值有四种:00,01,10,11。当 x 为 1 时,表示现在 grub 正在使用该虚拟磁盘。当 x 为 0 时,表示现在 grub 没有使用该虚拟磁盘。当 y 为 1 时,表示在运行 map --rehook 命令之后,grub 将使用该虚拟磁盘。当 y 为 0 时,表示在运行 map --rehook 命令之后,grub 将不使用该虚拟磁盘。
map --status 命令所显示的其它状态值都是容易理解的,它们都是以十六进制来表示的数值。
map --hook 这条命令用于直接在 grub 内部就开始使用仿真。通常 grub 本身是不使用仿真的,有了这条命令之后,从 grub 命令行就可以开始检验仿真的效果了。cool!关闭这个功能的命令是 map --unhook
map --unhook 正如上面解释的,关闭 grub 的即时仿真功能。
map --rehook 这条命令的用途:当你使用了 map --hook 命令之后,又用了新的 map 命令映射了别的磁盘,那么,你可以用 map --rehook 命令来激活全部这些仿真。这条命令等价于以下两条命令接连发出:
map --unhook
map --hook
当撤销磁盘仿真时,仅仅用 map --unhook 是不够的,还需要用类似于 map (fd0) (fd0) 的命令来撤销 (fd0) 的仿真。“map --unhook”命令仅仅使得在 grub 命令行之下不再使用仿真了,当您用 boot 命令时,会自动再次 hook 上。要想使得某个 map DESTINATION FROM_DRIVE 命令彻底失效,必须用 map FROM_DRIVE FROM_DRIVE 命令来撤销它【将某个 BIOS 磁盘号码映射到它自己,就意味着撤销它】。撤销部分 BIOS 磁盘号码的仿真之后,一般还需要运行 map --rehook 命令。例如,“map (hd1) (hd1)”命令撤销了对 (hd1) 的仿真,但在运行“map --rehook”之后才起作用。
一些遗留问题:
1。支持从 ISO 映像文件启动。(情况复杂,有难度)
2。支持从 CDROM 启动。(情况复杂,有难度)
3。支持从 win98 下直接运行 grub。(技术难度高)
4。自动探测和恢复 BIOS 中断向量,从而使 grub for dos 支持任意的实模式 DOS。(技术难度中等)
5。在 emm386 运行时也能运行 grub for dos(首先解决从保护模式切换到实模式)。(技术难度高)
6。解决在磁盘仿真时和 win98 的一些冲突问题。(技术难度高)
7。增加退出到 DOS 的功能。(技术难度中等)
8。创建一个可以生成“具有连续磁盘扇区的文件”的工具。
欢迎有兴趣的朋友继续对 GRUB for DOS 作进一步开发。
中国 DOS 联盟之 联合 DOS 论坛 上的朋友们给予了大量的测试、建议、帮助,衷心感谢各位。特别感谢 Wengier 在技术上给予的很多直接帮助,尤其是他对于“32位磁盘存取”的深刻洞察,帮助解决了 GRUB for DOS 0.2.0 所遇到的一个关键技术障碍。
[5]
上一页 [1] [2] [3] [4] [5]
|
|
| 教程录入:admin 责任编辑:admin |
|
|
上一篇教程: 教程: Linux教程-软件教程-能让Linux运行Windows软件的Wine
下一篇教程: 教程: Linux教程-软件教程-kingate代理服务器指南 |
|
|
|
|
|
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|
|
|
|