无忧启动论坛

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

[求助] 用FiraDisk ISO镜像安装系统的疑问

[复制链接]
发表于 2011-9-6 16:59:52 | 显示全部楼层
count=1, 只拷贝一个扇区,即软盘第一扇区。我猜测,这个 menu 的作者希望软盘的第一扇区是 “合法” 的。也就是说,让软盘刚好被 Windows 的安装程序承认,又没有实际的文件在里面。
回复

使用道具 举报

发表于 2011-9-6 20:27:36 | 显示全部楼层
何必那么认真?原始的作者这么用,肯定有他的意图。说不定,他发现必须这么 “绕弯” 才能在他的机器上成功。也有可能他在将来某个阶段要用这个 fd0,比如把某个软盘 “克隆” 到这个 fd0 上。

map --mem (md)+2880 (fd0)

这句,是把内存开始处的 2880 个扇区 “拷贝到” 扩展内存的顶端,仿真为 (fd0)。

如果要把 中断向量表 处的内存仿真为 (fd0),那应该这样写:

map --mem=0 (md)+2880 (fd0)

但这样写实际上也会出错的,因为 map 会自动禁止在低端内存上 “就地” 仿真一个磁盘。低于 16M 的地址,都不可以作为仿真盘的扇区数据,因为 grub4dos 本身就占据低端 16M。

因此,这条 dd 命令没有破坏中断向量表。它把 (fd1) 的引导扇区复制到 (fd0) 上。(fd0) 的实际扇区数据位于内存顶端。

=====================

忽然发现还有问题。在默认情况下,仿真盘的引导扇区是受保护的,拒绝写入(把写入的数据扔掉)。

因此,这条 dd 命令恐怕是无效的。要得让引导扇区可以写入,必须在 map 时添加 --unsafe-boot 参数。

=====================

又有新的解释了。dd 也可能有效。当 (fd0) 的第一扇区尾部没有 55 AA 标签的时候,这个扇区可能就自动不被保护了。

=====================

综合以上两条,当第一次写入的时候,也许会成功,因为 fd0 的第一扇区本来就不合法(没有 55 AA 标志)。但是,一旦把一个含有 55 AA 标志的引导扇区写入了 fd0,那么,下一次就无法写入了,因为保护起作用了。前面说了,要得让保护失效,必须用带 --unsafe-boot 参数的 map 来重新映射 (fd0)。

以上这些,在文档中并未公开。因为通常用不到这些内容。

[ 本帖最后由 不点 于 2011-9-6 20:46 编辑 ]
回复

使用道具 举报

发表于 2011-9-7 00:29:13 | 显示全部楼层
有可能是我修改 int13 代码的时候改错了。不过这也没太大关系的。先不管这些了。
回复

使用道具 举报

发表于 2011-9-14 17:02:10 | 显示全部楼层

回复 #15 zhaohj 的帖子

忽然又想到了一点,所谓 “保护” 也只是用 CHS 模式保护,而 LBA 模式不保护。就是说,用 CHS 模式写盘不行(拒绝),用 LBA 模式写盘允许。

grub4dos 的仿真,默认时也进行了 LBA 的仿真,即,仿真都支持 LBA。而 grub4dos 访问磁盘时,又是 LBA 优先。在 grub4dos 下进行 dd 之类的操作,也会(首先尝试)用 LBA 模式来读写磁盘。这样,LBA 读写都是允许的,也就没有保护了。

你可以试试在 DOS 下写入虚拟软盘的引导扇区,应该是不能写入的。当然了,如果你在 DOS 下也用 LBA 模式写入(就是专门调用 BIOS int13/ah=43h),那也能写入。一般 DOS 对于软盘都是采用 CHS 模式去访问的。比如,你试试在微软的 debug 之下,用 L 命令装入软盘引导扇区,修改几个字节(作为记号,自己知道就行),再用 W 命令写入软盘第一扇区,然后再用 L 读出来,你就知道是否写入了。应该是不能写入的。

提醒:这些测试有危险!如果对于汇编语言不熟悉,请不要做这些试验。主要危险在于,如果把盘号弄错,你有可能毁掉硬盘的数据,造成 “硬盘丢失”、“无法启动” 等严重后果。因此,建议在虚拟机中试验,这样要安全一些。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-11-16 16:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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