无忧启动论坛

标题: grub4dos不支持固态硬盘吗,还是我的操作有误,机械硬盘也是只识别一个分区 [打印本页]

作者: chenandjun    时间: 2020-8-24 23:01
标题: grub4dos不支持固态硬盘吗,还是我的操作有误,机械硬盘也是只识别一个分区
本帖最后由 chenandjun 于 2020-9-7 01:57 编辑

我的系统

磁盘和分区

grldr文件位置

用的这个安装的,grub4dos用的是0.4.6a

标识文件和grldr内置菜单



http://bbs.wuyou.net/forum.php?mod=viewthread&tid=410145
是按这个贴子做的xp vhd文件启动后是这样子的.



一直说文件未找到,我是一个固态硬盘加上一个机械硬盘,就是机械硬盘(hd1,0)也只认到一个盘,打ls查看一直提示文件系统不一致。


这是什么问题,是不认固态硬盘吗,还是我的操作上面有问题.


作者: artour    时间: 2020-8-24 23:24
早该换Grub2了,非常的强大
作者: newswan    时间: 2020-8-25 00:57
换新版的试试,你的版本太旧了
作者: 不点    时间: 2020-8-25 08:31
你有两个问题:

1、你自己的问题:你在使用 7 年前老掉牙的 grub4dos。
2、你的主板 BIOS 有缺陷,不支持访问大的扇区号,说得通俗一点,你的主板 BIOS 不支持访问盘的靠后部分,只能访问开头的一小部分。甚至你的主板 BIOS 完全不支持访问某个盘(比如固态硬盘)。在目前 grub4dos 的框架下,不可能解决此问题,因为 grub4dos 完全依赖主板 BIOS。

建议 1:修改你的菜单,不让它访问靠后的分区,这样还可以凑合着继续使用 grub4dos。
建议 2:也可考虑改用 UEFI 的启动方案(grub2),放弃 grub4dos。

作者: chenandjun    时间: 2020-8-26 00:06
本帖最后由 chenandjun 于 2020-8-26 00:09 编辑

我把grub4dos换成了新版本,还是一样.

我发现我这个问题去年一月份就提问过一次,有人回复说用grub2,我搜了百度一下,感觉太复杂了,不是拷一个文件放根目录下加个引导就完事的事情,对于我这种小白来说,太难了。
刚刚把固态硬盘装到原机械硬盘的位置,把机械硬盘放在光驱硬盘架上插在光驱位,命令可以用了.去年没放主硬盘位置是有两个卡子顶住了,装不上去,刚才狠心把它敲掉了。








现在命令可以用了,但是map vxd时又说什么块多,我用WinContig64整理说没有碎片啊

现在怎么弄

作者: liuzhaoyzz    时间: 2020-8-26 10:28
chenandjun 发表于 2020-8-26 00:06
我把grub4dos换成了新版本,还是一样.

我发现我这个问题去年一月份就提问过一次,有人回复说用grub2,我 ...

       ssd上面,用碎片整理软件是没有什么用处的,比如你用的wincontig,一般地来说碎片整理只对机械硬盘有效,ssd因为存在逻辑转换电路,中间隔了一层,不一定有效的。

你把ssd那个分区格式化或者全盘格式化一次,应该就可以了。

作者: 不点    时间: 2020-8-26 18:26
本帖最后由 不点 于 2020-8-26 18:31 编辑

报错:太多的碎片

注意,如果 VHD 是压缩文件格式,则可能会出现这个问题。

你的 map 是不带 --mem 的,就是说,你是“直接”映射为虚拟盘。在这种情况下,vhd 文件不可以是压缩格式,也就是说,不可以是 gz 、zip、lzma 之类的格式,而只能是整个磁盘(按照扇区顺序)的精确拷贝(或者叫做克隆),不可以在克隆以后,又对 vhd 文件实施任何种类的压缩操作(务必注意!)。


另外,你可以用


blocklist   /vhdxp/winxp.vhd


来列出这个文件的碎片。如果这条命令无法成功执行,那很可能就表明,你这个文件不是“平坦的、普通的”,而是“压缩的”。如果能够成功执行,它会列出碎片的详情。





作者: 717758565    时间: 2020-8-27 01:09
我的电脑cpu t3400内存2g笔记本的,奇怪的是usb启动只支持usb-hdd和微软自带,其他一概启动不了
作者: derry    时间: 2020-8-27 02:16
本帖最后由 derry 于 2020-8-27 02:33 编辑
chenandjun 发表于 2020-8-26 00:06
我把grub4dos换成了新版本,还是一样.

我发现我这个问题去年一月份就提问过一次,有人回复说用grub2,我 ...

我也是一直用grub4dos,grub2没精力研究,不过我win7一直是用boot.ini启动grub4dos,没把C盘引导区改grldr

1.对于你把固态和机械物理换位置,应该可以不用这样做,在BIOS里就可以设置硬盘顺序呀,或者在menu.lst里用
map (hd1) (hd0)
map (hd0) (hd1)
map --hook
来对换硬盘

2.对于加载vhd块的问题,map加个--top参数会不会有用?
另外教程提到过,map不加--mem参数进行仿真,要求对应的映像文件在硬盘上一定要连续存放,用map --mem应该总是能够成功的,但要求你的内存足够大,但你16G内存应该够
map --mem --top winxp.vhd (hd0)



作者: 2013黄尚    时间: 2020-8-27 07:41
俺滴可以滴

作者: chenandjun    时间: 2020-8-30 23:01
derry 发表于 2020-8-27 02:16
我也是一直用grub4dos,grub2没精力研究,不过我win7一直是用boot.ini启动grub4dos,没把C盘引导区改grld ...

我的5750G在bios中只能认到一个硬盘
作者: chenandjun    时间: 2020-9-7 01:58
谢谢大家的关心,我重做了xp.vhd,可以了,就是我的ram镜像不能超过2G超过直接7b蓝屏,win7也是一样的
作者: 不点    时间: 2020-9-8 16:21
楼主报告问题很详细,很有耐心。(如果是我,我可不会有这么详细。)

因此,我乐意帮忙。

你报告 RAM 镜像超过 2G 会有 7b 蓝屏。我大致能猜到原因了。

我猜,当镜像超过 2G 时,鉴于你把镜像加载在 4G 以下的内存空间,由于它超过了 2G,而在你特定的这个有毛病的主板之下,正好与你的某个 BIOS 内存发生了冲突,导致 07b 蓝屏。

解决方法是:把镜像加载在 4G 以上的高位内存,避免与 4G 以下的内存发生冲突。

在你的 map 命令中,添加 --top 参数,可以达到上述目的:

map   --mem   --top   /vhdxp/winxp.vhd   (hd0)

或者用下面这句(互换两个选项的位置)也是一样的效果:

map   --top   --mem   /vhdxp/winxp.vhd   (hd0)



作者: chenandjun    时间: 2020-9-8 23:56
不点老大亲自回复,我很感动,晚上刚才又做了,没有成功,下面向老大汇报一下.
我创建了一个3G的固定winxp.vhd,在磁盘管理里面做的.
然后把原来的1.9G的可以启动的vhd克隆到了这个3G的vhd盘上,用的是DiskGenius


两个盘数据一样

放在d盘vhd目录下

c盘结构和menu菜单内容

启动后



按b键启动,正在加载....




然后失败


换成top在前面

一样的失败

汇报结束.

作者: chenandjun    时间: 2020-9-9 00:18
本帖最后由 chenandjun 于 2020-9-9 00:21 编辑

看到老大说用blocklist列碎片,我刚才做了一下

不知道这两个数字是什么意思.
但是那个2G(属性看是1.9G)的是可以启动的.



就是显卡和蓝牙驱动装不上,我是双显卡的(intel+GT630)

作者: 不点    时间: 2020-9-9 08:05
本帖最后由 不点 于 2020-9-9 18:34 编辑

嘿!咱就不怕它失败!咱怕的是它不失败!它失败了,咱好折腾啊。

吹牛归吹牛,问题能否解决,咱还真没把握 :-(

就把这个论坛当成是聊天室吧。咱随便聊。

既然随便聊,咱就随便说,不要太认真。

2G 克隆到 3G,用 --top 不行。这似乎暗示,--top 本来就不行。

先验证这个结论是否成立,用 2G 的映像,带有 --top 加载在高位内存,试试是否成功。


按照刚才的猜想,它同样会失败。

执行完 map 命令之后,可以执行一下

map   --status

命令,这会显示出,映像究竟加载到哪个内存地址处了。

再说明一点,--top 和 --mem 的顺序无关紧要,只需试验一种情况(比如 --mem  --top)即可,没必要两种情况( “--mem  --top” 和 “--top  --mem”)都去试验。

关于 blocklist 的输出,显示的结果 x+y 表示映像起始于扇区 x,占用 y 个扇区。这说明只有一个碎块,也就是说,是连续的,没有碎块(只有一个碎块就等于说是没有碎块)。

如果有碎块的话,会显示成这样:

x1+y1,x2+y2,x3+y3

这表示有三个碎块。多个碎块,依此类推。


补充一点


既然初步确定这是个与内存冲突有关的问题,那就用

displaymem

命令显示一下 BIOS 的内存块分布情况,这很要紧。


这条命令可以在 map 之前执行,也可以在任何其他时候执行,显示结果都是一样的。

-----------------------------------------------

假如结果和我猜的一样,即 2G 用 --top 发生了失败,那么接下来试试


map   --mem=-6291456   --top   /vhdxp/winxp.vhd   (hd0)


注意“--mem=-6291456”是连成一串的,中间不含空格;而且等号后面是个负数。


如果仍然失败,再试试 “--mem=-8388608”,仍然是负数,不过绝对值增大了。


如果这样试验侥幸能成功的话,你可以针对你的 3G 映像来做同样的试验了(3G 映像只需测试“--mem=-8388608”这一种情况)。




作者: chenandjun    时间: 2020-9-9 11:08
晚上回去弄,到时再向老大汇报
作者: chenandjun    时间: 2020-9-9 19:59
本帖最后由 chenandjun 于 2020-9-9 20:22 编辑

老大刚才我又试了那个2G的能启动的,加--top,确实如你所说,失败了.


后又加--mem=-6291456  和--mem=-8388608还是一样蓝屏.



我的map --status数据




我的displaymem数据,老大帮看看.

汇报完毕.



作者: 不点    时间: 2020-9-10 08:14
本帖最后由 不点 于 2020-9-10 08:22 编辑

从 displaymem 的显示,看到 4G 以下有

Usable RAM:Base:100000,Length:96D3F000 ----- 这就是 2471164K,也就是 2.47G。

这说明,在 4G 以下的空间,你最大可以放置的 img 的大小就是 2.47G。

在 4G 以上的空间,是连成一片的:

Usable RAM:Base:100000000,Length:35FE00000 ----- 长度大约是 13G 多。

这个 BIOS 的内存块分布,很正常。

比如说,在 4G 以下,它的全部 Usable RAM 都集中在 2.47G 这一块上了,而不是像某些恶意 BIOS 制造商,把它破分成若干个 512M 的小块。而在 4G 以上,也全部都是 Usable RAM,没有 Reserved,这都没有表现出“作恶”的迹象。

当然了,作恶的地方,可以有很多;此处不作恶,而在别处作恶的可能性当然也是存在的。

为什么把 img 放在 4G 以上的那个巨大空间里面会失败?

有两种可能:

1、4G 以上的内存,在物理上不可靠(或者说,内存条有问题)。

2、软件问题,譬如说,进入 Windows 之后,某个 Windows 驱动程序有问题,毁掉了我们的 img 数据,导致该虚拟盘无法访问,从而出现 07B 蓝屏。这种可能性有无限多,很难猜测具体是哪个驱动程序导致的。甚至一个普通的流氓软件,也可能毁掉我们放置在高位内存上的 img 数据。所以,从软件的角度,没法猜测具体问题出在哪里。(特别提醒,有这样的可能性:你的固态硬盘驱动程序以某种方式破坏了 4G 以上的高端内存,使得我们的 img 虚拟盘数据损坏或不可用,从而出现 07b 蓝屏;如果是这种情况,那就无解了)。

最后,你再试试这两个:

map   --mem=-28307456   --top   /vhdxp/winxp.vhd   (hd0)

以及

map   --mem=-27258880   --top   /vhdxp/winxp.vhd   (hd0)

意思是,假定内存条的顶部损坏了,只使用低端部分,看看效果怎样。只需对 2G 的 img 进行测试即可。


作者: chenandjun    时间: 2020-9-10 09:58
老大,试了那两个参数,一样蓝屏.





作者: 不点    时间: 2020-9-10 10:53
那就基本能够说明,4G 以上的高位内存不可使用。

剩下的事,也就是如上所说,检查内存条硬件是否有问题;确定固态硬盘是否是问题的根源,等等。

内存条很容易检查,你可以更换内存条。

而软件冲突,不容易检查。

不过,如果你用本地硬盘(不使用固态硬盘)没问题的话,那就可以证明内存条硬件没问题,而是固态硬盘带来的不兼容问题。这些太复杂,需要你自己再探索一下,本人能力所限,也就帮不上忙了。


作者: 不点    时间: 2020-9-10 11:41
对不起,突然想到另一个问题。

winvblock 不支持 4G 以上高位内存。

你是不是在用 winvblock?

你应该用 firadisk 才行。




作者: chenandjun    时间: 2020-9-10 13:52
是winvblock,是看坛子上的贴子跟着弄的,winvblock不支持吗,那我晚上回去再弄,到时再汇报
作者: 不点    时间: 2020-9-10 15:39
本帖最后由 不点 于 2020-9-10 16:07 编辑
chenandjun 发表于 2020-9-10 13:52
是winvblock,是看坛子上的贴子跟着弄的,winvblock不支持吗,那我晚上回去再弄,到时再汇报

太好了,这就找到原因了。我们走了很多弯路,就是因为这个细节。细节决定成败,做事情必须认真。


firadisk 和 SVBus 都支持 4G 以上高位内存。


只有 WinVblock 不支持。我对这些驱动程序的原理不太了解。好像有人说过,它也并非完全不支持,而是依赖于操作系统是否支持 4G 以上高位内存。如果你的 Windows 操作系统是 64 位的,那 winvblock 也支持 64 位内存。如果操作系统是 32 位的,那么 winvblock 也只支持 32 位内存。


就是说,winvblock 不是“铁定”支持 64 位的内存。



而 firadisk 以及 SVBus 都是“内建”支持 64 位内存,与操作系统是否为 64 位是没关系的。换句话说,只要 CPU 支持  64 位内存即可。


firadisk 较旧,SVBus 较新。


我建议你先试试 SVBus,如果不能搞定,再试试 firadisk。






作者: chenandjun    时间: 2020-9-10 16:15
好,svbus也像winvblock一样,装个驱动就可以吗
作者: 不点    时间: 2020-9-10 19:06
chenandjun 发表于 2020-9-10 16:15
好,svbus也像winvblock一样,装个驱动就可以吗

实在抱歉,本人全都不曾用过。

firadisk、winvblock、svbus

三个软件,本人从未自己操练过。

没法提供经验。

你需要查找相应的资料。

svbus 出现较晚,据说是结合了 firadisk 与 winvblock 的优点,是集大成者。

但究竟怎么个使用方法,你得花时间搜索、学习、试验、研究了。


作者: chenandjun    时间: 2020-9-10 20:51
等10.30下班回去研究
作者: chenandjun    时间: 2020-9-11 02:13
svbus驱动好像不行.
我重新创建了一个2G的vhd,装了微软原版的winxpsp3.

svbus下载下来放在c盘,然后通过添加新硬件的方式添加驱动进去的.里面有三个文件精神夹bin installer svbus我装的是bin里面的驱动















我看它那个帮助说不支持休眠,我打powercfg -h off结果显示不支持,原来是我驱动都没装

然后进it天空的pe里面注入ahci驱动





然后看坛子里说boot.ini里面会多个参数/noexecute=alwaysoff,我看了下,我的没有

然后就是重启,用grub4dos来加载它,先直接
find --set-root /vhd/winxp.vhd
map /vhd/winxp.vhd (hd0)

然后屏幕就是黑的

过了一会儿,应该是蓝屏了,很快,手机没拍到,然后就重启了
后来加了map --top /vhd/winxp.vhd (hd0)和map --mem --top /vhd/winxp.vhd (hd0)
出现也是黑屏过了一会儿蓝屏了,但是蓝屏代码变了,变成ea



看样子这个svbus对我机子是不行,我换成firadisk看看


作者: derry    时间: 2020-9-11 02:41
chenandjun 发表于 2020-9-11 02:13
svbus驱动好像不行.
我重新创建了一个2G的vhd,装了微软原版的winxpsp3.

总感觉蓝屏原因跟内存条有关
试试2根内存条互换个插槽
作者: chenandjun    时间: 2020-9-11 02:42
我刚才在弄vhd时发现一个问题,我不知道这是我这个特定笔记本的问题还是别的什么问题,也不知道是不是问题,就是我进pe用pe里的磁盘管理加载vhd文件,然后再分离,不做其它任何操作,重启电脑时就一个光标在那闪,系统不能启动了,然后再进pe用BOOTICEx64看主引导一切正常,然后我就把主引导先换成winnt 5x /6x mbr 然后再换成grub4dos它就又好了.上图
用的it天空的pe



用BOOTICEx64看主引导没有任何问题

重启就一个光标在那闪,启动不了

然后重进pe,先改成winnt 5x/6x再换成grub4dos就好了,不知道什么问题













作者: chenandjun    时间: 2020-9-11 02:48
derry 发表于 2020-9-11 02:41
总感觉蓝屏原因跟内存条有关
试试2根内存条互换个插槽

好,我就来换
作者: chenandjun    时间: 2020-9-11 03:03
涛声依旧,内存换过位置了.




作者: chenandjun    时间: 2020-9-11 04:47
本帖最后由 chenandjun 于 2020-9-11 04:52 编辑

老大会,特大喜讯,我成功了,
刚才又在反复的弄,实在不甘心,后来想起来看到坛子里有个贴子说的要加防蓝屏代码--e820cycles=0的,我就试了一下,没想到竟然成功了,svbus确实快比winvblock快多了,winvblock内存盘进到桌面打开我的电脑都有个手电筒先转几圈才出来内容


然后又试内存方式--e820cycles=0 map --mem和map --mem --top均失败蓝屏,但是蓝屏代码会变,一会0a一会19,然后改成--e820cycles=1和2 3均成功





我看你有个贴子上面说用扇区加载,我弄了出错,不知道为什么




作者: chenandjun    时间: 2020-9-11 04:49
下面要把它扩大到3G再看看有没有用
作者: chenandjun    时间: 2020-9-11 05:25
刚刚试了创建一个3G的vhd,克隆过去,失败了,提示这个,是什么意思


作者: chenandjun    时间: 2020-9-11 06:37
我又重建了一个3G的空的vhd,然后用vmware虚拟机用iso新装原版的就可以了,为什么用diskgen克隆不行呢
作者: chenandjun    时间: 2020-9-11 11:25
谢谢,在无忧学到了不少东西
还有个问题请教,比如我这个菜单
title winxp vhd
find --set-root /vhd/winxp.vhd查找winxp.vhd把它作为根
map /vhd/winxp.vhd  (hd0)   把根目录下的winxp.vhd映射成虚拟磁盘(hd0)就是第一块硬盘的意思吗
我看有好多人这里会加上map (hd0) (hd1)    为什么要有这上步,map /vhd/winxp.vhd (hd0)不是已经把vhd映射成了hd0了
如果这里交换了,那虚拟磁盘不是(hd1)了吗,那后面chinaloader (hd0,0)/bootmgr这里启动不是还是从第一个硬盘启动吗
按照我想的这里会应该找不到文件才对因为前面以经交换了呀map (hd0) (hd1) 但是我昨天晚上加了这个也一样能启动,去掉也一样能启动
那这map (hd0) (hd1)究竟是什么意思呢
还有你那个我发了map --status图你就知道内存是不是连续的,你是怎么看的包括displaymem看那个低位内存多大,高位内存多大


作者: chenandjun    时间: 2020-9-11 11:28
chenandjun 发表于 2020-9-11 06:37
我又重建了一个3G的空的vhd,然后用vmware虚拟机用iso新装原版的就可以了,为什么用diskgen克隆不行呢

噢,昨天晚上克隆时好像提示说要新签名的,但我取消了,弄三次都是取消了的,原来是在这错了,后来没办法了,全新装原版的
作者: 不点    时间: 2020-9-11 11:58
map /vhd/winxp.vhd (hd0)  是把 vhd 映射为虚拟盘 hd0

map (hd0) (hd1) 是把真实盘 hd0 映射为虚拟盘 hd1,这是因为,前一句执行后,虚拟盘 hd0 还没开始起作用(要等到 map --hook 以后才会起作用),所以,此时,hd0 仍然是你内置的真实硬盘 hd0。

如果没有 map (hd0) (hd1) 这句,那么,当你执行 map --hook 之后,你在 grub4dos 环境下就无法访问你的真实硬盘 hd0 了,这是因为,每当你想访问 hd0 的时候,grub4dos 都会给你提供虚拟盘 hd0 的数据,也就是 vhd 的数据,因此,你的真实硬盘,就被隐藏了,无法访问了。

有了 map (hd0) (hd1) 这句,那么,当你执行 map --hook 之后,你就可以通过访问虚拟的 hd1 硬盘来访问原始的真实硬盘 hd0 了。


作者: 不点    时间: 2020-9-11 12:04
map --status 是希望看到 map --mem --top 加载的内存位置。

可是,你给的图,都不带 --top,所以,看不到想要的结果。

displaymem 里面,reserved 是 BIOS 系统保留内存,任何用户程序都不可以随便碰它。只有 usable RAM 才是可供各类应用软件随便使用的。

作者: chenandjun    时间: 2020-9-11 12:36
本帖最后由 chenandjun 于 2020-9-11 12:37 编辑

刚才又进grub4dos下看了下,大概知道map (hd0) (hd1)意思了,第一次列文件时有460文件夹的,map --hook后没有了.

map --status我有做mem --top的照片,也可以昨天晚上拍的照片太多了,还要转,手机图片都大,我刚才拍了一张.


作者: 不点    时间: 2020-9-11 17:52
嗯,理解了就好。如果你事先有 map  (hd0)  (hd1) 的话,在 map --hook 执行以后,你就可以用 “ ls  (hd1,0)/ ” 来列出 360SANDBOX 以及 Users 等目录了,它们是在你的真实盘上。你的虚拟盘上有 svbus 目录以及 ntldr,而真实盘上没有这些。稍稍留意,是可以看出差别的。

map --status 显示的 Start Sector (起始扇区号)为

0x1EFEFF8 (单位是 512 字节的扇区)= 0x1EFEFF8 × 0x200(单位是字节) = 0x3DFDFF000(字节)=16640897024(字节)

也就是说,它起始于大约 16G 处。

显示的 Sector Count (占用的扇区数)为

0x400008(单位是 512 字节的扇区)= 0x400008 × 0x200(单位是字节) = 0x80001000(字节)=2147487744(字节) 也就是说,长度大约 2G。

映像的尾部,位于

0x1EFEFF8 + 0x400008 = 0x22FF000(扇区)=0x22FF000 × 0x200 (字节)=0x45FE00000(字节)

这与你 displaymem 显示的最后一行的终止位置相同。

这跟预想中的一样,很正常。



作者: 不点    时间: 2020-9-11 18:06
你的报告,同时也证明了(至少在 WinXP 的情况下) winvblock 不支持 4G 以上内存,而 svbus 是支持的。这会给其他人提供有益的线索,让他们少走弯路。

如果你想让这个问题有个更加完整的答案,你也可以试试 Win7 (64 位),目的是验证 winvblock 是否在 64 位的操作系统之下能够支持 4G 以上的高位内存。无论支持还是不支持,结论都有用,都有价值。

作者: chenandjun    时间: 2020-9-11 19:41
本帖最后由 chenandjun 于 2020-9-11 20:02 编辑

能否推荐两个精减版,64位太大,镜像太大,我10.30下班回去弄了再汇扳我想起一个问题,我用winvblock好像没加防蓝屏参数--820cycles=1
晚上回去还要再试一下


作者: chenandjun    时间: 2020-9-12 00:05
晚上想起昨天的winvblock的盘没有加--e820cycles=1刚才又做了一次.
map /vhd/winxp.vhd正常进系统


map --mem /vhd/winxp.vhd也是正常的



map --mem --top /vhd/winxp.vhd蓝屏,意思就是winvblock驱动不能--top



作者: chenandjun    时间: 2020-9-12 00:45
老大,win764位winvblock驱动装不上啊,安装了然后说什么签名错误,再重启vhd系统就坏掉了.













作者: chenandjun    时间: 2020-9-12 02:16
查网上的禁用数字签名

然后用grub4dos启动它





禁用数字签名

然后就蓝屏了




作者: chenandjun    时间: 2020-9-12 03:27
刚刚把驱动换成svbus64驱动,启动还是蓝屏,后来发现不加--e820cycles=1就不蓝了,win764位不能加这个






作者: chenandjun    时间: 2020-9-12 10:46
本帖最后由 chenandjun 于 2020-9-12 10:47 编辑

不加e820参数一样的蓝屏


我来找个小点的64位来装下,这个win7太大了,11G多,加载到内存都要等好几分钟
作者: chenandjun    时间: 2020-9-12 12:20
map --status 显示的 Start Sector (起始扇区号)为

0x1EFEFF8 (单位是 512 字节的扇区)= 0x1EFEFF8 × 0x200(单位是字节) = 0x3DFDFF000(字节)=16640897024(字节)
我是这样算的:1EFEFF8是16进制,用windows计算器换成10进制是32501752(这个是这么多扇区变成字节*512,因一个扇区有512字节)*512=16640897024字节,变成千(kb)字节/1024变成兆(mb)字节/1024变成吉(Gb)字节=16Gb
显示的 Sector Count (占用的扇区数)为

0x400008(单位是 512 字节的扇区)= 0x400008 × 0x200(单位是字节) = 0x80001000(字节)=2147487744(字节)
400008化十进制4194312扇区*512=2147487744/1024/1024/1024=2G
映像的尾部,位于

0x1EFEFF8 + 0x400008 = 0x22FF000(扇区)=0x22FF000 × 0x200 (字节)=0x45FE00000(字节)
22FF000化十进制36696064扇区*512=18788384768/1024/1024/1024=18G,可我只有16个G 的内存啊

还有那个displaymem显示的是不是也可以这么算
usableram     base:0x100000000(这是起始扇区,是吗)     lenght:0x35fe00000(这是占用的长度,对吗)    end:0x45fe00000(这是结束扇区号吗 )
那我能不能map (hd0)100000000+45fe00000这样创一个虚拟盘出来


作者: chenandjun    时间: 2020-9-12 12:21
chenandjun 发表于 2020-9-12 10:46
不加e820参数一样的蓝屏

我在下精减的64位系统,下在内存盘里,不好关机,等晚上回来再试123456这几个参数
作者: chenandjun    时间: 2020-9-12 14:37

作者: chenandjun    时间: 2020-9-13 04:47
下了两个精减的win64,装上去再装winvblock驱动重启就进不去而且没有f8选,没办法禁用数字签名,我已打开测试模式了,还是不行,刚刚装的系统又坏了.
作者: chenandjun    时间: 2020-9-13 12:25
一直弄到刚刚,还没有弄起来,要不然就停在微标那个界面,要不然就是滚动条一直滚,或者winload出错,f8也调不出来.




好像应该是winvblokc没有签名,但是我已经打开测试模式了.


作者: chenandjun    时间: 2020-9-14 21:15
终于下到一个可以用的win764位的精减版(f8功能可以用,可以禁用数字签名)下面开始汇报
这个贴子的http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1   文件名称: SXWIN7X64_20180417_noNET.esd 文件大小: 387.19 MB (405,993,262 字节)
是企业版的


1.81个G正好做试验,装好winvblock,并且打开了测试模式.


上面的是用BOOTICEx64新建的vhd启动的,启动正常,下面开始map,先置--e820cycles=-1,当没有直接map /s71.vhd和map --top /s71.vhd均失败,画面停在那个微标那,一直这样,等几分钟还是这样






然后map --mem /s71成功进入桌面,但是,测试模式没有了.



然后mpa --mem --top开始测试--e820cycles=(0~6),均失败,都是蓝屏,但是和以前蓝屏不一样,这个蓝屏一闪就重启了,手机都抓拍不到,后来录像看了一下,也是7b蓝屏








通过以上试验基本可以证明在我的笔记本上winvblock不支持高位内存(也就是--top),但是有个问题,它为什么连简单的map /s71.vhd (hd0)也不支持,这好像根winvblock没丁点关系吧,map只是虚拟一个盘.




作者: chenandjun    时间: 2020-9-14 21:39
作为对比,我换成了svbus驱动,关闭了测试模式(svbus带签名的),其它未动.







就是老是要我重启,说装好了svbus驱动.



作者: 不点    时间: 2020-9-15 14:31
关于 winvblock 的 map 不带 --mem 的情况,你只试验了 --e820cycles=-1,没有试验 0, 1, ...
这还不能断定 winvblock 不支持直接 map(即,不带 --mem)。

不过,从你的测试中,--mem 已经支持,而 --mem --top 却失败,这应该基本算是证明了 winvblock 不支持 64 位内存(也就是不支持 4G 以上的高位内存)。为什么说只是“基本”证明呢?因为你这是精简版的,假如 winvblock 严重依赖操作系统的完整性,那么,当操作系统不完整时,它就可能无法支持高位内存。所以,上述证明也只是初步证明,并非完整证明。

算了,初步证明也就够了,不需要完整证明。这是因为,在同等条件下,svbus 能够成功,而 winvblock 却不能成功,这最起码说明了,svbus 的内存处理函数比 winvblock 更稳健。我猜测,winvblock 的高位内存访问是依赖于操作系统的相关函数。如果操作系统不是完整的,它就可能无法工作。而 svbus 的高位内存处理,可能是内建的,不依赖于操作系统。

作者: 不点    时间: 2020-9-15 14:47
补充提醒一个小的细节。--top 参数只能与 --mem 配合使用,才有意义。如果没有 --mem 而只有 --top,那么这个 --top 就不起作用,就跟不存在 --top 是一样的。

另外,看到你的 svbus 在 win7 中不需要使用 e820cycles 参数了。这似乎验证了 “win7 的显卡驱动比 xp 的显卡驱动更稳健”这个说法。

我感觉,似乎全部的测试都完成了。

辛苦了,可以歇歇了。

作者: 不点    时间: 2020-9-15 15:35
你在前面曾经提到一个问题,即,如何建立一个内存盘。

这里简单说说,确实可以建立一个空的内存盘。以下是举例:

map   --mem    (md)+8   (fd0)   把物理内存开头的 8 个扇区复制到 4G 以下的某个可用内存块(Usable RAM)中,虚拟为第一个软盘 fd0。这 8 个扇区的数据是无用的,但 map 命令需要至少 8 个扇区。由此建立的虚拟软盘也只有 8 个扇区的大小。

map   --mem   --top    (md)+8   (fd0)   把物理内存开头的 8 个扇区复制到 4G 以上高位内存的某个可用内存块(Usable RAM)中,虚拟为第一个软盘 fd0。其他解释同上。

可以用 --mem=-XXX 的方式,为内存盘分配足够的内存。举例如下:

map   --mem=-2880    (md)+8   (fd0)   把物理内存开头的 8 个扇区复制到 4G 以下的某个可用内存块(Usable RAM)中,虚拟为第一个软盘 fd0。这个操作会保证内存盘至少有 2880 个扇区,也就是,至少有 1440 KB 的大小。复制的动作,会把物理内存开头的 8 个扇区复制到 2880 个扇区中的开头的 8 个扇区上,复制完就结束,其后的部分不会碰,也就是说,不会把 00 之类的字节写入其后的 (2880 - 8)个扇区上。

map   --mem=-2880   --top   (md)+8   (fd0) 与前一个例子类似,只不过是在高位内存块中创建虚拟内存盘。

当然,也可以创建内存硬盘,例如(hd0), (hd1),以及内存光盘,例如 (hd32), (0xFF)。

像上述例子那样创建了内存盘后,可以进入操作系统,再对该盘进行格式化。windows 需要 svbus 之类的驱动,才能操作这些内存盘。

在上述例子中,你不需要了解你的内存盘究竟被安排在内存中的何处了。你只需要提供一个扇区数即可。


作者: 不点    时间: 2020-9-15 19:16
关于 --top 再澄清一些细节。

如果 map 命令行中只有 --mem 而没有 --top,则肯定只把该映像加载在 4G 以内的内存块上(注意,旧版 grub4dos 仍然有可能加载在 4G 以上;请不要使用旧版)。新版不可能加载在 4G 以上。因此,如果你在使用 winvblock,那么你正好就不该使用 --top 选项,而只能使用 --mem 加载在 4G 以内的低位内存上。

如果 map 命令行中有 --mem --top 选项,则映像会首先尝试加载在 4G 以上的空间。如果 4G 以上没有足够的空间(或者 4G 以上根本就不存在内存空间),那么会尝试加载在 4G 以内的空间。

这就是说,无论你的电脑是否有内存块位于 4G 以上,你都可以使用 --mem --top 选项。

总结一下:

1。不含 --top 时,肯定加载在低端内存。

2。含有 --top 时,有可能加载在高端,也有可能加载在低端(当然先尝试高端,后尝试低端)。


作者: chenandjun    时间: 2020-9-16 21:51
老大说可能系统不完整,我又装了一个完整的win764位旗舰版(cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso),什么也没精减,就用dim++清了下垃圾,启用了administrator账户,打开了测试模式,还有就是装winvblokc64位驱动.


下面是测试map


















全部是在微标处卡在那,还有发现个问题就是我vhd启动时测试模式是打开的,不需要按f8强制,但是只要map好像就取消了测试模式,必须要按f8强制,是不是驱动签名的问题.



作者: chenandjun    时间: 2020-9-16 22:42
下面是map --mem --top





















下面进入vhd,删除winvblock驱动装svbus驱动














作者: chenandjun    时间: 2020-9-16 22:46
老提示装好驱动要重启,我记得好像是要导个什么注册表再导入的,不知道怎么弄
作者: 不点    时间: 2020-9-17 11:28
好的,终于令人伤心地证明了,winvblock 不支持高位内存,也不支持不带 --mem 的普通 map。

提醒一下,在测试完

map    /.../.../file   (...)

之后,不需要再测试

map    --top    /.../.../file   (...)

了,上述两行是等价的,没有差别。因为如果没有 --mem 的配合,单独的 --top 就不起作用。就是说,如果没有 --mem,那就不要使用 --top,即使你使用了,也跟不存在 --top 是一样的。


作者: chenandjun    时间: 2020-9-17 14:14
好的,知道了,老大能不能给我一个grub4dos像你讲的这样详细的教程
作者: 不点    时间: 2020-9-17 14:57
chenandjun 发表于 2020-9-17 14:14
好的,知道了,老大能不能给我一个grub4dos像你讲的这样详细的教程

置顶的教程就不错。

grub4dos 自带的 readme 文件。

也有一些英文教程会更细致一些。以下有些网页比较陈旧,请选择阅读。

不过,需要严重提醒的是:电脑制造商正在淘汰(其实是封杀)旧的 BIOS,推行新的 EFI 启动规范。因此,即使学了 grub4dos,很可能发现越来越没用了。因此建议不要学了,只有当你非学不可的时候再去学。可以留意 grub2 以及 grub4EFI,这两者能够支持 EFI。


https://www.rmprepusb.com/tutorials/grub4dos

https://www.easy2boot.com/faq-/grub4dos/

http://xpt.sourceforge.net/techdocs/nix/disk/boot/boot07-GrubForDosInfo/ar01s03.html

http://microsaint.narod.ru/_Info_Grub4Dos/Grub4dos_tutorial.html

http://www.owl.homeip.net/manuals/systems/dos/grub4dos/Grub4dos.htm
作者: chenandjun    时间: 2020-9-17 20:17
谢谢
作者: chenandjun    时间: 2020-10-26 20:28
chenandjun 发表于 2020-9-17 20:17
谢谢

我都是乱弄,什么都不会,但不齿下问我还是会的,所以就厚着脸皮问,感觉无忧论坛真是不错,会有人帮你,有种家的感觉,偶尔还会遇到大神级别的,感觉他们也没什么架子,而且他们回答问题都能切中要害,让我这种新手也能一听就懂,真的非常的厉害,我现在就是没有就进来翻翻贴子,找找软件教程,这里东西非常多,要慢慢的找,有好多好东西论坛搜索根本搜不到.
作者: 2010sya    时间: 2020-10-26 21:07
真的佩服chenandjun和不点大,尽管我对g4d一窍不通,但我知道测试VHD非常消耗体力和精力,有了你们俩,才有了无忧的精彩,谢谢你们!


谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!谢谢你们!
作者: chenandjun    时间: 2020-10-26 21:25
那里呀,在这里都是我在问问题,我在这里学东西,其实最近得到好处的也是我自已,如果连这些力所能及的小事也做不了,我还有什么用,在这里问问题基本都会有人会提点你,不像有些地方,不是不回答你就是讽刺你,或者就是答非所问(我并非指回答的不对,而是比如你问系统操作上的一个问题他叫你重装系统或者重配个电脑),实在让人无语,所以我真心感觉无忧是个好地方.
作者: liuzhaoyzz    时间: 2020-10-27 14:36
本帖最后由 liuzhaoyzz 于 2020-10-28 08:33 编辑

看了下帖子,需要说明下:
1、e820cycles参数,基本上只对xp系统有效,用于规避双显卡切换导致的EA、F4等蓝屏问题,对于WIN7以上没什么效果,因为xp对于双显卡切换不支持,WIN7是支持的,一般地来说7B蓝屏是因为磁盘驱动,你的情况似乎是winvblock/svbus驱动没有通过微软签名,驱动没有生效导致的蓝屏,看你反复在WIN7下面测试这个参数,没必要啊!
2、firadisk/svbus支持加载到高位内存启动,winvblock是不支持的,这些都是已知的,为什么还要反复测试?
3、你的帖子里面截图出现428错误,那是因为驱动没有签名,在BCD里面禁用驱动签名是不行的,firadisk/svbus论坛里面好象有自带签名的驱动,yamingw大神有分享,可以直接下载,或者你可以尝试下学习用DSignTool驱动签名工具进行签名就可以了。我发个自带签名的firadisk/svbus上来。
4、grub4dos获取不到控制权的问题,用diskgenius清除保留扇区即可(一般是63扇区),然后用bootice重新写引导就行了。这是因为第0-第62扇区有残留的引导代码,可能会影响grub4dos获取控制权。

5、RAMOS不推荐用firadisk/winvblock/svbus这一类实模式驱动,建议用primo保护模式驱动,可以跨越高低内存分界线,不存在那些问题,而且速度要比firadisk/winvblock/svbus快几倍。

svbusX64已签名-yamingw.rar

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

firadisk_有签名.rar

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


作者: liuzhaoyzz    时间: 2020-10-28 08:00
本帖最后由 liuzhaoyzz 于 2020-10-28 09:01 编辑
应该澄清,firadisk/winvblock/svbus 不是实模式驱动。实模式是由 grub4dos 本身的实模式代码来驱动的。grub4dos 缺乏的是保护模式驱动,而这正是 firadisk/winvblock/svbus 所做的工作,它们弥补了grub4dos的不足。

哦,我的说法不对。
winvblock、firadisk和SVBus都可以把grub4dos在实模式下创建的仿真内存盘带入Windows,而primo驱动创建的内存盘不是由grub4dos在实模式下创建的,是primo在windows下创建的,也就是在保护模式下创建的,这是这两类驱动的本质区别。
他们的确都是保护模式的驱动,我的说法不对。

作者: 不点    时间: 2020-10-28 09:38
liuzhaoyzz 发表于 2020-10-28 08:00
哦,我的说法不对。
winvblock、firadisk和SVBus都可以把grub4dos在实模式下创建的仿真内存盘带入Window ...

大家知道著名的 imdisk 虚拟盘软件。这个软件,也能在 Windows 下创建虚拟盘,而且,也能在 Windows 下创建用内存虚拟出来的盘。岁数大了,记不清楚 imdisk 是不是开源的了。
作者: liuzhaoyzz    时间: 2020-10-28 09:54
本帖最后由 liuzhaoyzz 于 2020-10-28 10:19 编辑
不点 发表于 2020-10-28 09:38
大家知道著名的 imdisk 虚拟盘软件。这个软件,也能在 Windows 下创建虚拟盘,而且,也能在 Windows 下创 ...

        imdisk是开源的软件,我用imdisk大多是挂载img镜像或者iso镜像用,没用过它创建虚拟盘,也没有深入研究过。看过网友的测试,imdisk速度比较差,115楼:http://bbs.wuyou.net/forum.php?m ... 1303&fromuid=298214

作者: 不点    时间: 2020-10-28 10:40
高位内存启动,winvblock是不支持的,这些都是已知的,为什么还要反复测试?

我想说明几点:

1、首先是我的错,我要求楼主进行测试。也许是我印象模糊了,印象中,在英文网站 reboot.pro 上似乎有人说过,winvblock 支持 4G 以上的高位内存。因此,我也就顺理成章地让楼主进行了测试。其实,到目前为止的这些测试,也并不能 100% 肯定 winvblock 不支持 4G 以上的高位内存。只能说,在测试的范围之内,没能支持。就是说,不支持的概率较高,比如说,达到 95% 以上吧。

2、由于对问题的判断不准确,我已经让楼主走了一些弯路。这一点,前面也曾经提到了。

3、在 grub4dos 0.4.6 中修改 --top 的含义,原先 --top 是 “从高向低搜索内存块” 的意思,修改后变成 “允许使用 4G 以上的高位内存块” 的意思。这个变动,在根本上就是为 winvblock 服务的,这一点,我给忘却了。证明是我岁数大了,痴呆的表现。当时正是由于发现了 winvblock 不支持 4G 以上高位内存,才用这种办法来屏蔽高位内存块的。就是说,在 0.4.6 新版中,在不带 --top 的情况下,就一定不会使用高位内存块,而只使用低位内存块,这样就照顾了 winvblock。如果不是为了照顾 winvblock,那是根本就不会费劲去更改 --top 的含义的。一般来说,更改的动作可能会造成应用层面的不兼容。为了让不良影响降到最低,当时进行了大量的讨论。以上确实是我老年痴呆的问题,竟然都忘却掉了。但后来,我模模糊糊地有印象,似乎有人提到 winvblock 支持 4G 以上高位内存,是说在操作系统为 64 位的情况下支持高位内存。

4、关于 e820cycles 参数,liuzhaoyzz 说得对。其实,我并不知道对不对,因为我个人没有使用经验,我也不知道 win7 底下的应用情况。我在 Windows 下从不使用 map 出来的虚拟盘,因此,我完全没有经验。但感觉 liuzhaoyzz 说的对。e820cycles 当初就是为了解决 XP 的显卡驱动在 map 之后蓝屏的问题。印象中,确实有人指出,Win7 底下的显卡驱动已经没有这种蓝屏问题了。但是,e820cycles 参数,并非只能用于解决显卡的蓝屏,它是有可能用来解决其他种类的蓝屏的,比如说,网卡或声卡,或其他有 bug 的硬件驱动。当然了,真正有 bug 的硬件驱动,或许碰巧只有 XP 的某种型号的显卡而已。





作者: a888    时间: 2020-10-28 13:14
换新版的试试
作者: 无犹启动    时间: 2023-10-24 17:43
真的佩服chenandjun和不点大,尽管我对g4d一窍不通,但我知道测试VHD非常消耗体力和精力,有了你们俩,才有 ...




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