欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 操作系统 >> Linux >> Linux软件 >> 教程正文

  没有公告

教程: Linux教程-软件教程-GRUB for DOS 磁盘仿真命令简介 更多...
教程: Linux教程-软件教程-GRUB for DOS 磁盘仿真命令简介

法。

1。把硬盘上某个盘符(例如 C:)仿真为 A:,并从 C: 盘引导 win98:

map --read-only (hd0,0) 1 (fd0)
chainloader (hd0,0) 1
rootnoverify (hd0)
boot

上述 (hd0,0) 是 Win98 下的 C: 盘。进入 Win98 后可以发现,现在 A: 盘的内容跟 C: 盘完全一样。这时,如果随意在 A: 盘上删除文件,会导致 C: 盘也删除该文件,因而有可能引起故障(例如死机)。

在 map 命令中,(hdm,n) 1 被解释为代表整个 (hdm,n) 分区,而不仅仅是代表分区的第一个扇区。相比之下,在其它地方,(hdm,n) 1 仍然只代表分区的第一扇区。

2。把硬盘上某个盘符(例如 C:)仿真为 A:,并从 A: 盘引导 win98:

map --read-only (hd0,0) 1 (fd0)
map --hook
chainloader (fd0) 1
rootnoverify (fd0)
boot

此处需要用 map --hook 命令激活 A: 盘的就地仿真。如果没有 map --hook 命令,那么后续的 chainloader (fd0) 1 命令就要寻找真实软驱的软盘介质上的内容,而不是我们想要的虚拟软盘上的内容。
最后一条 rootnoverify (fd0) 告诉引导程序说,我们是从软盘启动机器的。

3。把硬盘上某个 img 文件仿真为 A:,并从 C: 盘引导 win98

map --read-only (hd0,0)/file.img (fd0)
chainloader (hd0,0) 1
rootnoverify (hd0)
boot

4。把硬盘上某个软盘 img 文件仿真为 A:,并用该 img 映象里面的文件 dos.img 来引导机器:

map --read-only (hd0,0)/file.img (fd0)
map --hook
chainloader (fd0)/dos.img
rootnoverify (fd0)
boot

此处,file.img 是 C: 盘上的一个软盘映像文件,在这个映象文件中,包含了一个叫做 dos.img 的文件。如果不用 map --hook 命令(该命令启用了就地仿真功能),则无法在后续的 grub 命令行中访问 dos.img 文件。这个例子只是说明 map --hook 命令的作用,我们通常是不会用到这个例子中的方法的。


上述命令中,软盘可以是任意的规格,任意的大小。

下面举一个硬盘仿真的例子,但是最好不要启动 win98,而应当只限于启动 DOS:

map --read-only (hd2,6) 1 (hd0)
map --hook
chainloader (hd0,0) 1
rootnoverify (hd0)
boot

这里,(hd2,6) 1 是第三块硬盘上的某个逻辑 DOS 分区。“map (hd2,6) 1 (hd0)”命令将扩展 DOS 分区仿真为 BIOS 的 0x80 号硬盘。激活就地仿真【map --hook】之后,“chainloader (hd0,0) 1”中的 (hd0,0) 1 就是仿真之后的虚拟 0x80 硬盘分区,而不是仿真之前的 0x80 号硬盘分区了。【此处的 (hd0,0) 1 实际上就是仿真之前的 (hd2,6) 1】。您应当保证这时在该分区中存在着 DOS,否则引导会失败。如果您不启动 win98,可以不用 --read-only 参数。如果试图启动 win98,通常会引导失败。

因为 MS-DOS 的逻辑分区之前的 63 个扇区处,都存放了一个“扩展分区的分区表”,所以有可能用它来仿真一个硬盘。“扩展分区表”中的引导记录全都是 00 字节。GRUB for DOS 0.2.x 在读取这个分区表的时候,作了一些修改,使得这个表看起来像是一个合法的硬盘主分区表。GRUB for DOS 并不写入该扇区,因为默认的 safeboot 在起作用。这是安全的。在这种情况下不应当加入 --unsafe-boot 选项,因为 win98 会随意写入虚拟磁盘的引导扇区,这将导致该分区表信息的错位,造成扩展分区不可访问的后果【内容还在,只是扩展分区表错误导致不可访问。手动修改扩展分区表可以解决这个问题,但需要计算准确】。

上述硬盘仿真的例子,如果改成下面的方式,这将是失败的:

map --read-only (hd2,6) 1 (hd0)
chainloader (hd2,6) 1
rootnoverify (hd0)
boot

分区 (hd2,6) 的 DOS 引导记录中有一个“隐含扇区”的字段,这个字段必须修改。如果没有 map --hook 命令,该字段不会被正确修改,因而将导致引导失败。修改该字段的程序,是在 int13 的中断处理程序中,所以需要 map --hook 之后再读出该扇区的内容【此时所读出的该扇区内容已经经过恰当修改了】。在 map --hook 之后,应当使用 chainloader (hd0,0) 1 来装入仿真之前的 (hd2,6) 1,直接用 chainloader (hd2,6) 1 是错误的【直接用 chainloader (hd2,6) 1 结果,使得该扇区不能利用 int13 的中断处理程序进行必要的修改,这将导致引导失败】。注意,int13 仅对磁盘 (hd0) 起作用,对 (hd2) 不起作用,这是因为 map --read-only (hd2,6) 1 (hd0) 命令只对 (hd0) 进行了仿真,而对其它磁盘【包括(hd2)】都没有进行仿真。所以,int13 程序会修改 (hd0,0) 1 但不修改 (hd2,6) 1。

又,上述“修改”并不发生在磁盘上,而是发生在内存中。所以,磁盘上的扇区内容不会改变。也就是说,当读取该扇区的时候,要对读出的扇区进行修改,从而保证扇区内容可用;而当写入扇区的时候,由于默认的 safeboot 在起作用,所以,不会有写入的动作,直接返回虚假的“写入成功”的消息。

前面已经解释过了,safeboot 只保护硬盘 MBR 主引导扇区以及硬盘第一个主分区的第一个扇区(通常是 DOS 的引导扇区)——只保护这两个扇区,不保护其它扇区。

GRUB for DOS 0.2.0 还包括了 BOOTGRUB 和 GRLDR 文件【它们叫做“GRUB for NTLDR”】。这两个文件用于从 Windows NT/2000/XP/2003 的引导菜单中直接启动 GRUB。用法是,将 BOOTGRUB 和 GRLDR 拷贝到 Windows NT/2000/XP/2003 的 C: 盘根目录【C:盘根目录下应当有隐藏的 NTLDR 和 BOOT.INI 文件】,然后修改 BOOT.INI 文件,一般是在 BOOT.INI 文件尾部添加类似如下的一行:

C:\BOOTGRUB="启动GRUB"

重新启动机器,选择相应的菜单项就进入 GRUB 了。


安全建议(这是以前写的,现在还保留它,或许这是引起注意的一个好办法):
   1。如果您用 GRUB for DOS,请尽量用版本 0.0.x 的,不要用更高的。
   2。如果您不用 0.0.x 的,请尽量用版本 0.1.x 的,不要用更高的。
   3。如果您不用 0.1.x 的,请尽量用版本 0.2.x 的,不要用更高的。
   4。如果您用 0.2.x 的版本,请尽量不要用 map 等磁盘仿真命令。
   5。如果您用 0.2.x 的版本,也用了 map 命令,请尽量先在虚拟机中测试运行。
   6。版本 0.2.x 在您的虚拟机中测试过了之后,在真实机器中尽量用 --read-only 等参数运行。
   7。尽管已经把 map 命令加上了 --read-only 等参数,但也请尽量不要启动 Windows。
   8。如果要启动 Windows,请尽量不要把用来仿真的 img 映像安置在 (hd0) 驱动器上。
   9。如果启动了 Windows,即便仿真磁盘的映像不在 (hd0) 驱动器上,您也得做好最坏的打算:其一,如果仿真映像被毁,您不要感到出乎意料;其二,如果某个真实磁盘全部被毁,您不要感到难以接受;其三,如果您的所有的、全部的硬盘都报废了,您也不要感到太奇怪。
   10。版本 0.2.x 以后的仿真技术是给熟练的电脑玩家作为研究的目的来使用的,不是给普通用户使用的。
   11。玩家们最好互相交流经验,研究别人在使用过程中失败的情况,详细阅读说明文档,避免使自己遭受不必要的损失。

   在初期的测试中暴露出很多问题,也损坏过很多硬盘,所以在这里特别通报一下,并写出了上述注意事项。


map 命令的新功能是有某种危险的,建议首先在 VMware 或者 Virtual PC 这类虚拟机中测试。先用 --read-only 或者 --fake-write 参数运行 map 命令,这样是在只读状态下测试,安全一些。只读测试一段时间后,没有问题的话,再进行全面测试。测试时,在 grub 所仿真的虚拟磁盘上安装 DOS/Win9x/Me,不要用别的操作系统。即使全部测试都成功,这个仿真技术也仍然有着它固有的危险性。这是基于 BIOS 的仿真,不是全方位的仿真。例如,当你格式化一个磁盘的时候,你得明白这个磁盘是不是仿真了的? 以及你所用的格式化软件是使用 BIOS 呢? 还是使用磁盘 IO 端口读写? 使用 BIOS 的格式化软件,在仿真之下是安全的。使用磁盘 IO 端口的格式化软件,当它格式化一个仿真了的磁盘时,在最坏的情况下,实际上会格式化你的真实硬盘,至于说这种危险的误操作会发生在哪个硬盘上,取决于使用了什么样的 map 命令集(参考下面的“技术细节和实现方法”一节)。更进一步的测试,请大家报告 DOS 的 format 命令、Windows 资源管理器的格式化命令、磁盘碎块整理命令等等,以及第三方生产的 HD-COPY 等工具软件在进行格式化操作时是否安全。


技术细节和实现方法:


GRUB for DOS 0.2.x 将要对各种规格的软盘映像给以支持。由于硬盘的仿真也很类似,所以,也要对硬盘的 img 给以支持。另外,GRUB for DOS 0.2.x 也要开放写入虚拟磁盘的操作(写入虚拟盘是一种危险的操作,因为实际上我们写入了硬盘的 img 文件中,万一 GRUB for DOS 0.2.x 的仿真程序有 BUG,写入硬盘其它扇区中,可能造成数据毁损、无法启动等严重问题!)。


对软盘规格:需要解决的技术问题是如何恰当地处理三维的几何地址,也就是平常所说的 CHS(C——磁道柱面号;H——磁头号;S——扇区号)。对于真实的软驱(和软盘),都有这些规格的。然而,我们仿真之后的 img 文件,却无法表示这些规格。例如,一个 1.44M 的没有格式化的 img 文件,里面的数据全部是 00,怎么确定其 CHS 值呢?

当 img 文件已经经过 DOS 的格式化时,就用软盘第一扇区的 BPB 表来确定 CHS 值。如果没有经过 DOS 的格式化,或者发现其 BPB 表是错误的,那么就根据 img 文件的大小来确定 CHS 值。如果是标准的(或者常用的)软盘 img 尺寸,如 1.44M,1.2M,2.88M 等等,就用已知的 CHS 值。我们支持的软盘尺寸甚至可以是任意的(非标准的),如 10M 或 50M 或 500M 的软盘 img 文件。这时候,如果 BPB 表中没有合法的 CHS 值,就需要用 map 命令行参数来手动设置 CHS 值了。如果命令行没有指定 CHS 值,给出一个错误信息,拒绝仿真。当软盘 BPB 表和 map 命令行都有 CHS 的指定时,以命令行的指定为准,如果两者有差别,给出一个警告信息。

软盘规格列表(不支持扇区大小不等于 512 字节的防拷贝加密软盘):

软盘容量    每面磁道数    每道扇区数    磁头数或面数
----------------------------------------------------------------
0160K(标准)    40        08        1  
0180K(标准)    40        09        1  
0200K       40        05        2  
0250K       50(暂用)     10(暂用)     1  
0320K       80        08        1  
0320K(标准)    40        08        2  
0360K(标准)    40        09        2  
0400K(优先)    40        10        2  
0400K       80        05        2  
0420K       42        10        2  
0500K       50(暂用)     10(暂用)     2  
0640K       80        08        2  
0720K(标准)    80        09        2  
0729K       81        09        2  
0738K       82        09        2  
0747K       83        09        2  
0756K       84        09        2  
0800K       80        10        2  
0810K       81        10        2  
0820K       82        10        2  
0830K       83        10        2  
0840K      ?br />

上一页  [1] [2] [3] [4] [5] 下一页

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    dos入门教程

    dos入门教程-2

    dos入门教程-1
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网