无忧启动论坛

标题: map --mem 使用的内存能否从最大值→最小值使用 [打印本页]

作者: ysj-1    时间: 2016-4-8 12:49
标题: map --mem 使用的内存能否从最大值→最小值使用
map --mem 使用的内存能否从最大值→最小值使用。现行的命令是最小值→最大值,这点和Windwos的内存管理相同。本人太菜求问开发人员能否实现?

作者: 不点    时间: 2016-4-8 14:27
--top 参数是你想要的吗?它会尽量使用最高端的可用内存。
作者: ysj-1    时间: 2016-4-8 16:55
非常感谢不点大师的指点,就是这个--top参数,已经可以使用最高端的可用内存。另求教一个问题,进PE后如何能自动加载map的硬盘盘符;现在只能手动分区和分配盘符,好麻烦哟。望大师指点迷津。
作者: ysj-1    时间: 2016-4-8 17:14
再次求教:追问一个问题,现在最新版的grldr map一个img映像最大为多少?望大师指点,谢谢。
作者: 不点    时间: 2016-4-8 20:34
我只知道有 firadisk 和 winvblock 驱动可以让 windows 能够识别出 grub4dos 的虚拟盘,我不知道你不用这两个驱动,竟然也能让 windows 识别出虚拟盘,我觉得这好像天方夜谭啊。另外,我从未在 windows 下使用过 grub4dos 虚拟盘,因此,我不了解,无法帮忙。

grub4dos 支持的最大内存盘大小为 500G。
作者: ysj-1    时间: 2016-4-9 01:06
非常感谢不点大师的指点,我用的是firadisk驱动上面忘了说明,不好意思。不过这个驱动版本很多,最新的0.0.1.30那个版本在03PE中好象不稳定要蓝屏现在在测试原先的0.0.1.24版。不知最新的0.0.1.30版是否已是稳定的版本?还有IMG镜象用 winvblock 驱动还是firadisk驱动更好?望大师指点,再次感谢你的指点。
作者: 不点    时间: 2016-4-9 08:18
蓝屏死机,有可能是 Windows 驱动程序的 bug 引起的。据说,把 XP 的显卡驱动“升级”成 Win7 的版本,就可避免蓝屏死机。如果你实在不知道如何替换显卡驱动,你也可以试试 map --e820cycles=3 ,这条命令在 map --hook 之前执行。其中 3 可以试试不同的值,大概从 0 到 20,总可以找到一个成功的值,躲避 XP 显卡驱动的 bug。你最好贴出蓝屏的错误代码,看看是不是与其他人报告的代码一样(我印象中好像是 F4,不过脑子老化,恐怕记不清)。如果是这个代码,那么用刚才所说的 map --e820cycles=? 的方法即可解决问题。

好像最新的 0.0.1.30 就是最好的,没听说过需要换成旧版的情况。至于说 firadisk 和 winvblock 作比较,很抱歉,我两个都不曾用过,不能给出可信的答复。我看到别人对这两个都有使用,你可以在网上寻找这方面的信息。

作者: 不点    时间: 2016-4-9 08:32
ysj-1 发表于 2016-4-8 16:55
非常感谢不点大师的指点,就是这个--top参数,已经可以使用最高端的可用内存。另求教一个问题,进PE后如何 ...

后文你提到你已经使用了 firadisk(或winvbock)驱动。我猜想,可能你的虚拟盘的内容有错误,不能让 Windows 识别为一个有效的文件系统。你可以先试试一个标准软盘的 img,看看 Windows 是否可以自动为它分配盘符。你也可以检查 firadisk/winvblock 的配置参数,看看有没有指定盘符的选项(我不曾接触过,只是瞎猜)。
作者: ysj-1    时间: 2016-4-9 12:42
首先感谢不点大师的指点,我的机子好象不是显卡驱动造成的;我是在把虚拟内存设在MAP --mem -- top出来的硬盘上;同时测试系统是否调用了我设置的虚拟内存时出现的。我是用imdisk设置内存盘占用内存的方式来测试的,有时会出现不稳定蓝屏的情况。好象0.0.1.24版要稳定些,最新的 0.0.1.30版蓝屏的情况要多些。我 是在03PE中测试的不是在正常的Windows 2003系统中做的测试,所以这个蓝屏问题和论坛上提到的情况不太一样。下图是我把虚拟内存设在MAP --mem -- top出来的硬盘上后在任务管理器中内存的情况(我的机子4G内存)在没设虚拟内存时在“内存使用:”这栏是395M/2855M设了之后是395M/3605M。不知还有的内存哪儿去了。(IMG占用54M、256M的FBWF缓存;还有系统缓存不清楚用了多少)总之好象没用完4G内存。最后再次感谢不点大师的指点。不能分配盘符是系统认为MAP --mem -- top出来的硬盘没有初始化,只要分区格式化之后就可以了;另外我还没来得及测试标准软盘镜象。最后再请教大师一个问题,能否用GRLDR直接在高位内存中MAP一个虚拟硬盘(如:748M的)菜单命令该怎么写呢?我现在是先用IMDISK制作一个空的IMG镜象GZ压缩MAP --mem --top的;在MAP时会解压一会儿了,如*.GZ是更大的IMG镜象可能用的时间会更长;不知能用其它方式实现呢?请大师指点迷津。
作者: ysj-1    时间: 2016-4-9 12:42
首先感谢不点大师的指点,我的机子好象不是显卡驱动造成的;我是在把虚拟内存设在MAP --mem -- top出来的硬盘上;同时测试系统是否调用了我设置的虚拟内存时出现的。我是用imdisk设置内存盘占用内存的方式来测试的,有时会出现不稳定蓝屏的情况。好象0.0.1.24版要稳定些,最新的 0.0.1.30版蓝屏的情况要多些。我 是在03PE中测试的不是在正常的Windows 2003系统中做的测试,所以这个蓝屏问题和论坛上提到的情况不太一样。下图是我把虚拟内存设在MAP --mem -- top出来的硬盘上后在任务管理器中内存的情况(我的机子4G内存)在没设虚拟内存时在“内存使用:”这栏是395M/2855M设了之后是395M/3605M。不知还有的内存哪儿去了。(IMG占用54M、256M的FBWF缓存;还有系统缓存不清楚用了多少)总之好象没用完4G内存。最后再次感谢不点大师的指点。不能分配盘符是系统认为MAP --mem -- top出来的硬盘没有初始化,只要分区格式化之后就可以了;另外我还没来得及测试标准软盘镜象。最后再请教大师一个问题,能否用GRLDR直接在高位内存中MAP一个虚拟硬盘(如:748M的)菜单命令该怎么写呢?我现在是先用IMDISK制作一个空的IMG镜象GZ压缩MAP --mem --top的;在MAP时会解压一会儿了,如*.GZ是更大的IMG镜象可能用的时间会更长;不知能用其它方式实现呢?请大师指点迷津。

热键截图.png (953.42 KB, 下载次数: )

热键截图.png

作者: ysj-1    时间: 2016-4-9 12:48
真是失败上面9楼的图片没带上,请管理员删一下。谢谢。
作者: ysj-1    时间: 2016-4-9 13:44
回复不点大师:我用标准软盘镜象测试,结果同样是系统认为没有格式化。我用的是1.4M的DOS启动软盘,而且可启动;可是到了PE系统里只是分配了A盘的盘符认不了盘里的内容,属性为没有格式化;看来是不能用MAP的方式获得一个分配了盘符的高位内存硬盘了哟。最后再次谢谢不点大师的指点。谢谢。
作者: 不点    时间: 2016-4-9 15:56
本帖最后由 不点 于 2016-4-10 08:21 编辑

你是不是在用很多年前的 grub4dos?恕我直言,那样的话,你是自找麻烦。出现莫名其妙的问题,就只有你自己去解决了。

完全可以建立一个未格式化的虚拟盘,用
  1. map   --top   --mem=-2880   (md)+8   (fd0)
复制代码

【此处已经修正。原来写成 2880 是错的,应该是负数 -2880。详见下文】
就可以创建一个 1.44M 的虚拟内存盘(未格式化)。2880 是扇区数。(fd0) 表示是虚拟软盘。如果是虚拟硬盘,应该使用 (hd0) 或 (hd1) 等等。


顺便分享一点思路。假如虚拟盘无法被 Windows 识别的话,我感觉 firadisk 和 winvblock 都没有意义了,换句话说,是垃圾;再继续推理,一定没人用它们了。可是实际上用它们的人很多,所以,这反过来就说明了,虚拟盘一定能够被 Windows 识别的。不过你说 PE 识别不了。这我不清楚。你可以先试试正常的 Windows 能不能识别。你也可以搜索 Internet,看看别人的 PE 是否可以识别 grub4dos 的虚拟盘。我没有经验,完全是个想法,分享一下。不敢保证有用。




作者: ysj-1    时间: 2016-4-9 21:27
非常感谢不点大师的指点,上面的(md+8)是否是指将整个内存的前 8个扇区当作一个文件;这是1.44M 的虚拟软盘的引导扇区数吗?我太菜了别笑话我,如果是的话,那么虚拟硬盘的引导扇区数是否是16(ntfs)、1(fat32、fat12、fat)呢?后面的参数(md+8)可以不要吗?如我要MAP一个144M 的虚拟硬盘可否可以这样写:map   --top   --mem=288000   (hd-1)还是要只能这样写:map   --top   --mem=288000  (md)+16  (hd-1)或是map   --top   --mem=288000  (md)+8  (hd-1)我不太懂,肯请大师不烦指点迷津。谢谢。另回复大师:我不是说在PE系统中不能识别虚拟盘而是好象没能识别文件系统;另外我的PE在文本模式阶段没有加载IDE控制器驱动和disk驱动而是在登录系系统后用NT角本安装的;不知是否与这有关,但是MAP的虚拟硬盘又是安装上了disk驱动的,真是把我搞糊涂了。最后再次感谢不点大师的指点。谢谢。

作者: ysj-1    时间: 2016-4-9 22:06
回复不点大师:我用的GRLDR是最新的版本(2016-3-26)来MAP的,firadisk驱动用的0.0.1.24版,PE中的系统文件打上了最终补丁,蓝屏的问题好象是我在测试是用的imdisk造成的,用Primo Ramdisk Server Edition没有蓝屏了。当然在4G内存环境这些都用不上了,现在可以用MAP --mem -top来用高位内存的虚拟盘了;低位内存全留给系统了。现在我只是考虑map出来的虚拟出来的内存盘的稳定性,所以才请教大师关于firadisk驱动的问题。最后谢谢大师的指点,也感谢GRLDR的开发人员的付出;让我们可以用上32位系统上的高位内存。虽然不是能够让系统程序也能用上全部的高位内存但也不会让大内存在32位环境里睡大觉了。(即不开PAE不能识别大内存,开了PAE又有兼容性的问题)最后再次感谢不点大师的指点,另希望大师能回复我上面请教的问题。谢谢
作者: 不点    时间: 2016-4-9 22:37
(md)+8 确实是内存开头的 8 个扇区,也就是从“中断向量表”开始的 8 个扇区(内存物理地址 0 ~0x1000)。它的内容不重要,map 命令会把它的内容复制到内存顶部的内存盘开头处。内存盘建立之后,需要重新格式化才能用(如果是虚拟硬盘,则需要重新分区)。你可以在进入 Windows 后再对其执行重新分区和格式化的操作。当然你也可以在进入 Windows 之前就对其进行分区和格式化。不过一定要在 map --hook 之后,才可以对虚拟盘执行这些操作,否则,你是对真实盘执行分区和格式化的动作,那你的真实盘就可能被毁掉了!

用 8 个扇区表示虚拟盘的扇区数最少是 8 个。低于 8 个扇区的虚拟盘,可能会被当作别的意义来处理。所以,这里采用 8 个扇区,并无别的意思,它就是让 grub4dos 对此不会产生歧义。grub4dos 知道你是想建立虚拟盘,而不是别的意思。参数 (md)+8 不能省略,map 命令要求必须有这个参数。用 (md)+16 也行,不过有点多余了。8 个扇区已经够了,不会产生歧义了,没必要用更多的扇区数。
作者: 不点    时间: 2016-4-9 22:52
本帖最后由 不点 于 2016-4-9 22:57 编辑

你的盘未能被识别,可能是格式问题。比如说,如果是虚拟软盘,Windows 好像不允许它有分区表。但如果是虚拟硬盘,则需要有分区表,才能让 Windows 找到它里面的分区。我估计你的虚拟硬盘没有分区表,虚拟硬盘的开头直接就是 Volume 卷,这可能让 Windows 不舒服,所以 Windows 就忽略了它。

另外,我觉得 firadisk 不可以使用旧版。它这个新版已经好几年没有改动了,说明很稳定。旧版肯定有问题,否则不会开发新版的。


作者: ysj-1    时间: 2016-4-9 23:40
我用大师的命令测试了一下,失败了,虚拟硬盘是可以MAP出来,可是它占用的是低位内存,下面是附图:

而用MAP --mem --top /*.gz (hd-1)则可以,下面是附图:

不知是哪儿出了问题,如果用大师的命令能成功就好了啊。最后再次谢谢大师的指点。另回复大师:关于firadisk驱动的问题,我的一点感受是开发人员是否为了实应新的系统而作出的(如:win7、win8等);如是这样,新版可能未必有老版稳定(如对于xp、2003等)。不知对于xp、2003那个版本更好?谢谢。

热键截图.png (771.89 KB, 下载次数: 157)

热键截图.png

热键截图.png (984.65 KB, 下载次数: 166)

热键截图.png

作者: 不点    时间: 2016-4-10 07:27
本帖最后由 不点 于 2016-4-10 08:12 编辑

分享一点想法,供参考。

第一、你的 xp 系统在仿真盘存在的情况下没碰上蓝屏死机,很幸运,值得高兴,也值得珍惜。这是个大事。其它都是小事,无足挂齿。其它事情,比如说遇到 grub4dos 的 bug,都可以报告给开发者,而且通常很快就得到解决。但是假如 xp 系统有 bug,我们可能就一筹莫展了。

第二、假如你的高端内存(地址在4G以上的内存)只有  2.5 G,你的 gz 文件解压后也只有 2.5G 或更少,那么,内存盘可以放在高端。如果你在 map --top --mem=? 中给定的内存盘大小超过 2.5 G,那么,高端内存放不下这个内存盘,会自动使用低端内存。你指定的内存盘大小必须小于高端内存的大小,多一个字节都不行。grub4dos 有一条 displaymem 命令,可以查看主板上内存地址的分布情况。你可以看到主板的高端可用内存量究竟有多大。

第三、firadisk 已经很多年没任何改动了。我扳着脚趾头想了想,那时候 win8 还没出现,xp 横行天下,win7 也刚刚开始露头。那时候的改进完善,应该全都是针对 xp 的。后来再也没改动,说明很稳定。再后来也没改动,说明也能用于 win8 或 win10。当然也有可能是因为没有 win8、win10 的用户使用 grub4dos 仿真盘,所以没人发现问题。真实情况究竟是怎样的,谁也说不准。

你可以作出你自己的判断,采取你认为最合适的方法、对策。不要受到我的影响。在 windows 下我从未用过这些仿真盘。我只是分享看法,没有任何强迫的意思。希望你玩得开心。


很抱歉,我犯了个低级错误,给你带来麻烦。

幸亏只是把内存盘的位置映射错了,没有造成什么实质性的伤害。

举例来说,map 命令应该修正为这样的:

  1. map   --top   --mem=-2880   (md)+8   (fd0)
复制代码

此处扇区数应该用负数。负数的绝对值表示内存盘最少占用的空间量(以 512 字节的扇区为单位)。如果是正数,则表示内存盘的绝对地址,也就是说,内存盘起始于参数所指定的物理地址处(单位是 512 字节的扇区)。

这个功能是我开发的,居然搞错,实在抱歉。


作者: ysj-1    时间: 2016-4-10 08:49
非常感谢不点大师的指点,用修正后的命令已经成功实现。非常感谢大师的回贴,另请教一个问题:扇区数和空间量如何计算的,我按大师的map   --top   --mem=-2880   (md)+8   (fd0)的命令按比例想MAP 750M的虚拟盘写成:map --top --mem=-1500000 (md)+8 (hd-1) 可是MAP 出来的虚拟盘的容量只有732.4M,是我算错了吗?2880是1.44M还是1.4M呢?如是1.4M的话我上面就应写成:map --top --mem=-1542857 (md)+8 (hd-1)  对吗?我太菜了,别笑我。请指点迷津,最后再次感谢你指点。谢谢。
作者: 2011yaya2007777    时间: 2016-4-10 11:07
实践出真知。试一试不就知道了。既然知道 -1500000 对应 732.4M,加一些就好了。
750*1024*1024/512=1536000.
1Kb=1024b
1Mb=1024Kb
1扇区=512b
作者: yueyezhan    时间: 2016-4-10 12:20
用firadisk做过xp 2003 vista win7 8 10的ramos,都能正常使用
作者: ysj-1    时间: 2016-4-10 12:28
感谢2011yaya2007777 的指点,也感谢不点大师的指点。谢谢你们的帮助。
作者: ysj-1    时间: 2016-4-10 12:28
感谢2011yaya2007777 的指点,也感谢不点大师的指点。谢谢你们的帮助。
作者: ysj-1    时间: 2016-4-10 12:34
另求问:yueyezhan 你在RAMOS中用GRLDR MAP的虚拟硬盘能否识别呢?(注意不是RAMOS本身所在的分区。)
作者: 不点    时间: 2016-4-10 13:17
1.44M 软盘——这是数学在作弄人。

什么是 T?什么是 G?什么是 M?什么是 K?

不同的人,不同的场合,有不同的理解。西方人喜欢用“千”来作单位。这 K 本来就是 1000 的意思。
一公斤就是 1000 克,也写成 1kg。

可是在计算机领域,二进制是机器语言,所以习惯上把所有的东西都往“2”上靠拢。
2 的 10 次方,等于 1024,这与 1000 很接近,所以,在计算机领域,也习惯把 1024 作为 1K 来对待。
同理,1M = 1024K,1G = 1024M,1T = 1024G。

但有时候,1000 和 1024 是混合使用的,可能让人感到困惑。不过现实世界就是这样的,存在皆合理。

也不能因为世界存在这些小毛病,就整天生闷气。

标准软盘的精确大小是 2880 扇区。我们知道 2 个扇区就是 2×512=1024 个字节,即 1K。

那么,2880 个扇区,就是 1440K。

所以,标准软盘的精确大小就是 1440KB,此处 K=1024,B 是“字节”的意思。

但是,1440KB 念起来可能不顺口,就被说成 1.44M 了。

这里其实就是把 1440 除以 1000 变成 1.44 了。它不是除以 1024。

如果除以 1024,那会是这样的:1440 / 1024 =1.40625

所以,准确地说,标准软盘应该是 1.40625M。




作者: ysj-1    时间: 2016-4-10 16:49
非常感谢不点大师的回贴指点,解除了我心中的疑惑。也感谢2011yaya2007777 的指点,另外我用WinVBlock驱动做的xp 的ramos中用MAP 的方式MAP 出来的虚拟硬盘同样不能被ramos xp 识别,ramos xp 可以正常使用,可就是不能识别出用MAP 方式MAP出来的虚拟硬盘。看来这可能是Firadisk驱动或WinVBlock驱动的问题,即只能识别OS系统所在分区的文件系统,而不能识别OS系统之外分区的文件系统;当然也可能是OS系统的问题。难到要识别MAP 方式出来的虚拟硬盘非要把OS系统放在这个MAP出来的虚拟硬盘上吗?这是什么造成的呢?不解中,可是把GRLDR菜单写成MAP --top --mem= -2880 (md)+8 (fd0),MAP出来的虚拟软盘系统会直接分配盘符A:只是不能识别A:盘中的文件,这真是奇怪。我用DiskGenius查看MAP 方式出来的虚拟硬盘它识别出这个硬盘的接口是SCSI,而我的硬盘识别为IDE接口。是否与这有关呢?我们知道SCSI硬盘是不能直接被系统识别的,需要SCSI硬盘的驱动才能识别。如果是这样的话,就需要Firadisk驱动或WinVBlock驱动具有SCSI硬盘的驱动的性质,从我在PE中用MAP方式出来的虚拟硬盘可以被识别来看;Firadisk驱动或WinVBlock驱动具有SCSI硬盘的驱动的性质,只是没能传递MAP方式出来的虚拟硬盘的其它性质,所以不能分配盘符。不知这个问题出在BIOS层面还是驱动本身层面呢?可是RAMOS系统能识别自身的文件系统,这说明这与BIOS无关而是驱动本身的问题,或是OS系统的问题。真不知Firadisk驱动或WinVBlock驱动是如何配合OS系统来完成GRLDR MAP出来的虚拟盘的,希望不点大师及各位高人的指点迷津。最后感谢不点大师的指点,真希望OS系统能为GRLDR MAP出来的虚拟硬盘分配盘符,并能识别其文件系统啊!能实现吗?
作者: ysj-1    时间: 2016-4-10 17:18
一点感慨:1.44M 软盘——这是数学在作弄人。同感啊!确实在BIOS中软盘也是说成1.44M 或2.88M在软件WinImage中同样也是说的是1.44M 或2.88M。不过我确实是个菜菜,不知这些:

计算机领域,二进制是机器语言,所以习惯上把所有的东西都往“2”上靠拢。
2 的 10 次方,等于 1024,这与 1000 很接近,所以,在计算机领域,也习惯把 1024 作为 1K 来对待。

1Kb=1024b
1Mb=1024Kb
1扇区=512b

最后感谢各位的指点。
作者: 不点    时间: 2016-4-10 17:36
ysj-1 发表于 2016-4-10 16:49
非常感谢不点大师的回贴指点,解除了我心中的疑惑。也感谢2011yaya2007777 的指点,另外我用WinVBlock驱动 ...

你提出了一个有趣的问题。假如你说的是真实情况,我怀疑 firadisk 和 winvblock 都只能驱动一个虚拟磁盘,不能同时驱动多个虚拟磁盘。

如果是自己在驱动程序的配置文件中没能把多个虚拟盘的信息填写完整,那属于自己使用方法不当造成的。

如果这些驱动本来就没有什么配置文件可以用来处理多个虚拟磁盘,那就属于驱动程序设计者的问题了。

具体究竟是哪种情况,我不知道。
作者: ysj-1    时间: 2016-4-10 18:09
感谢不点大师的回贴,我是按论坛上firadisk 和 winvblock 驱动的教程做的,感谢不点大师的指点,我又查了一下教程找到这样的说法:(我不理解,请指点)

①请向该系统映像文件中的boot.ini添加 /firadisk=disk,vmem=你的系统映像文件的路径

boot.ini例子:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /firadisk=disk,vmem=x:\filename.img

其中x:\filename.img是指你的系统映像文件的完整路径,而且要求filename.img所在分区盘符已经在mounteddevices注册表中存在了

filename.img所在分区盘符已经在mounteddevices注册表中存在了这个怎么实现呢?主要是用MAP方式MAP出来的虚拟硬盘是未知的,(如:大小、mounteddevices注册表的值等)。
你说道在驱动程序的配置文件中把多个虚拟盘的信息填写完整,该在哪儿配置,是注册表吗?
还有该怎么配置呢?我太菜了不理解,请指点迷津,谢谢。





作者: ysj-1    时间: 2016-4-10 18:27
致不点大师:下面这段不理解:
驱动设置
方法1:通过注册表

1.注册表项 HKLM\SYSTEM\CurrentControlSet\Control\FiraDisk

①名为StartOptions ,类型为字符串

其数值的用途:使用FiraDisk驱动创建虚拟盘.

例如:

disk,vmem=find:\file1.img;cdrom,vmem=find:\file2.iso;floppy,vmem=c:\file3.img;disk,vmem=c:\file4.img,size=1052835840

例子含有的虚拟盘的类型有: 硬盘, 光驱, 软驱

有3种主要的媒体类型/映像 :

file=路径 : 读写文件.

vmem=路径 : 内存映射文件.

不带路径的vmem : 从虚拟内存分配 (内存+页面文件).

可选参数

offset=数值

size=数值

heads=数值

sectors-per-track=数值

ro : 只读

boot : 表明该虚拟驱动器是用于Windows的启动.

如果文件不存在和指定大小,新的文件将被创建。

如果文件存在,但小于偏移值+大小, 将被扩展.

②名为DisableDetectGrub4dos ,类型为REG_DWORD (用于关闭检测Grub4dos的仿真盘)

值:0为启用 1为关闭

③名为DisableDetectMemdisk ,类型为REG_DWORD (用于关闭检测MEMDisk的仿真盘)

值:0为启用 1为关闭

④名为DisableDetectedRAMDrives ,类型为REG_DWORD (用于关闭检测Grub4dos创建的内存盘盘)

值:0为启用 1为关闭

2.注册表项 HKLM\SYSTEM\CurrentControlSet\services\FiraDisk\Parameters

①StartOptions同上.

你可以在Windows XP安装的第一阶段通过TXTSETUP.OEM字段[Config.FiraDisk]写入该值.

②名为PnP ,类型为REG_DWORD

0为在启动时创建新的FiraDisk Enumerator device. 1为不创建FiraDisk Enumerator device.

方法2:通过GRUB4DOS内存设备

创建一个使用设备号在0-127之间的小内存盘和写一些配置进该小内存盘。

以[FiraDisk] (可不区分大小写)开始,然后接 \n ,然后StartOptions=数据\n ,最后以\0结束。

反斜杠是用于转义,你可以在数据字段使用 / 代替 \ 。当FiraDisk读到该数据,它会自动转换 / 为 \ 。

例子:

map --mem (md)0x800+4 (99)
map --hook
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/file1.iso;floppy,vmem=find:/file2.img;\n\0
请指点迷津,谢谢。






作者: 不点    时间: 2016-4-10 20:30
呵呵,你迷津,我也迷糊,没法指点江山。你还找到教程了,而我从未了解过。不过,也许大家可以共同学习,互相帮助。本着盲人摸象的大无畏态度,我斗胆揣测一下。

disk,vmem=find:\file1.img;cdrom,vmem=find:\file2.iso;floppy,vmem=c:\file3.img;disk,vmem=c:\file4.img,size=1052835840

那意思可能是说,第一个是虚拟硬盘(disk),它是内存盘(vmem),它的映像文件位于根目录下(\),名字叫做 file1.img,至于说它究竟在哪个盘上,不确定,但可以找到它(find)。

第二个是虚拟光盘(cdrom),它是内存盘(vmem),它的映像文件位于根目录下(\),名字叫做 file2.iso,至于说它究竟在哪个盘上,不确定,但可以找到它(find)。

第三个是虚拟软盘(floppy),它是内存盘(vmem),它的映像文件有固定的路径 c:\file3.img,不需要查找。

第四个也是虚拟硬盘(disk),它是内存盘(vmem),它的映像文件有固定的路径 c:\file4.img,不需要查找,而且为它保留的内存盘空间有 1G 之多(size=1052835840)。

作者: 不点    时间: 2016-4-10 20:52
而且我猜测,firadisk 的这些设置,其中有些已经与 grub4dos 无关了。也就是说,它不一定需要读取 grub4dos 的 map 信息,而是直接建立它自己在 windows 下的虚拟盘信息。也就是说,仅仅在从 grub4dos 这个“火箭发射台”启动的时候,需要 grub4dos 的实模式虚拟盘信息。一旦进入预定轨道(Windows),就不再需要 grub4dos 的信息了(第一级火箭的废铁都可以扔掉了)。

file=路径 : 读写文件.
vmem=路径 : 内存映射文件.


如果不用 vmem=,而是用 file=,则表示这不是内存盘,而是直接用硬盘上的 img 文件进行映射。

不带路径的vmem : 从虚拟内存分配 (内存+页面文件).


内存盘可以不带路径,此时它可能读取 grub4dos 的映射表,确定内存盘的起始物理地址和长度。当然也可能不使用 grub4dos 的信息,而是 firadisk 自己为这个内存盘分配内存。


作者: ysj-1    时间: 2016-4-10 22:39
感谢不点大师的回贴,也谢谢你的指点。不过用GRLDR MAP虚拟硬盘造成在OS系统中不能分配盘符和识别文件的问题,原因已经找到。我可以确定是后面开发的GRLDR引入的BUG或则是开发者有意为之。我找到早期的GRLDR测试时发现不存在GRLDR MAP虚拟硬盘造成在OS系统中不能分配盘符和识别文件的问题。只是这个版本是早期的所以不能实现MAP到高位内存。并说明一下这个文件来自CHENGALL的NTBOOT.IMG我提取了出来。
见下面的附件:

grldr.rar

113.83 KB, 下载次数: 2, 下载积分: 无忧币 -2

可识别map虚拟盘


作者: ysj-1    时间: 2016-4-10 22:47
致不点大师:不知现在的GRLDR的开发人员能否在最新的版本中修正这个问题,让GRLDR能实现 MAP虚拟盘到高位内存的同时实现在OS系统中能分配盘符和识别文件。不点大师您还在开发吗?能否修正一下呢?谢谢。非常希望能实现这个功能啊。能实现吗?最后再次谢谢你的指点和帮助。
作者: ysj-1    时间: 2016-4-10 23:48
再置不点大师:我用最新的GRLDR版本2016-4-9版测试时发现,最新的GRLDR也能识别MAP到低位内存的虚拟硬盘,但用MAP --MEM --TOP 命令出来的虚拟盘就不能识别。发遗憾啊!开发人员能否让GRLDR MAP到高位内存的虚拟硬盘也能识别呢?下面的附件是最新的版本:

grldr.rar

160.95 KB, 下载次数: 0, 下载积分: 无忧币 -2

低位内存可识别高位内存不可识别


作者: ysj-1    时间: 2016-4-11 01:23
再致不点大师:从最新的GRLDR版本支持低位内存的虚拟硬盘而不支持高位的虚拟硬盘来看的话。可能不是GRLDR的问题而有可能是firadisk驱动的问题,原因在于firadisk驱动是基于32位,所以在低位内存下工作正常,而到高位内存时已经不是32位程序能够操作的了。之所以在OS系统中还能识别到高位的虚拟硬盘可能是GRLDR MAP的功能
让OS系统把它看作是一个SCSI硬盘设备而不是内存,所以在使用了firadisk驱动时基于它SCSI驱动性质所以OS系统能识别到这个硬盘,但firadisk驱动又由于基于32位所以不能对高位内存进行识别,所以在高位内存的虚拟盘不正常。看来要用高位内存虚拟盘在32位环境只能是进系统后重新分区和格式化了。(firadisk驱动时基于它SCSI驱动性质所以OS系统能识别到这个硬盘)最后再次感谢不点大师和2011yaya2007777 的指点,谢谢。
作者: 不点    时间: 2016-4-11 02:23
感觉是驱动程序的 bug。你可试试 winvblock,看看是否也存在相同的 bug。

既然你能手动分区、格式化,说明 32 位系统也能访问虚拟盘。可能是驱动程序的 bug,未能成功获取高位内存里的扇区数据。

也可直接向驱动程序的开发者报告 bug。


作者: ysj-1    时间: 2016-4-11 05:21
再致不点大师:这个可能不是驱动BUG,而是程序只能做到这样,原因在于基于X86指令集的32位程序只能访问到4G内存或更少,32位系统只能识别使用4G内存,而X64位系统可使用超过4G的内存。一些服务器版本32位系统可识别并使用大于4G内存是用了PAE技术。现在的OS系统采用的是分层设计,所以我才发出这个求助贴,因为在OS系统层面不能解决的问题,在BIOS层面有可能解决,原因在于BIOS直接管理硬件。而GRLDR是基于BIOS层面开发的所以应该不存在不能访问和不能识别大内存的问题。现在开发人员开发的map --mem --top 命令对于32位的03PE系统意义重大,原因在于03PE系统不能识别大内存。我发现03PE系统在使用多核CPU支持后能手动分区、格式化高位内存的虚拟盘,而在不使用多核CPU支持的情况则容易蓝屏,原因是内核不太一样。我现在并不知到这个现象只是在我的机子上才存在还是具有普遍现象,如是具有普遍现象意义就非常大了。我在用RAMOS XP中也发现map --mem --top 命令有效,同样能发现高位内存的虚拟盘只是不能正常识别;所以我现在非常的迷茫啊。最后再次感谢您的回贴和对我的帮助指点。谢谢。
作者: 不点    时间: 2016-4-11 09:20
本帖最后由 不点 于 2016-4-11 09:33 编辑

我印象中,32 位系统,可以识别高位内存盘的。虚拟的 C: 盘放在高位内存,好像行得通啊。有没有人成功?

如果有成功,那就说明驱动程序是支持高位内存盘的。但假如它只支持一个虚拟盘,不支持多个,则属于 bug。

看来要用高位内存虚拟盘在32位环境只能是进系统后重新分区和格式化了。


这句话引起我思考:既然能够重新分区、格式化,那意思就是说,可以使用高位内存里面的虚拟盘。

因此,可能驱动程序本身没问题,而仅仅是虚拟盘的文件系统不正确造成的,比如说,虚拟硬盘的第一扇区不含分区表。

还有可能是 MBR 上的磁盘签名有问题(有冲突),Windows 拒绝为其分配盘符。更改 MBR 上的磁盘签名为随机数,可能有助于解决这个问题。


作者: ysj-1    时间: 2016-4-11 13:15
致不点大师:"32 位系统,可以识别高位内存盘的。"这是正确的但32 位系统和程序不能识别超过4G的内存,我想原因在于OS系统在对不同设备处理方式不一样造成的。(如:32 位系统和程序不能识别超过4G的内存,但可以管理超过4G的大硬盘,如我有一个硬盘是160G,这并不矛盾。还有识别4G内存的同时,还可以在硬盘上再设虚拟内存;但系统和程序仍然不会调用超过4G的可用内存,(包括虚拟内存)这是32位系统对内存寻址能力的极限,但OS系统对硬盘却不是这样,如:我可以用完OS管理的160G的硬盘) 正因为GRLDR的MAP --MEM --TOP 把内存虚拟成了硬盘所以OS系统可以管理,因为OS才用分层设计的它不会直接管理硬件,所以OS系统并不会知到自已现在管理的是内存而不是硬盘;它只会把它作为硬盘处理,采用硬盘的管理方式。然而firadisk驱动它不会把它作为硬盘处理而是在内存中去构建。(这点我也不太懂,但它一定只会是在4G以内的内存中发挥作用,不管这4G以内的内存是从哪个扇区开始到哪个扇区结束;因为这是32位程序决定了的。)所以
你说驱动程序是支持高位内存盘的可能不成立。我的机子上测试也是如此。最后感谢你的回贴和对我的帮助。谢谢。
作者: 不点    时间: 2016-4-11 15:32
ysj-1 发表于 2016-4-11 13:15
致不点大师:"32 位系统,可以识别高位内存盘的。"这是正确的但32 位系统和程序不能识别超过4G的内存,我想 ...

既然不能访问 4G 以上的内存,那你格式化谁?你格式化的,不还是 4G 以上的内存吗?

我的理解是,驱动程序已经提供了 4G 以上内存的访问能力,并把它当成虚拟扇区数据。

这样是可以解释通的。

还有就是,以前早听说有人在 XP 下使用 4G 以上的内存作为虚拟盘,不浪费内存资源。

这一点你也提到过。不过,你只是希望,而别人早做到了,这是区别。

他们把 4G 以上的空间作为 C: 盘,因而 4G 以下都可以作为 XP 的系统内存了。

你可以找找看,这种情况应该是有的,如果我的记忆没骗我的话。


作者: ysj-1    时间: 2016-4-11 18:24
致不点大师:首先我对开发GRLDR的人员表示感谢,因为在BIOS层面虚拟的硬盘OS系统是可以管理的,这使得原先4G以上的内存在32位系统下不能使用。而现在可以把它作为高位内存虚拟盘使用,相当于为OS增加了一个高速硬盘,在这个硬盘上可以当作一个真实的硬盘使用。这是GRLDR MAP形成的,当然GRLDR还可以虚拟其它设备,如果没有涉及内存寻址,在OS系统中又能符合现有的32位系统所使用的API的话,可能都可以使用;这是有价值的。比如可把虚拟内存设在这个高位内存虚拟的硬盘上以提高系统性能和稳定性,虽然系统直接使用高位内存不可能超过几百M。(即:低位内存加上可调用虚拟内存要不大于4G)虽然我们可以把虚拟内存设得很大,但32位系统只支持最大4G寻址,所以没有意义;但我们可以把它作为高速 硬盘使用,还是有价值的。
你说的 XP 下使用 4G 以上的内存可能要打大内存补丁,这有点象服务器版本的32位系统开PAE。这样OS系统可以直接识别并调用4G以上内存,但不推荐这么做,原因在于系统的稳定性和标准化API。否则会出现各种软件或驱动的不兼容。我实际又测试了一下把RAMOS XP (用论坛上老九精减的一个英版XP的在GHO文件做的)分别MAP到低位内存和高位内存测试了一下,在低位正常而在高位蓝屏。这个系统是XP SP2的,如果用SP3的话我想可能会同样出问题。对于你说驱动程序已经提供了 4G 以上内存的访问能力这是不可能的,除非驱动不采用X86指令的32位寻址,直接访问内存;如GRLDR直接对硬件层面操作。至于说既然不能访问 4G 以上的内存,那你格式化谁?你格式化的,不还是 4G 以上的内存吗?这个问题我已说过,在OS系统中这时的高位虚拟盘OS会认为是硬盘而不是内存,因为OS不直接和硬件打交道。如果说有人成功把OS系统放到高位虚拟盘搞成功了的话,可能必须解决大内存问题,我现在是想用在03PE上不可能用PAE或打补丁。原因在于我只是一个菜菜,无法解决PAE或打补丁。(超出我的能力了)最初遇到高位内存虚拟盘不能识别时没有想到32位系统的问题后来用最新的GRLDR测试时发现低位行,高位不行才开始思考这个问题的。最后我要说明的一点,我确实是个菜菜,现在的一些说法可能不正确,望各位大师指正。这些说法都来自网上或本论坛。最后,再次感谢你的回贴,以及你对我的帮助和指点。谢谢。
作者: 不点    时间: 2016-4-11 19:09
你自己说的,高位内存上的虚拟盘,需要格式化才能用。既然你格式化以后可以用了,那不就等于说,32 位系统下,也能使用 4G 以上的内存盘了吗?

请不要绕太远,直接谈这个问题。我想这不复杂。
作者: pcfan120    时间: 2016-4-11 21:19
ysj-1 发表于 2016-4-11 18:24
致不点大师:首先我对开发GRLDR的人员表示感谢,因为在BIOS层面虚拟的硬盘OS系统是可以管理的,这使得原先4 ...

学习了,很好的交流。。希望你的BIOS层面的虚拟高位内存盘能够成功。。这样对于32系统很有意义。。
作者: pcfan120    时间: 2016-4-11 21:22
ysj-1 发表于 2016-4-11 18:24
致不点大师:首先我对开发GRLDR的人员表示感谢,因为在BIOS层面虚拟的硬盘OS系统是可以管理的,这使得原先4 ...

不知道方便网盘分享下“老九精减的一个英版XP的GHO”吗,谢谢
作者: ysj-1    时间: 2016-4-11 22:19
先回复:pcfan120
我是一个菜菜,有的不一定正确,你最好在自已的机子上试试。我的说话有好多来自网上,我本人也并不是从事计算机行业的,是个门外汉平时也只是个伸手党至于老九精减的一个英文版XP SP2的GHO文件我现在的计算机上已没有了(我的原来的计算机坏了,现在这个计算机是今年过年后买的)现在只剩下我原来做的RAMOS。这个英文版XP SP2没有什么实际用途。当时下它是因为它很小和一个PE差不多大小(60几M)我从未用过网盘。你最好找老九索取。
作者: ysj-1    时间: 2016-4-11 22:47
致不点大师:你自己说的,高位内存上的虚拟盘,需要格式化才能用。既然你格式化以后可以用了,那不就等于说,32 位系统下,也能使用 4G 以上的内存盘了吗?

对于这个问题有一点说明:我的机子总内存只有4G,我是在PE上测试的。我所说的高位内存盘的说法来自本论坛GRUB4DS学习笔记:在 grub4dos 中,内存在 3.25G 处被分成了高端内存和低端内存两端,镜像不能跨 3.25G 这个点。如果你的内存小于 3.25G,你就没有高端内存可用。我所说的是  3.25G不是4G因为我没有更大的内存。这点我在前面的贴子中说过,另这儿我们所聊的是MAP --mem --top 中的高位虚拟内存盘,是不是就等于4G以上的高位虚拟内存盘这我不知到,这点你应该比我清楚。我原来的PE中系统只能识别2.99G还剩下的1G的内存发现不了也用不了。我用 MAP --mem --top 750M中的高位虚拟内存盘在我的机子上格式化以后可以用了。这只是在我的机子上,而且我没有更大的内存测试MAP --mem --top 所说的高位内存盘是否就是4G 以上的内存盘。我看那个GRUB4DS学习笔记说 的是3.25G ,所以你的问题我非常迷茫啊。我只能说:MAP --mem --top 所说的高位内存盘在我的机子上可以用了。另我也想知到GRLDR的开发人员为什么是3.25G 而不是4G呢?不点大师想必知道吧,能否指点一下呢?谢谢。最后感谢你的回贴,和对我的帮助。谢谢。

作者: ysj-1    时间: 2016-4-11 23:51
致不点大师:你在19楼说:假如你的高端内存(地址在4G以上的内存)只有  2.5 G,你的 gz 文件解压后也只有 2.5G 或更少,那么,内存盘可以放在高端。如果你在 map --top --mem=? 中给定的内存盘大小超过 2.5 G,那么,高端内存放不下这个内存盘,会自动使用低端内存。你指定的内存盘大小必须小于高端内存的大小,多一个字节都不行。grub4dos 有一条 displaymem 命令,可以查看主板上内存地址的分布情况。你可以看到主板的高端可用内存量究竟有多大。

这儿map --top --mem是否就包括4G以上的内存呢?我非常想知道啊。这个我之能咨讯你了,因为我没有更大的内存来测试了。同时也不明白GRUB4DS学习笔记说 3.25G 的问题能否指教呢?谢谢。

作者: 不点    时间: 2016-4-12 06:21
本帖最后由 不点 于 2016-4-12 09:36 编辑
我本人也并不是从事计算机行业的,是个门外汉平时也只是个伸手党


没问题,我也是完全一样的。门外汉对门外汉,这才能你一言我一语深入学习和交谈。真正的高手是不可能浪费他的宝贵时间来跟我们聊这些小儿科话题的。

现在就说说我碰巧了解而你没了解的知识,算是我们这个级别的人,互相交流和帮助吧。

你说你的机器内存是 4G。我了解到的知识是,主板 BIOS 会把这 4G 分成两部分,一部分大约 3.25G,赋予物理地址 0~3.25G,另一部分 0.75G,赋予物理地址 4~4.75G。你要是懂得 grub4dos 的 displaymem 命令,你就可以知道,主板 BIOS 会把内存映射为很多块不同的物理地址区域。你在 grub4dos 下用 map --mem --top 最大可以映射(大约)0.75G 的盘到 4G 以上的高端区域。事实上,你做到了,应该是确信无疑了。但是你仍有疑惑,我猜你可能认为,这 0.75G 仍旧在物理地址 4G 以内。这是错误的。这 0.75G 确实是在 4G 以外,是在高于 4G 的内存物理地址上。不需要很专业的知识,你很容易验证这一点。比如说,你把你的 0.75G 硬盘的扇区全部填充为某个秘密字符串(比如说,它有 16 字节长,重复无数次,填满整个 0.75G 的 img)。把它映射到内存高端,然后,你在 0~4G 范围内查找你的秘密字符串。如果找到了,那就证明虚拟盘的物理地址是在 4G 以内。如果找不到,那就证明虚拟盘确实是在 4G 以外。在 map 的过程中,map 命令需要把你的 U 盘上的 img 读入某个低端内存区域,然后再复制到高端目的地。等它完成之后,低端内存中也残留一些扇区数据,不过,你可以把它们清除为 0。然后,在 map --hook 之后,你 cat --hex (hd0)+300 ,此处假定 (hd0) 是你的虚拟硬盘。你的秘密字符串应该出来了。

为什么 4G RAM 会被主板分成两部分呢?因为 4G 以下的一部分内存空间(大约 0.75G)要被主板和 CPU 占据,这些空间不能让用户随便使用。所以,主板就把 4G 内存当中的 0.75G 赋予物理地址 4 ~ 4.75G 了。从 3.25 ~ 4G 的地址空间,被主板芯片组、CPU 占据,用户不允许使用这部分的空间。所以,你不可能把内存盘放在 3.25 ~ 4G 这个物理地址区域。

map --top --mem 是否就包括 4G 以上的内存呢?


grub4dos 一开始是不支持内存盘的。最初只支持不带 --mem 的直接映射。后来为了支持内存盘,才增加了 --mem 参数。再后来,grub4dos 内核支持了 4G 以上的内存空间的访问,此后的某一天,才增加 --top 参数。我印象中,这个参数是 firadisk 的开发者为 grub4dos 增加的,是给 grub4dos 打的补丁。grub4dos 整体上属于 32 位系统,不能直接把 4G 以上的内存当作进程空间(即运行程序的空间)来用,只能把它当成数据空间来用。内存盘就是一堆数据,正好可以放在 4G 以外的空间上。这已经被证明是可行的了,有人能够用 map 命令创建 30G 的内存盘。前面我提到过,grub4dos 内核目前支持访问 512G 内存,因此,最大可能支持的内存盘是大约 508G;如果一个内存盘要使用高端内存,那么低端的 4G 空间是无法使用的。为了简单起见,grub4dos 的仿真程序要求一个内存盘必须占据连续的内存地址,不能跨越内存块的边界。所以,一个内存盘的最大长度是 508G。精确地说,低端可能有 3G 或 3.25G,等等,不确定(因主板的不同而不同);剩下的空间都分配给了 4G 以上的物理地址了,因此,4G 以上有大约 508.75G 的地址空间是连续内存块。然而 grub4dos 只能访问 508G,不能访问剩余的 0.75G,这是因为(目前) grub4dos 最大只能访问 512G 的地址空间(4G 低端内存空间 + 508G 高位的内存空间)。


作者: ysj-1    时间: 2016-4-12 10:47
致不点大师:非常感谢你的回贴和指点,解出了我心中的疑惑;听到这个结果我非常高兴,这下我可以放心的把它用在我的PE上了。不点大师能否有什么程序能检查一个没有分区和格式化了的硬盘(虚拟硬盘)的容量呢?若有就可能实现自动为map --mem --top出来的虚拟硬盘实现分区和格式化从而使用它。我非常想实现自动分配盘符啊,不知能否实现呢?最后再次感谢你的回贴和对我的帮助和指点。谢谢。
作者: 不点    时间: 2016-4-12 11:15
本帖最后由 不点 于 2016-4-12 11:19 编辑

我觉得这内存盘不能被识别的问题,属于 Windows 的问题。我前面提到了我的揣测以及处理的方法,不过你好像没有留意。

我揣测是由于内存盘 “磁盘签名” 有冲突,导致 Windows 拒绝为它分配盘符。我猜测只要把内存盘的分区表上的 “磁盘签名” 设置好,就可避免被 Windows 拒绝了。

你可以做如下的试验:

建立内存盘映像文件,要带上 MBR,不要只是一个 volume 的卷。这是因为 “磁盘签名” 是在 MBR 扇区上。如果你没有 MBR 扇区,就无法设定你的磁盘签名。

1. 为这个映像文件分区,格式化,让它具有非 0 的磁盘签名,并且确认这个磁盘签名不会与你电脑上其他硬盘的磁盘签名相同。

2. 把它 map 到高端内存,进入 Windows,看看能否自动为它分配盘符。

关于 MBR 上的磁盘签名,你可以百度一下。

作者: ysj-1    时间: 2016-4-12 15:13
致不点大师:关于 MBR 上的磁盘签名,你可以百度一下。

我去百度了一下,百度说不知道;一个链接回无忧论坛了,找到了你回某个贴子上的一段话:这是一个巨大的误区。

MBR 中,除了古老的末尾 64 字节分区表 + 2 字节的 55 AA 引导记录合法标志之外,微软在 NT 系统中还定义了新的磁盘签名域,位于偏移 0x1B8 处,占用 4 字节。

你应该保持 MBR 扇区末尾的 72 字节不动才可以安全启动 Windows。你修改的 446 字节,修改多了,你破坏了微软保存的磁盘签名。你应该只修改 440 字节才正确。

我用BOOTICE编辑了一下测试用的IMG中的MBR,你所提到的位于偏移 0x1B8 处,占用 4 字节的内容,模仿硬盘相同位置的值修改了一下;测试时发现可以分配盘符了,可是还是没有格式化;怎么回事呢?下面是我修改测试用的一个压缩文件。希望不烦指点下下。谢谢。

yy.img.gz

482.87 KB, 下载次数: 2, 下载积分: 无忧币 -2

可分配盘符但没格式化


作者: ysj-1    时间: 2016-4-12 15:29
致不点大师:请教一个问题:
你在50楼说“另一部分 0.75G,赋予物理地址”,我在想一个问题。这是现在的通一标准吗?以后主板和其它硬件发展了,会不会变化呢?如果要变化就麻烦了啊。我原来坏掉的一个计算机只有256M的内存,主板怎么样不知道,不知这样的机子是否也是“另一部分 0.75G,赋予物理地址”,这儿我没别的意思,而是担心高低位内存之说只能用于新机。哪样的话现在最新版的GRLDR用在老机上会不会有问题?谢谢。望指点迷津。最后再次感谢您对我的帮助和指点。谢谢。
作者: 不点    时间: 2016-4-12 15:45
本帖最后由 不点 于 2016-4-12 17:26 编辑

你试验的 img,含有 2 个分区,一个是主分区 203.9M,一个是逻辑分区 188.2M。

这有可能会让 Windows 不舒服。Windows 有时候只认一个分区,在可移动磁盘的情况下,这问题经常出现。

所以,虚拟盘也有可能碰上这个问题。

因此可以说,这不是应用程序的问题,而归结为 Windows 系统的问题(我猜可能是它的资源管理器的问题,我不懂,只是瞎猜)。

你不妨试试,删除 yy.img 里面的扩展分区,只保留那个 203.9M 的主分区,看看情况怎样。分区表还得存在,否则会出现前面所说的问题。


关于磁盘签名,我找到这样一张图片,供参考【看来百度还是没用啊,囧】:



又找到这样一篇博文:Vista 的 MBR 磁盘签名(Disk Signature)

http://blog.sina.com.cn/s/blog_6fed14220100qq71.html



disk_signature.JPG (146.83 KB, 下载次数: 134)

MBR 上的磁盘签名:4 个字节,从偏移 1B8 至 1BB

MBR 上的磁盘签名:4 个字节,从偏移 1B8 至 1BB

作者: 不点    时间: 2016-4-12 17:43
ysj-1 发表于 2016-4-12 15:29
致不点大师:请教一个问题:
你在50楼说“另一部分 0.75G,赋予物理地址”,我在想一个问题。这是现在的通 ...

不用关心这些问题。当 BIOS 被取缔的时候,没人再去使用 grub4dos 了,也就没人再去关心 0.75G 的问题了。

没有标准。跟着微软走就是标准(当然前提是:微软有能力继续统治 PC 行业)。微软不喜欢 BIOS,它正在强制推行 EFI。新电脑都是 EFI 了。你学习 EFI 就行了。BIOS 的老知识都没用了,要淘汰了。grub4dos 也只能在 BIOS 下运行,不能在 EFI 下运行。你可以学习 EFI 下的启动知识,也许根本就不存在 0.75G 的问题。有很多用于 EFI 的软件,例如 grub2。本论坛也有一个叫做 MBROS 的软件,你也可以去了解一下。
作者: ysj-1    时间: 2016-4-12 18:47
致不点大师:我觉得BIOS不可能被淘汰,原因在于EFI太灵活了,升级换代会无序的,整个计算机硬件底层会大乱;更加没有标准了;要是EFI取带了BIOS可能微软真的要玩完了。原因在于标准哪,还是标准哪。没有标准计算机硬件底层大乱,最终会导致OS的大乱的。我之所以问标准的问题,也是因为这个原因啊。我希望GRLDR能够在更新时也考虑一下向下兼容的问题。现在版本越来越多了,变化也越来越大当然功能也越来越强;希望GRLDR不要象EFI啊。另外GRLDR map --mem --top 出来的虚拟硬盘的识别问题,我始终搞不定;看来也只有进OS系统用BOOTICE分区格式化了。最后再次感谢你的回贴以及对我的帮助。谢谢。
作者: 不点    时间: 2016-4-12 19:29
我刚好有一台电脑是 4G 内存,安装 XP,只识别了 3G,那么剩下的 1G 一定是在 4G 以上了。

于是我在 XP 系统当中安装了 firadisk 驱动。

开机重启,我进入 grub4dos 命令行,执行:

map   --top   --mem   /dos.ima   (fd0)
map   --hook
chainloader /ntldr
boot

进入系统后,发现了 3.5 英寸软驱(A:),里面的内容就是 dos.IMA 的内容。

改天试试 PE 看行不行。


作者: ysj-1    时间: 2016-4-12 22:31
致不点大师:
能否把你安装的firadisk 驱动传上来,我在我的PE上测试一下呢?不好意思,又当伸手党了。谢谢。
作者: 不点    时间: 2016-4-12 23:00
就在置顶的帖子里面:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=185938&extra=page%3D1

下载的文件是 firadisk-driver-0.0.1.30.zip

http://bbs.wuyou.net/forum.php?mod=attachment&aid=MTE1NDEwfDAyNmY4YzRmfDE0NjA0NzI1MjZ8MjUwNjkyfDE4NTkzOA%3D%3D

安装很简单,鼠标右键点击其中的 inf 文件,选“安装”即可。如果要在 PE 下安装,我估计可能需要参照置顶的教程中关于 firadisk 安装的部分了。




作者: ysj-1    时间: 2016-4-12 23:48
致不点大师:
这个版本我测试过不能识别,另这两天没出现的蓝屏又出现了,好象在数据读写虚拟盘时。现在正在找原因。谢谢你的回贴和帮助。谢谢。另你说: “改天试试 PE 看行不行。” 静候佳音。谢谢。

作者: ysj-1    时间: 2016-4-13 01:53
致不点大师:我这儿有个遗憾的消息,GRLDR map --mem --top出来的虚拟内存盘无法正常使用。我原来的测试过程有问题,我被任务管理器和IMDISK欺骗了。我把虚拟内存设在map --mem --top出来的虚拟内存盘,然后用IMDISK设虚拟内存盘占用内存的方式测试时,PF值可以过3.25G同时IMDISK设的虚拟内存盘可高达3G,同时通过上网运行程序测试到虚拟内存调用达到100M,自以为可以使用map --mem --top出来的虚拟内存盘了。然而最进的蓝屏让我重新测试,我采用直接写map --mem --top出来的虚拟内存盘或IMDISK设的虚拟内存盘时(注意大量写入),一定蓝屏。看来原因还是在firadisk驱动没能发挥作用有关,OS系统虽然把map --mem --top的这部分内存看作了硬盘,但它毕竟不是硬盘,不具有硬盘的稳定结构。内存空间是连续的,一但这个内存空间出现不连续的情况map --mem --top出来的虚拟内存盘就会崩溃,然而硬盘不是。所以当map --mem --top出来的虚拟内存盘空间连续且是静态时,OS系统可稳定运行。但map --mem --top出来的虚拟内存盘一但这个内存空间出现不连续的情况或有较大的改变就会造成虚拟内存盘崩溃从而致OS系统崩溃。看来map --mem --top出来的空间只能用于存储只读或静态的镜像,不能用于可写或非静态的数据。最后,感谢不点大师对我的帮助和指点;虽然并没有实现我的想法,但学到了不少知识。谢谢。
作者: 不点    时间: 2016-4-13 08:18
没机会试验 PE,又在 XP 下试验了你给的 yy.img,两个分区都被正常识别,并都被分配盘符。

操作命令是这样的:

map    --top    --mem    /yy.img    (hd)
map    --hook
chainloader    /ntldr
boot


作者: ysj-1    时间: 2016-4-13 17:36
致不点大师:
关于GRLDR  map --mem --top最后的一点猜想,能否让top的范围设在3g-3.25g之间而不是3.25g之后。这样相信
firadisk 驱动可以正常工作。(不太清楚,希望不点大师指点)这样的好处是可能可以为XP或03PE找回250M可用内存。同时一般MAP的镜象文件不会太大,否则时间会较长也没有意义了。不知GRLDR在MAP 命令方面能否实现在3g-3.25g之间MAP一个虚拟硬盘呢?(我不懂,望指点)谢谢。
作者: 不点    时间: 2016-4-13 18:24
本帖最后由 不点 于 2016-4-13 18:30 编辑
ysj-1 发表于 2016-4-13 17:36
致不点大师:
关于GRLDR  map --mem --top最后的一点猜想,能否让top的范围设在3g-3.25g之间而不是3.25g之 ...


这个现在就能实现,只需调整好 map 的一些参数就行。

你需要研究 displaymem 命令的输出结果。

然后用 map --mem=X  即可。此处 X 是正数(不是负数),代表从此位置开始是虚拟盘的扇区。

X 的单位是 512 字节的扇区块。比如说,你想从 3G 开始,那么,看看 3G 转换成扇区块有多少个:

3G = 3×1024M = 3×1024×1024K=3×1024×1024×2个扇区=6291456个扇区

因此,你的命令是

map   --mem=6291456  /your.img   (hd)

注意这是从固定内存地址处映射,不使用 --top

同时,你当然得保证,3G 之后的空间能够放得下你的 img,不要让它超越你的主板限制(3.25G 限制)。你研究 displaymem 的显示信息吧。

对于我现在的电脑,它在 3G 以上都是 BIOS 保留的,无法使用。只能在 3G 以下才行(比如 2.75G ~ 3G 之间的空间)。

作者: ysj-1    时间: 2016-4-13 20:41
致不点大师:
感谢您的回贴和指点,我用displaymem显示信息,看不懂啊。只看懂了这个:MEM:639K/3061M/1024M。其中3061M我算了下好象是2.99G 03PE显示的2.99G可能就是它吧。后面的1024M怎么回事不清楚。但你在50楼提到:"为什么 4G RAM 会被主板分成两部分呢?因为 4G 以下的一部分内存空间(大约 0.75G)要被主板和 CPU 占据,这些空间不能让用户随便使用。所以,主板就把 4G 内存当中的 0.75G 赋予物理地址 4 ~ 4.75G 了。"那么还有0.25G内存地址应在4G内吧,是BIOS用了吗?还是在3G之后的某个碎块区域呢?这真是糟糕的硬件哪。看来32位(不打补丁不开PAE)只能用上2.99G了么?可NT6.X OS系统在某些机子上显示4G(3.25G)可用。是怎么回事呢?是否在3G之后还存在某个碎块区域呢?不解中。最后感谢不点大师的回贴和指点谢谢。
作者: ysj-1    时间: 2016-4-13 21:29
致不点大师:
虚拟内存pagefile.sys到底是个什么动动啊?系统对它调用的容量在我的机子上没超过150M。前段时间我被骗主要就是因为这个动西。我在MAP --MEM --TOP 出来的虚拟内存盘上设置747M系统它都不蓝屏,而且在上网一段时间后用AIDA64 Business测试到系统对它调用了100M左右。不知上述747M的pagefile.sys是否只是系统作了个标识,事实上并没有占用747M呢?而且系统调用的100M左右的动动是在4G地址之后呢还是之前?我只成功的在MAP --MEM --TOP 出来的虚拟内存盘上设置747M的pagefile.sys系统它不蓝屏,其它的都蓝。我是用Ramdisk中的一个命令行工具设置的名字是addswap.exe。下面是这个程序的介绍:
1. 驱动程序的配置信息存放在下面注册表中:
   HKLM\System\CurrentControlSet\Services\RRamdisk\Parameters\
   为什么要用RRamdisk这个名字,因为XP SP1开始内置了一个ramdisk程序,
   主要用于XP Embed内存运行的。

2. 参数: DiskSizeM, DiskSizeK
   以M和K为单位的虚拟盘大小,K单位优先。

3. 参数: MediaType
    虚拟盘模拟的磁盘类型:
       1 -- 内存盘
       2 -- 固定介质 (缺省)
       3 -- 移动介质
       4 -- 软驱,和移动盘区别不大

4. 参数: DriveLetter
   所用盘符,缺省为 R:

5. 参数: SectorsPerCluster
   希望的簇大小, 零由驱动程序决定:
       <= 2M                FAT12, 簇=512
       <= 32M                FAT16, 簇=512
       <= 64M                FAT16, 簇=1k
       <= 128M                FAT16, 簇=2k
       <= 256M                FAT16, 簇=4k
       <= 512M                FAT32, 簇=2k
       <= 16G                FAT32, 簇=4k
       ......
   如果你选择的簇大小比缺省的小,分区会被格式化成FAT32格式。

6. 参数: Image
   由rdutil程序管理,主要用以自动加载NTFS映像. 例如:
   1) 加载虚拟盘,不要做任何操作
   2) 格式化为NTFS
         FORMAT /FS:NTFS /Q /V:RamDisk /A:512 R:
   3) 把NTFS的日志大小设到最小(2M)
         CHKDSK /L:2048 R:
   4) 预设访问权限(例子是只允许管理员们使用虚拟盘)
         CACLS R:\ /G: BUILTIN\Adminstrators:F
   5) 创建一些目录结构,如临时目录
         MKDIR R:\TEMP
   6) 压缩虚拟盘,并存到这个注册表中
         rdutil R: registry

   注释:
   1) 你应该尽量不要往虚拟盘上放太多东西,压缩后的映像文件不能超过64K
   2) 当你改变虚拟盘大小时必须重新创建映像文件
   3) 当映像文件大小和虚拟盘大小不符时,虚拟盘将不再自动格式化。
      如果要驱动自动格式化,必须删除这个注册表项。

   rdutil 程序使用示例:
   1) 备份注册表里的映像文件
         rdutil save filename
   2) 恢复注册表里的映像文件
         rdutil load filename
   3) 测试压缩映像文件大小
         rdutil R:
         rdutil registry
         rdutil unpacked_file
      第二条命令压缩注册表里设置的缺省盘符
      第三条命令压缩被解开的映像文件
   4) 压缩盘符并存入注册表
         rdutil R: registry
   5) 压缩盘符但保存到文件
         rdutil R: packed_file
   6) 把映像文件解开
         rdutil unpack packed_file unpacked_file
   7) 创建一个NTFS符号连接直接指向虚拟盘
         rdutil link temp \

7. 重新格式化虚拟盘
   除了内存介质类型外,其它的盘符都可以重新格式化。如:
   固定介质
       FORMAT /FS:NTFS /FORCE /Q /V:RamDisk /A:512 R:
   移动介质
       ECHO Y | FORMAT /FS:NTFS /FORCE /Q /V:RamDisk /A:512 R:
   你可以在开机脚本里对虚拟盘重新格式化。但不推荐再次格式化为FAT分区,
   因为驱动程序格式化的分区比通用格式化程序效率更高。如果要把虚拟盘做
   成映像文件作它用(特别是软驱),推荐重新格书化为标准格式。

8. 页面交换文件支持
   如果你使用固定介质类型,并且不重新格式化,你可以用系统管理直接把
   页面文件加到虚拟盘上。 如果你使用其它介质类型,或者需要重新格式化,
   请使用addswap程序创建页面文件。 如:
       addswap r:\pagefile.sys 16 32
   创建一个页面文件,最小16M,最大32M

9. TEMP 临时目录
   驱动程序格式化时已经创建好了TEMP目录。需要的话要把TEMP和TMP环境变量
   设到子目录下,不能设置到根目录。

10. NTFS 符号连接到虚拟盘
    当使用内存盘介质类型时,不能从其它NTFS分区创建符号连接到虚拟盘。
    固定和移动介质都没有问题。

11. Connectix VirtualPC 兼容性
    如果VPC无法使用物理RAW磁盘时,不要使用固定介质类型。

12. 无盘符工作方式
    把DriveLetter注册表值设为空,驱动将不创建任何盘符。注意不是删除
    DriveLetter,否则缺省创建R:
    无盘符方式下,用rdutil创建ram目录指向虚拟盘(只能在NTFS分区里):
           rdutil link C:\ramdisk
                   连接 C:\ramdisk 到虚拟盘根目录
           rdutil link C:\TEMP TEMP
                   连接 C:\TEMP 到虚拟盘的 \TEMP 下
           rmdir C:\ramdisk
                   rmdir 可以直接删除连接点,不会影响连接目标
    不推荐使用无盘符模式,因为大多是防毒程序无法实时监控无盘符的分区

ChangeLog:
12.09.2003 fix SMP/HT compatibility
11.26.2003 fix re-format problem & some typo
11.25.2003 merge rdpack and rdj to rdutil
11.24.2003 add DiskSizeK registry, more compatible w/ antivirus software
如果只是在MAP --MEM --TOP 出来的虚拟内存盘上设置747Mpagefile.sys系统不会蓝屏。我测试了大概有几天时间。不知这是怎么回事。有谁研究过这个啊。
谢谢。
作者: 不点    时间: 2016-4-13 21:38
ysj-1 发表于 2016-4-13 20:41
致不点大师:
感谢您的回贴和指点,我用displaymem显示信息,看不懂啊。只看懂了这个:MEM:639K/3061M/10 ...

哈哈,你的电脑跟我的一样:只有 3G 的用户空间在低端,另有 1G 在高于 4G 的空间上,也就是在大约 4G ~ 5G 之间。显示的 1024M 就是 4G 以上的用户可用的内存空间。从 3G 到 4G 的空间(共 1G)是主板占用,不允许用户使用。
作者: 不点    时间: 2016-4-13 21:44
很抱歉,我看不完你写的内容。有很多软件我都不熟悉,无法给出意见。

我觉得,你可以先在 xp 下搞,这个容易成功(最起码我都成功了,可以给你提供经验)。

至于说 pe,我怀疑你的 pe 是有问题的,它可能精简得太厉害了,把必要的系统文件都精简掉了,所以出问题。

它也可能引入了不该引入的工具或驱动,导致问题的发生。


作者: ysj-1    时间: 2016-4-13 22:21
致不点大师:
Ramdisk中的一个命令行工具addswap.exe可以给虚拟内存盘设置页面文件,包括GRLDR MAP --MEM --TOP出来的虚拟内存盘。而且设置的页面文件不会让系统蓝屏。目前GRLDR MAP --MEM --TOP出来的虚拟内存盘我只是在上面放页面文件,可以用而且不会蓝屏。只是不知道页面文件和普通文件有什么差别;放页面文件不蓝放普通文件蓝定了。也就是页面文件不会让虚拟内存盘崩溃而普通文件则会致虚拟内存盘崩溃。看来应该是OS对页面文件的管理和对硬盘文件管理的方式不一样。(猜测的)如果是这样的话,GRLDR MAP --MEM --TOP出来的虚拟内存盘至少可以用于页面文件。如果是这样还是有应用到PE上的价值的。谢谢您的回贴。
作者: ysj-1    时间: 2016-4-14 02:46
致不点大师:
最新测试结果,现在彻底没希望了。页面文件在调用时同样蓝屏,我的机子在32位环境上失去的1G内存真是浪费了啊。幸好我的机子CPU还支持X64位指令,看来32位环境只能是打补丁,或开PAE了,或等待64位的到来了啊。最后谢谢您的指点和帮助。
作者: ysj-1    时间: 2016-4-15 14:37
致不点大师:
咨询一个比较白痴的问题,你说过GRUB4DOS是运行在BIOS环境,而现在的OS系统都是运行在保护模式下,不知能否开发出保护模式下运行的GRUB4DOS呢?现在只知道可以运行DOS环境,所以GRLDR MAP --MEM --TOP出来的虚拟内存盘在DOS环境应该有用途。(即使DOS不能访问GRLDR MAP --MEM --TOP出来的虚拟内存盘,也可用GRLDR MAP --MEM 到低位内存盘上使用,对吗?)望指点。
作者: 不点    时间: 2016-4-15 15:10
ysj-1 发表于 2016-4-15 14:37
致不点大师:
咨询一个比较白痴的问题,你说过GRUB4DOS是运行在BIOS环境,而现在的OS系统都是运行在保护模 ...

你所说的 DOS 环境,其实是指 Windows 32 位保护模式下的一个模拟的 DOS 环境。本质上是保护模式的。

如果 Windows 不能识别 grub4dos 的仿真盘,那么 Windows 里面的 DOS 也不能识别。

是你没把 Windows 系统设置弄好,所以你到处碰壁。

建议你先从本地(非内存盘上的) XP 入手,把系统搞好,让 firadisk 能够正常运作,然后再进阶搞 PE 或内存盘版的 XP。一步一步来,不要跳跃太大。先学一年级的课程,接着学二年级,不要直接跳到三年级。


作者: ysj-1    时间: 2016-4-15 23:04
致不点大师:
我所说的是纯16位DOS不是在OS系统下模拟的那个玩意儿,GRUB.EXE应该可以运行在纯DOS下吧。现阶段的GRLDR MAP --MEM --TOP出来的虚拟内存盘在纯DOS环境应该有用途。32位进入保护模式,如果不用PAE、打补丁(其实还是这个PAE)是不可能访问到高端内存的。(据网上资料说:那个PAE之所以超出32位寻址范围是因为CPU层面另外预留了4条地址线搞的。)看来我确实问了一个比较白痴的问题。谢谢不点大师的回复。
作者: 不点    时间: 2016-4-16 08:38
对纯 dos 有用,也没有多大价值。dos 只需要很少的内存以及硬盘空间。你给多了,dos 用不上,也是浪费。

dos 已经退化为一个 boot loader 的作用了,与 grub4dos 的作用是一样的。这年月,用 dos 干活的人不多了。随着微软对于 bios 的封杀,这些都将成为过去。
作者: ysj-1    时间: 2016-4-16 14:02
致不点大师:
我不太同意您的看法,DOS倒下了却永远不死;同理32位的保护模式4G寻址虽有缺陷(不能识别更大内存——指不用PAE)但32位应用程序却会让我们使用很长时间的即使64位开始盛行。另微软对于 bios 的封杀我在前面的贴子中说过,可能也只是一时;原因在于标准问题,EFI或以后可能还有其它的对硬件的管理平台但如何能解决标准问题呢?也许BIOS可能有一天会变,但可能也只会是改个名,再增加点功能罢了;另您说对纯 dos 有用,那么WIN98下的DOS也应该有用;本论坛上天风搞了一个光盘上运行的MINI98,它可以在DOS和32位环境运行;据测试,它可先运行DOS再进32位环境,之后还可再退出32位环境;只是再次想进32位环境没门了。所以是否可以这样说;GRLDR 的 map --mem --top出来的虚拟内存盘可以用于非保护模式的32位环境呢?最后,谢谢您的回贴和指点。谢谢。
作者: 不点    时间: 2016-4-18 10:41
ysj-1 发表于 2016-4-16 14:02
致不点大师:
我不太同意您的看法,DOS倒下了却永远不死;同理32位的保护模式4G寻址虽有缺陷(不能识别更 ...

看不太明白你这帖的后半部分说的是啥意思。貌似 32 位环境都是保护模式的,虽然 CPU 确实存在实模式 32 位环境,但那个模式没有兼容性,没法使用。所以通常认为 32 位都是保护模式。因此不明白你想要达到什么效果。我猜你只是出于理论探讨的目的,并未有什么实际的应用场景(或应用目标)。

Win98 也曾经是我的 “最爱”,当后来推出 XP 时,我抵制了好长时间。但最终还是顶不住微软对于 Win98 的封杀。驱动程序不生产 Win98 版,那么 98 肯定要完蛋了。后来的实践也证明了这一点。没想到,车轮滚滚,XP 也有这一天,也是遭到了同样的黑手。

恕我直言,你是在空想着 “复古” 的一天。我不敢肯定永远不能 “复古”,但就目前的形势来看,那也是相当 “渺茫” 的事情。另外,grub4dos 是旧的 BIOS 框架下的软件,对旧软件的支持是最好的。你不去试验,光是空想,我觉得是没有意义的。目前大量使用的是 XP,它可以支持 grub4dos 的虚拟盘。很遗憾,你不去试验。而更早一点的 Win98,已经没有什么用户了,通常也不能在新的硬件环境下运作了,你却想用它。而且 firadisk/winvblock 并不支持 Win98。感觉你的想法不贴近实际。也可以考虑使用 Win7、8、10 之类的,如果实在不想跟着微软跑,那就可以考虑转向 Linux、Android 之类的系统。停留在 Win98,实在没有什么踢腾的空间。新硬件不支持旧软件,就这一条,就把 Win98 的路堵死了。XP 也一样,将来也会像 98 一样消失掉。

作者: ysj-1    时间: 2016-4-18 13:06
致不点大师:
感谢您的回贴,也谢谢您的指点和说明;这儿我要说明的是尽管WINDOWS 后面出现了很多的版本,其实并没有走远,依然在X86的16位、32位和X64位上徘徊。尤其是32位环境,炒了很多剩饭;如果真的要用X86指令下标准化的32位环境,可能只能用XP了;2003由于使用了PAE技术,所以并不能完全兼容X86指令下标准化的32位环境。这也是为什么2003没有XP兼容性强的原因,同时XP为了确保完全兼容X86指令下标准化的32位环境,是限制开启PAE的,当然现在网上有大内存补丁去除了这个限制,但兼容性问题也就来了。所以如果X64位盛行不起来的话,XP可能长时间是死不了的;经管后面也有一些32位的其它系统,这些新系统在一些功能和API上也有一些拓展,但这些系统无能是在执行效率上还是在应用程序、驱动的使用上都不及XP哟。现在后面的这些系统容量大,内存占用高;执行效率低,应用软件和驱动支持少;在我看来都是一些配角儿哟。另您说firadisk/winvblock 驱动要用在XP上的话,我考虑这个驱动可能需要针对PAE重写,才能用于大内存(4G以上)的虚拟内存盘,但这样又失去了意义啊。我看那两个驱动都有X64位的版本,看来开发人员并不想用非标准化的32位(PAE)来实现大内存上的虚拟内存盘功能。最后谢谢您的回贴。谢谢。
作者: 不点    时间: 2016-4-18 18:25
微软不想支持 Win98、XP 这些旧系统了。普通人可能想不通,为何微软要封杀自己的产品。其实很简单,微软是一个开放型的公司(比起苹果来说),它的系统比较便宜,所以才能统治全球。然而,这个便宜的系统,却让微软之外的第三方厂商获利,这一点,微软感到吃亏了。所以,微软要不断制造不兼容性,让人们无法拥有一个稳定的平台,让第三方的厂商不那么容易借助微软的平台获利。然而,对第三方厂商的打压,也让微软受伤,正所谓,杀敌一万自损三千。

微软知道它的这种做法不得人心。但它必须这么做。从最新的进展来看,微软宁可使用 Linux,也决计不再支持自家的旧系统。微软使用 Linux 并非支持 Linux,而是希望能够借助 Linux 实现 “牵着大众鼻子走” 的目标。只要它能牵着大众鼻子走,那么它就拥有话语权,别人都得称他为 “爷”。然后它再设法制造不兼容性,如此循环往复。一个系统一旦对第三方厂商有利,那么微软就要动脑筋制造麻烦了。像 XP 这样的系统,确实对第三方厂商有利。那么微软也就下定决心要把 XP 干掉。PC 硬件生产商是被微软控制的,因此,微软有底牌,不怕别人釜底抽薪。
作者: ysj-1    时间: 2016-4-18 20:41
致不点大师:
微软的家事我们是管不了也影响不了的,不过科技发展的事情也不是微软一家所能决定的;就如您现在所说微软也开始使用 Linux了。想当初微软把什么看在眼中了,我看也只有他自家的WINDOWS吧;现在不是一样也要对Linux
另眼相看么,所以科技的发展是一个时代所以人推动的结果,只不过在这个过程中谁显得比较注目罢了;所以有些事情也不是微软所能决定的。顺应规律自然会发展得很好,违背规律迟早走向没落。至于经济问题作为一个商业公司肯定要考虑经济利益,但他考虑,其他人未必会买帐;现在的微软不是已经不太行了么。所以有些事情是费尽心机也枉然哪。不过微软真的不行了的话,也确实可惜;一个时代的标志结束了。另Linux开源,这也是它能长期生存的重要原因,当然某些方面Linux可能做得比WINDOWS还要好,尤其是在高端服务器领域。如果真的微软放弃XP,而又没有更好的系统能够取代的话;可能真的迎来了Linux时代。现在短时间看,还看不出Linux的强劲势头;本论坛上也出现不少Linux的LIVECD,但功能都一般,比起WINPE还没能出其右,整个网络世界更不必说了。Linux要超越WINDOWS还需努力哟。最后谢谢您的回贴。
作者: 不点    时间: 2016-4-20 11:34
是的,微软的事是微软自己的,微软能做主,别人管不了。但每个人也都能管住自己的事。比如说我,我看到微软抛弃了 DOS、Win98、XP、7、8..... 这一连串的抛弃动作,让我知道,微软是不稳定的,没有个 “定数”;换句话说,微软是不可靠的。那么我会选择有利于我的行为方式。我会尽我所能,躲避可能的伤害。实在躲不开的话,我会尽量躲避最大的伤害,而只让自己遭受较小的伤害。反正现在还能用 XP,那我就继续用。想让我买新机器?那不行!新机器封杀了 XP,都是 Win7、8、10 之类的,没兴趣。XP 机器坏了、退役了咋办?我的回答是:不办!不买了!要买就买 Android ARM 平板电脑,这是早准备好的后路。既然微软是靠不住的,那就不靠了呗,没啥犹豫的。人不可以没后路。一个人要是没后路,那就完蛋了,始终被牵着鼻子,只能吊死在一棵树上。我的电脑基本都是 2G 内存的,也用不上虚拟内存盘。办公室的电脑有 4G、8G、16G 内存的,或许还用得上 firadisk 虚拟盘。公家离不开微软,那是公家的事,不是我的事。我管不住。公家想买新机器,那就买。那不是我花钱,我也管不着。公家买了给我用?我可以不用它;实在不行了,我可以考虑安装虚拟机,在虚拟机里面安装 XP。
作者: ysj-1    时间: 2016-4-20 13:43
致不点大师:
虚拟机确实是个好动西,我的03PE也可以通过虚拟机来用上4G以上的大内存且没有任何副作用,当然运行虚拟机的平台要用WINXP(开PAE)、2003(开PAE)或64位系统;看来微软的封杀真的只能是自家的想法哟。要是有一个64位的虚拟软件平台就好了,这样就不需安装WINXP、2003(开PAE)或64位系统再安装虚拟机了,只需直接在虚拟软件平台上运行任何的系统就行了。现在网上好象只有32位的没有64位的,不知有谁能开发一个64位的就好了。该虚拟软件平台好象是一家外国公司开发的,与虚拟机有异曲同工之妙;最大的好处是没进系统直接在硬件层面虚拟不知怎么实现的。最后谢谢不点大师您的回贴。谢谢。
作者: ysj-1    时间: 2016-4-20 14:05
致不点大师:
忘了说了,我的03PE通过虚拟机来用上4G以上的大内存且没有任何副作用,是先在装虚拟机的系统上设虚拟内存盘,之后共享给我的03PE的;这个方法没有用上 firadisk 虚拟盘很遗憾。最后谢谢不点大师的回贴。
作者: fofos888    时间: 2016-5-16 08:46
不点 发表于 2016-4-8 20:34
我只知道有 firadisk 和 winvblock 驱动可以让 windows 能够识别出 grub4dos 的虚拟盘,我不知道你不用这两 ...

不点大师,请问下 ,我是firadisk 0.0.1.30版本,系统是win7 x64,vhd大小固定10G,用grub4dos,mem到内存,无论用不用 --top参数,都只能加载到3000M,请问,您说的 “grub4dos 支持的最大内存盘大小为 500G。“需要怎么处理,才可以做到?谢谢!
作者: 不点    时间: 2016-5-16 09:33
fofos888 发表于 2016-5-16 08:46
不点大师,请问下 ,我是firadisk 0.0.1.30版本,系统是win7 x64,vhd大小固定10G,用grub4dos,mem到内 ...

无图无真相,也没有相关菜单、配置、参数的说明,没法揣测。答复不了。以下是胡乱答复,错了勿怪。

10G 的 img 要加载在内存,你大约得有 16G 的内存才行。有吗?

10G 被加载在 3G 处,是不可能的(3G 到 4G 之间不能容纳 10G 的 img)。只能加载在 4G 处。

如果说的是 10G img 只有 3G 加载了,那要么是 grub4dos 的 bug,要么是你搞错了。有证据吗?怎么确定只有 3G 被加载了?

最后,你真的关心 500G 的问题吗?(我是说你的机器真的有 500G 内存吗?)你最好先只关心 30G 的问题,够用就行了。如果 30G 的机器,经过试验没问题,再去试验 500G 的机器。试验的顺序不要搞错。


作者: fofos888    时间: 2016-5-16 10:07
不点 发表于 2016-5-16 09:33
无图无真相,也没有相关菜单、配置、参数的说明,没法揣测。答复不了。以下是胡乱答复,错了勿怪。

10 ...

1、我是直接加载VHD;menu.lst如下:
color black/cyan yellow/cyan
timeout=0
default 0
title vhd win7 hd0,0 in top ram
find --set-root VHD-WIN7.vhd
map --mem --top (hd0,0)VHD-WIN7.vhd (hd0)
map --hook
root (hd0,0)
chainloader /BOOTMGR
我机器的内存16G,(8GX2)内存便宜了,在解决高位加载问题后打算再加到32G。
2、我确实是显示到3000M的时候停止的,晚上回家截图后再上传,无论我是否用--top都是这个状态,所以很奇怪。
3、单条内存越来越大,16G单根DDR4都有了,所以如果真的可以加载到500G,我想我就不用担心容量的问题,o(∩_∩)o 哈哈
4、另外咨询个问题,在您别的帖子里看到您提到用 displaymem 信息排查问题,请问这个命令怎么使用,还请告之,谢谢。
作者: fofos888    时间: 2016-5-16 10:24
本帖最后由 fofos888 于 2016-5-16 10:26 编辑
fofos888 发表于 2016-5-16 10:07
1、我是直接加载VHD;menu.lst如下:
color black/cyan yellow/cyan
timeout=0


找到一张图,还请不点大师看下

QQ图片20160516101926.jpg (254.45 KB, 下载次数: 119)

QQ图片20160516101926.jpg

作者: 不点    时间: 2016-5-16 17:35
map --mem --top (hd0,0)VHD-WIN7.vhd (hd0) 这一行是有错误的,少了路径分隔符“/”,应该为
map --mem --top (hd0,0)/VHD-WIN7.vhd (hd0)

另外你使用的版本也可能有 bug。新版本往往解决了 bug。你如果一直坚持使用旧版本,那可能永远不会有结果的,问题永远就得不到解决。
作者: fofos888    时间: 2016-5-17 08:01
不点 发表于 2016-5-16 17:35
map --mem --top (hd0,0)VHD-WIN7.vhd (hd0) 这一行是有错误的,少了路径分隔符“/”,应该为
map --mem - ...

谢谢不点大师,晚上回家我再试一下;版本是这样的,4.6a 4.5c 我都试过了,只是当时我只拍了这张图而已:

作者: 不点    时间: 2016-5-17 09:07
你在提供的信息中有错(我前一帖提到的),因此,这影响到了,你提供的整体信息,缺乏可靠性、可信性。

你提供的图片,显示你所用的软件版本距今已有一年。证明不是最新版。如果要把你所提供的信息看作 bug 报告的话,那么这个 bug 报告是不完整的(缺乏最新版的试验报告),没法让开发者受理。而如果不看成 bug 报告,则开发者可能根本无暇顾及,或者根本不予处理。
作者: fofos888    时间: 2016-5-17 17:15
不点 发表于 2016-5-17 09:07
你在提供的信息中有错(我前一帖提到的),因此,这影响到了,你提供的整体信息,缺乏可靠性、可信性。

...

多谢不点大师提醒,之前也没太在意版本,为此特意更新了firadisk版本,用本帖您提供的firadisk 0.0.1.30版本,grub4dos 为今天 5月17日的版本。
说一下这次机器的情况:APU,设置了 512M为显存,内存为8G*2
menu.lst为:
color black/cyan yellow/cyan
timeout=10
default 0
title vhd win7 hd0,0 in top ram
find --set-root VHD-WIN7.vhd
map --mem --top (hd0,0)/VHD-WIN7.vhd (hd0)
map --hook
root (hd0,0)
chainloader /BOOTMGR

加不加--top 还是没法加载完 在2488M时不再动。
图见下一楼
作者: fofos888    时间: 2016-5-17 17:20




作者: 不点    时间: 2016-5-17 18:16
从你这个报告中,我觉得可能是 0.4.6a 版本的 bug。比如说,有可能是读取 NTFS 分区文件时发生死机,那么这就属于 grub4dos 的 ntfs 文件系统驱动程序的 bug。

建议你做如下测试,目的是确定问题的根源:

1、你可以试试 0.4.5c 的最新版,看看是否也有同样问题。
2、你可以换用一个小的 VHD 文件试验,看看可否正常启动。
3、你可以设法把你的 10G 文件放在一个 Linux 分区或者一个 exFAT 分区,目的是躲过 ntfs 分区(即,不让 grub4dos 去读取 ntfs 分区上的大文件),看看能否成功启动。






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