无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-29 20:46:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
资料摘录
》》》》》》》》》》》》》》》》》》》》》》》》》
方法2.grldr菜单(假定系统安装盘ISO名为WIN$.ISO,但ISO没有整合FiraDisk或WinVBlock)
title XP setup step 1
find --set-root /WIN$.ISO
map --mem /firadisk.ima (fd1)
map --mem (md)0x6000+800 (fd0)
map --mem /WIN$.ISO (0xff)
map --hook
dd if=(fd1) of=(fd0) count=1
chainloader (0xff)


title Continue XP setup step 2
find --set-root /WIN$.ISO
map --mem /WIN$.ISO (0xff)
map --hook
chainloader (hd0)+1

》》》》》》》》》》》》》》》》》》》》》》》》》》》

红色标记部分不解
请问为何要仿真两个软驱呢?就映射个(fd0)不行吗?
写成如下:
title XP setup step 1
find --set-root /WIN$.ISO
map --mem /firadisk.ima (fd0)
map --mem /WIN$.ISO (0xff)
map --hook
chainloader (0xff)

行吗?
2#
发表于 2011-8-29 21:39:37 | 只看该作者
fd0 上的驱动要手动按 F6 然后去手动加载 , fd1 上的驱动安装程序会默认自动加载 , 所以先弄个空白的 fd0 把FiraDisk放到fd1上去 , 让windows安装程序可以自动加载FiraDisk驱动
回复

使用道具 举报

3#
发表于 2011-8-30 19:16:37 | 只看该作者
我就直接映射成 fd0 ,启动时按 F6,但是不起作用。
又用上面的办法加载,也不起作用。
回复

使用道具 举报

4#
发表于 2011-8-30 19:58:01 | 只看该作者
刚才又测试了一下,将 firadisk.ima  直接映射成 fd1 就可以了,其它代码是多余的。
回复

使用道具 举报

5#
发表于 2011-9-5 23:09:43 | 只看该作者

到复制文件时候出现"无法复制firadisk.sys"错误。

到复制文件时候出现"无法复制firadisk.sys"错误。可以按Esc跳过相关文件然后继续完成复制,但是进入第二步就无法发现grub的光驱,就算同时还已经挂宰firadisk.img。我的是xp sp3原版镜像,这个问题在虚拟机也出现。&lt;br /&gt;但是,同样的方法应用到xp sp2 x64的安装就可以成功完成。&lt;br /&gt;我觉得很奇怪。&lt;br /&gt;到底是为什么呢?&lt;br /&gt;在本次XP SP3的安装过程中,虽然复制firadisk相关文件失败,然仍能复制GRUB映射的光盘文件就证明了firadisk的驱动的确起作用了,而由于复制失败,第二步就自然无法加载firadisk驱动,当然也无法找到光盘并复制余下的文件。&lt;br /&gt;面对这个问题,我应该如何做呢??<br /><br />注:本过程中的所有map 操作都带有--mem 参数的。

[ 本帖最后由 2011GameBoy 于 2011-9-5 23:11 编辑 ]
回复

使用道具 举报

6#
发表于 2011-9-6 12:33:58 | 只看该作者
原帖由 2011ryoohki 于 2011-8-29 21:39 发表
fd0 上的驱动要手动按 F6 然后去手动加载 , fd1 上的驱动安装程序会默认自动加载 , 所以先弄个空白的 fd0 把FiraDisk放到fd1上去 , 让windows安装程序可以自动加载FiraDisk驱动


(fd0)并不是空的,因为下面还有这一句: dd if=(fd1) of=(fd0) count=1
回复

使用道具 举报

7#
 楼主| 发表于 2011-9-6 16:29:22 | 只看该作者

回复#6

这句dd if=(fd1) of=(fd0) count=1是把(fd1)里的内容原样复制到(fd0)里!

可是既然有(fd1)了,而且会自动加载,(fd0)还有必要弄成驱动盘吗?
回复

使用道具 举报

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

使用道具 举报

9#
发表于 2011-9-6 17:05:19 | 只看该作者
相关的资料可以看看这里,很久没有更新,可能会有一些出入.

http://chenall.net/post/windows_f6/

只是为成生成一个空白内容的(fd0).
回复

使用道具 举报

10#
 楼主| 发表于 2011-9-6 19:55:12 | 只看该作者

回复#9号的帖子

有这么个空白的(fd0)有什么意义呢?

我在虚拟机下试了,不加dd if=(fd1) of=(fd0) count=1 ,照样也能自动加载(fd1)上的驱动啊!!

还试了,没有map (fd0),也照样能自动加载(fd1)上的驱动!!

还有你的链接里提到:

》》》》》》》》》》》》》
以下两句是为了生成一个空白的(fd0),即A:
map –mem (md)+2880 (fd0)
dd if=(fd1)+1 of=(fd0)+1

》》》》》》》》》》》》》》》》》》》

(md)不是从内存0:0开始的吗,这样dd命令后,不是把中断向量表给破坏了吗?
回复

使用道具 举报

11#
发表于 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 编辑 ]
回复

使用道具 举报

12#
发表于 2011-9-6 23:47:55 | 只看该作者

回复 #10 2011qf020124 的帖子

就是何必这么较真呢,,

加上空白(fd0)是很早之前就得出的结论,你的测试环境不可能比众多网友来得全面,

为什么要空白(fd0),在论坛里面就有相关资料,有兴趣可以自己花时间翻一下.
回复

使用道具 举报

13#
发表于 2011-9-6 23:52:58 | 只看该作者

回复 #11 不点 的帖子

好像针对软盘并没有什么保护啊,可以随意修改软盘的内容的说.

难道是后面某个版本改错了,出现了BUG???

我记得之前对于(hd0)的首扇区也有保护的,刚刚试了一下发现没有任何的保护了,可以随意写入.
回复

使用道具 举报

14#
发表于 2011-9-7 00:29:13 | 只看该作者
有可能是我修改 int13 代码的时候改错了。不过这也没太大关系的。先不管这些了。
回复

使用道具 举报

15#
发表于 2011-9-7 08:10:42 | 只看该作者
我测试了一下2011-06-10版本的grub4dos,也是没有保护的。
  测试了一下2010-06-09版本的grub4dos,也是没有保护的。
回复

使用道具 举报

16#
 楼主| 发表于 2011-9-7 19:52:56 | 只看该作者

回复#11 和 #12

呵呵!不是较真,只是在教程上看到了,产生了疑问,就想弄懂!其实是想知其然,又知其所以然!

回复#12

引用--------“加上空白(fd0)是很早之前就得出的结论” “为什么要空白(fd0)”

能不能说下,翻论坛太痛苦了!!点一点就行,我也不能算大白菜!

是不是不映射个(fd0)某些机器上就无法使用(fd1)?
回复

使用道具 举报

17#
发表于 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 读出来,你就知道是否写入了。应该是不能写入的。

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

使用道具 举报

18#
发表于 2011-9-14 17:22:54 | 只看该作者

回复 #16 2011qf020124 的帖子

你多试试安装其它的系统就知道了,比如试试WINDOWS 2003.还有换一台机器再试试.
单单使用一个(fd1)的时候,很可能就没有办法识别了.

有一些系统先检测第一个软驱,发现无法访问,它就不再检测第二个软驱了.

[ 本帖最后由 chenall 于 2011-9-14 17:23 编辑 ]
回复

使用道具 举报

19#
发表于 2011-9-17 00:32:24 | 只看该作者

回复 #1 2011qf020124 的帖子

我的电脑装XP(32H和64位),如果只映射firadisk.img到(fd0)的话,就无法复制firadisk驱动,重启后后续的安装就会因为找不到驱动导致找不到光盘而失败;
如果只映射firadisk.img到(fd1)则可以正常安装,且不用按F6,安装程序会自动加载。
当然了,如果你的XP安装ISO文件里面没有含有WINNT.SIF应答文件,则不会存在上述问题,只映射firadisk.img到(fd0)也可以安装,不过前提就是需要按F6键加载驱动。
其中原因我不清楚,还请精英来回答,其他回复也有一定道理。毕竟我们只是一个个案。
回复

使用道具 举报

20#
 楼主| 发表于 2011-9-17 08:18:39 | 只看该作者

回复 #19 2011GameBoy 的帖子

我也遇上过加载(fd0)后firadisk.sys或winvblk32.sys不能复制的问题,是在安装程序格式化系统分区后,难道是因为光盘里有WINNT.SIF应答文件造成的?
加载到(fd1)就没问题!

1.JPG (44.52 KB, 下载次数: 56)

1.JPG
回复

使用道具 举报

21#
发表于 2011-9-20 18:38:36 | 只看该作者
对,是这样的。不过不知道你需不需要映射一个空白的有效的(fd0)ne ?
回复

使用道具 举报

22#
 楼主| 发表于 2011-9-21 08:19:26 | 只看该作者

回复 #21 2011GameBoy 的帖子

只映射(fd1)就可以了,安装就能正常复制驱动了!
回复

使用道具 举报

23#
发表于 2011-9-22 19:44:45 | 只看该作者
改winnt.sif即可,不用纠结为什么非要仿真fd0了,和windows安装机制相关
回复

使用道具 举报

24#
发表于 2011-9-22 19:47:02 | 只看该作者
原帖由 jasonwang 于 2011-9-22 19:44 发表
改winnt.sif即可,不用纠结为什么非要仿真fd0了,和windows安装机制相关


如何修改winnt.sif(修改哪些内容)?
回复

使用道具 举报

25#
发表于 2011-11-23 10:33:11 | 只看该作者
原帖由 2011qf020124 于 2011-9-17 08:18 发表
我也遇上过加载(fd0)后firadisk.sys或winvblk32.sys不能复制的问题,是在安装程序格式化系统分区后,难道是因为光盘里有WINNT.SIF应答文件造成的?
加载到(fd1)就没问题!

光盘集成的WINNT.SIF文件存在这句造成的
   OemPreinstall=Yes
回复

使用道具 举报

26#
发表于 2011-11-23 10:33:49 | 只看该作者
原帖由 2011qf020124 于 2011-9-21 08:19 发表
只映射(fd1)就可以了,安装就能正常复制驱动了!

我遇到很多机器,如果不存在fd0,则不会认为存在fd1
回复

使用道具 举报

27#
发表于 2011-11-23 11:13:16 | 只看该作者
原帖由 xianglang 于 2011-9-22 19:47 发表
如何修改winnt.sif(修改哪些内容)?

基于g4d从iso装系统,以下两个帖子比较经典:

U盘启动安装原版2003系统到SATA/RAID硬盘【老鸟勿入】(不要忽略#2楼)

【分享】0PE1.1中用原版系统ISO包安装系统的演示

原理要领尽在其中。

如何修改winnt.sif,里面也有介绍。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 20:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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