无忧启动论坛

标题: 把内存map成软盘的几种方法有什么不同 [打印本页]

作者: yjqd    时间: 2016-10-15 23:00
标题: 把内存map成软盘的几种方法有什么不同
把内存map成软盘的几种方法

一、
map --mem (md)0x6000+800 (fd0)
map --hook
dd if=(fd1) of=(fd0) count=1

二、
map --mem (md)+2880 (fd0)
map --hook
dd if=(fd1)+1 of=(fd0)+1

三、
map --mem (md)0x8000+1440 (fd0)
map --hook
dd if=(fd1) of=(fd0) count=1


(md)0x6000+800和 (md)0x8000+1440 是不是扇区数量表示法

3.5英寸容量是1.44MB的软盘一般情况下扇区总数是2880

上面三种map有什么不同
作者: 不知    时间: 2016-10-15 23:06
这种都是G4D扇区表示法,三种表示法映射出的软盘在内存中的位置和大小都不同。
作者: 不知    时间: 2016-10-15 23:12
而且楼主的用法可能错误的,直接把内存映射成软盘是不需要加--mem参数,加了--mem参数相当于把内存的一些区块,复制到其它地方(G4D默认),这样前面的起始扇区号就意义不大了。
作者: yjqd    时间: 2016-10-15 23:19
本帖最后由 yjqd 于 2016-10-15 23:22 编辑
不知 发表于 2016-10-15 23:12
而且楼主的用法可能错误的,直接把内存映射成软盘是不需要加--mem参数,加了--mem参数相当于把内存的一些区 ...


谢谢回复
以上的菜单是我在论坛看到的

想起来了,直接把内存映射成软盘应该不存在碎片问题,应该可以不加--mem参数
map在前,dd if=(fd1) of=(fd0) count=1在后,应该不会对fd0产生碎片吧

"加了--mem参数相当于把内存的一些区块,复制到其它地方(G4D默认)",这个知识我还不了解


作者: 不知    时间: 2016-10-15 23:31
yjqd 发表于 2016-10-15 23:19
谢谢回复
以上的菜单是我在论坛看到的


可能是我表达不准确,把前面的扇区看成是普通文件加载就行了。dd是复制命令,不会改变扇区的分布,只是改写扇区的内容,不会出现碎片。
作者: yjqd    时间: 2016-10-15 23:40
不知 发表于 2016-10-15 23:31
可能是我表达不准确,把前面的扇区看成是普通文件加载就行了。dd是复制命令,不会改变扇区的分布,只是改 ...

另外问一个问题:
用map建立一个空白软盘或是用其它软件建立一个空白软盘,并且不向这个软盘写主引导,只是把所需的文件拷贝进去,文件拷贝进去后,软盘的第一扇区一定有文件的部分内容吗,也就是说拷贝进去的文件一定占据了第一扇区吗
作者: 不知    时间: 2016-10-15 23:47
dd是基于扇区的复制。要装文件应该还要格式化吧!
作者: yjqd    时间: 2016-10-15 23:57
不知 发表于 2016-10-15 23:47
dd是基于扇区的复制。要装文件应该还要格式化吧!

我的意思是:
dd if=(fd1) of=(fd0) count=1 中没有skip,那么就是复制fd1的第一扇区到fd0,如果fd1的第一扇区为空,那么fd0得到的也是空扇区
作者: 不知    时间: 2016-10-16 00:17
yjqd 发表于 2016-10-15 23:57
我的意思是:
dd if=(fd1) of=(fd0) count=1 中没有skip,那么就是复制fd1的第一扇区到fd0,如果fd1的第 ...

是吧。
作者: pseudo    时间: 2016-10-16 12:48
map --mem (fd1)+1 (fd0)
map --hook
这样?
作者: yjqd    时间: 2016-10-16 12:58
pseudo 发表于 2016-10-16 12:48
map --mem (fd1)+1 (fd0)
map --hook
这样?

谢谢回复

本帖中后面的问题我只是顺便问一下,如果fd1的第一扇区为空,那么fd0得到的也是空扇区,这样有什么用
作者: pseudo    时间: 2016-10-16 14:03
有这样的应用情景:
仿真F6驱动软盘设为fd1而不是fd0有特殊作用,
只有fd1没有fd0则fd1可能不被识别,为此得弄个fd0,
这个fd0可以马虎点,有盘、有一般的首扇区像个软盘就够了,
首扇区就复制fd1的吧。
fd1放有驱动,首扇区不会空。


作者: 不知    时间: 2016-10-18 13:13
pseudo 发表于 2016-10-16 12:48
map --mem (fd1)+1 (fd0)
map --hook
这样?

那fd0只有一个扇区了。
作者: 不点    时间: 2016-10-19 10:03
先说说一楼给出的三条命令:

一、map --mem (md)0x6000+800 (fd0)

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

三、map --mem (md)0x8000+1440 (fd0)

第一条命令的 “源” 文件位于物理内存 12M 处,长度是 400KB
第二条命令的 “源” 文件位于物理内存 0M 处(即起始于中断向量表),长度是 1.44M
第三条命令的 “源” 文件位于物理内存 16M 处,长度是 720KB

这些源文件,虽然起始地址不同,但共同点是,它们都位于 grub4dos 的保留内存区,即,都位于用户不可以修改的区域。所以,它们没有什么本质差别。也就是说,上述命令所创建的虚拟盘,仅仅只有大小的不同(这还能算是有点差别),别的都一样,没什么差别了。它们所创建的虚拟软盘,都是 “未格式化” 的软盘。
作者: 不点    时间: 2016-10-19 10:20
再来看看两条 dd 命令的差别:

dd if=(fd1) of=(fd0) count=1

dd if=(fd1)+1 of=(fd0)+1

第一条命令,源文件是 (fd1) 上的全部扇区,目的地文件是 (fd0) 上的全部扇区。但是,由于指定了 count 的值为 1,因此,只复制一个扇区就结束了。

第二条命令会有两种含义。我认为我们应该避免使用(像这样的)能够产生歧义的命令。分歧点在于,究竟 (...)+1 是什么含义?

我们知道,在 map 命令中,(...)+1 的表示法是可以表示设备 (...) 上的 “全部扇区” 的。

但在 map 命令之外使用 (...)+1,则有可能出现歧义。假如开发者沿用 map 的做法,会把 (...)+1 继续解释成 “该设备上的全部扇区”。假如开发者不沿用 map 命令的做法,则有可能解释成 “该设备上的第一扇区”。

因此,为了稳妥起见,应该使用第一种表示法。如果你想复制多个扇区,那就调整 count 的值。如果你想复制全部扇区,那就使用 dd if=(fd1) of=(fd0) ,即,不指定 count 的值。


作者: yjqd    时间: 2016-10-19 10:41
不点 发表于 2016-10-19 10:20
再来看看两条 dd 命令的差别:

dd if=(fd1) of=(fd0) count=1

谢谢回复
之前为了学习dd命令,下载了dd for windows,用u盘来练习过dd的用法许多次
------------------------------------
看来在grub4dos中用dd if=(fd1) of=(fd0) count=1更兼顾其它方面一些


作者: 不点    时间: 2016-10-19 10:47
不知 发表于 2016-10-18 13:13
那fd0只有一个扇区了。

注意在 map 命令中,(fd1)+1 代表 (fd1) 上的全部扇区,而不仅仅是其第一扇区。

因此,上述命令得到的虚拟盘 (fd0) 将具有与 (fd1) 同样的大小。

如果我没记错的话,下面这两条命令是等价的(至少在一些场合是等价的):

map --mem (fd1)+1 (fd0)
map --mem (fd1) (fd0)

当然,也许会有不等价的时候。万一第二条命令不能达到你的目的,你可以用第一条命令。
作者: 不知    时间: 2016-10-19 11:47
不点 发表于 2016-10-19 10:47
注意在 map 命令中,(fd1)+1 代表 (fd1) 上的全部扇区,而不仅仅是其第一扇区。

因此,上述命令得到的 ...

学习了。
作者: pseudo    时间: 2016-10-24 13:54
"这些源文件,虽然起始地址不同,但共同点是,它们都位于 grub4dos 的保留内存区,即,都位于用户不可以修改的区域。所以,它们没有什么本质差别。也就是说,上述命令所创建的虚拟盘,仅仅只有大小的不同(这还能算是有点差别),别的都一样,没什么差别了。它们所创建的虚拟软盘,都是 “未格式化” 的软盘。"

----如果源文件在其它位置,尤其是在用户可以修改的区域,那么这种可能性增大:
源/目的文件开头有些字节恰巧是压缩文件标志,在复制文件时压缩的源文件可能被意外自动展开,而往压缩文件写入可能被禁止。
源文件开头有些字节恰巧符合某些特征,让创建的虚拟软盘被当成已格式化的。
总之,一定场合下还要细看文件内容。
作者: zctji    时间: 2016-10-31 15:54
好贴子哦,大家不顶说不过去












实习就业网为您带来精彩的招聘体验www.shsxjy.com
作者: dongwu    时间: 2017-3-4 12:48
map --mem (md)0x6000+800 (fd0)
作者: newliz    时间: 2020-2-4 21:05
高手讨论,路过凑下热闹。
作者: cbl    时间: 2020-3-3 12:28
学习了




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3