无忧启动论坛

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

A new branch of 0PE

[复制链接]
451#
发表于 2011-8-25 11:28:21 | 只看该作者
那当然了。需要弄明白,VirtualBox 在 himem 执行的时候,为何会破坏扩展内存?

而且,即使没有 himem 的存在,0pe 也照样无法成功启动到 PE,这说明,VirtualBox 还是在某个阶段破坏了扩展内存。

我们可以想象,0pe 总是在某个阶段需要调用 BIOS 的(int13,int15 等等),而正是这些 BIOS 的调用,破坏掉了扩展内存。

其中,int15 的调用是最大的嫌疑。himem 肯定要调用 int15 的。PE 的后续启动过程也肯定要调用 int15 的,否则怎么知道有多少内存呢?

因此有理由怀疑,正是这些 int15 的调用,破坏了扩展内存。

这仍旧需要设计一个测试方法,判断出这极其隐蔽的问题所在。

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

无论如何,我们到目前的研究已经有了某些成果了。比如说。我们已经断定,VirtualBox 以某种方式毁掉了扩展内存。

这一成果甚至现在就可以加以利用。比如说,0pe 可以在硬盘上建立一个(或者一些)映像文件,不再使用 --mem 的方式,而照样可以在 VirtualBox 上成功启动 PE。

[ 本帖最后由 不点 于 2011-8-25 12:19 编辑 ]
回复

使用道具 举报

452#
发表于 2011-8-25 14:00:18 | 只看该作者
原帖由 射日神剑 于 2011-8-24 15:27 发表
P大,最新补丁115地址失效,请续期


1.3.X版的,用这个作补丁吧:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=197928&extra=page%3D2

删掉0PE\XP\CMDPE.IM_

[ 本帖最后由 pseudo 于 2011-8-23 11:10 编辑 ]
回复

使用道具 举报

453#
发表于 2011-8-25 15:45:58 | 只看该作者
那么如果OPE里面想安装.MSI的程序,那么要怎么操作呢?
回复

使用道具 举报

454#
发表于 2011-8-25 18:38:25 | 只看该作者
又有了一些进展。。。。。

使用 map --memdisk-raw=0 (然后再 map --hook)竟然全都 OK 了!!!!

这有可能暗示:当使用默认的 memdisk-raw=1 时,由于要进行 A20 操作,这是硬件操作,也许这个过程中虚拟机出现 bug,导致内存被毁。
具体的细节还需进一步确定。
回复

使用道具 举报

455#
 楼主| 发表于 2011-8-25 19:14:01 | 只看该作者
@不点  
这里有个“蓝屏版”菜单项,可以在 VirtualBox 上成功启动0PE:
http://u.115.com/file/e626r6da#

涉及A20之类,就得折腾了。

[ 本帖最后由 pseudo 于 2011-8-25 19:15 编辑 ]
回复

使用道具 举报

456#
 楼主| 发表于 2011-8-25 19:17:59 | 只看该作者

回复 #453 2011tedy 的帖子

有个本地资源菜单项,涉及MSI。

如果有问题,自己折腾吧。
回复

使用道具 举报

457#
 楼主| 发表于 2011-8-25 19:23:09 | 只看该作者

回复 #452 icdmain 的帖子

1.3.X版的,这个新些:
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
最好再找
U盘自动加速器USB_ACCv1.2(2011-08-25)
更新一下。
回复

使用道具 举报

458#
发表于 2011-8-26 07:16:43 | 只看该作者
原帖由 pseudo 于 2011-8-25 19:14 发表
@不点  
这里有个“蓝屏版”菜单项,可以在 VirtualBox 上成功启动0PE:
http://u.115.com/file/e626r6da#

涉及A20之类,就得折腾了。


蓝屏版的原理是什么?即,如何让原来的“蓝屏”不再“蓝屏”?

它的菜单有什么特殊的地方?关键执行了什么动作?

这怎么会与 VirtualBox 的 A20 bug 有关呢?
回复

使用道具 举报

459#
发表于 2011-8-26 08:55:33 | 只看该作者
再报告一些结果。

不用 map --memdisk-raw=0 时,执行

map --mem (fd0)+1 (fd1)
map --hook
chainloader (fd0)+1
root (fd0)
boot

进入 DOS(himem.sys有运行),此时,在 DOS 下执行

type B:\autoexec.bat

等命令,发现内容不正确。这就是说,内存盘被破坏。

然而,此时立即执行 grub.exe 进入新的 grub,在 grub 下却可以正确地 cat 出 (fd1)/autoexec.bat 等文件的内容!!

这就是说,内存盘并未被破坏!因此,这验证了前面的猜测:当我们用 grub4dos 自己的 A20 代码去读盘的时候,不知为什么失败了。那样子好像是 A20 处于 “未接通” 的状态(偶数兆的读出来是正确的。位于奇数兆的内存,读出来的就是折返到偶数兆的内存,因此是错误的)。就是说,虽然 VirtualBox 能够骗过 grub4dos,指示 A20 成功打开,但实际上,它并未打开 A20。这仍然很诡异。

grub4dos 检查 HMA 处的内存与位于中断向量表处的内存是否一样。如果不一样,则 A20 处于开启状态。因此,当我们用某种方式开启 A20 的时候,VirtualBox 就用这种方式告诉我们,它已经成功开启 A20。但实际上,它可能只是把 1M 处的访问打开了,而其余的奇数兆内存并未开启。

而再次进入 grub.exe 之后,可能是因为 grub.exe 重新执行了某种 A20 的开启动作,导致 A20 又成功开启了。总之,很诡异。
回复

使用道具 举报

460#
发表于 2011-8-26 09:45:39 | 只看该作者

回复 #446 dengxiong 的帖子

嗯,理论上只要XP可以,03应该也可以,只是P大热忠于XP,且目前还在测试,就只出了XP.
目前,1.3.0自判断单双核NATIVE版0PE测试应该可以告一阶段了,如果P大把03PE也加上,1.310PE就更完美了。
期待1.3.1版0PE更完美。
回复

使用道具 举报

461#
 楼主| 发表于 2011-8-26 10:41:26 | 只看该作者

回复 #458 不点 的帖子

0PE启动时,由grldr菜单加载0PE.GZ为内存仿真硬盘,以此为“容器”。其它相关组件加载到容器或内存仿真软盘。
然后进入dos阶段,进行整理。
其中可能包括从1.ZIP里提取适用磁盘控制器驱动等工作。“零体积”版情形,还可能从硬盘已有系统获取系统文件。
最终,在容器里动态形成一个普通PE“内核”。
接着,在dos下,由grub.exe启动这个PE内核。

“容器”显然要用到--mem参数,先前版本g4d有蓝屏问题(8.5以后的g4d解决了)。
为绕过蓝屏,我把grub.exe要启动的PE内核,即最终容器里PE内容,导出为.img映像,即0PE/XP/CMPPE.IM_文件,然后不加--mem启动它,这就是蓝屏版。

蓝屏版启动的是静态映像,不经过grlr、DOS阶段的动态拼装,因而几乎不能体现0PE的特色,只作为临时应对蓝屏措施。自从8.5g4d解决蓝屏问题后,蓝屏版作废。

无蓝屏版的效果见#457楼。

蓝屏版跟你提到的
“这一成果甚至现在就可以加以利用。比如说,0pe 可以在硬盘上建立一个(或者一些)映像文件,不再使用 --mem 的方式,而照样可以在 VirtualBox 上成功启动 PE。”
差不多。
不使用--mem,连DOS都没经过。


又,grldr内置菜单中,若有
set burgcd=
if exist (224)/0PE/0PE.GZ ...
if exist burgcd map --floppies=1...
这三行请删去。

它认为光盘编号为224,且上有0PE.GZ就是burg+grldr整体启动0PE.ISO情形了,判据比较粗糙。
而VirtualBOX里,光盘好像就是224。误判会多做一些垃圾操作,没准影响内存仿真盘,增加复杂因素。

[ 本帖最后由 pseudo 于 2011-8-26 10:53 编辑 ]
回复

使用道具 举报

462#
发表于 2011-8-26 12:30:32 | 只看该作者
原帖由 pseudo 于 2011-8-25 19:23 发表
1.3.X版的,这个新些:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=198329&extra=page%3D1
最好再找
U盘自动加速器USB_ACCv1.2(2011-08-25)
更新一下。




用了这个最新的版本到PE桌面正常,选择“启动网络影音”后显屏显了一下回到桌面后就死机了,鼠标灯亮的,无法操作。试过3次。

[ 本帖最后由 ntsyh 于 2011-8-26 12:40 编辑 ]

Snap2.jpg (22.5 KB, 下载次数: 237)

Snap2.jpg
回复

使用道具 举报

463#
发表于 2011-8-26 14:10:49 | 只看该作者

回复 #461 pseudo 的帖子

现在发现 DOS 下访问 grub4dos (默认memdisk-raw=1时)的内存盘不正常(就是诡异的 A20 问题),而一旦进入 grub.exe,问题不复存在。用 quit 命令退出 grub 返回到 DOS,或者再启动一个新的 DOS,结果都一样,无法正常访问内存盘。就是说,只要在 grub 环境下,一切都正常了。只要在 DOS 下(有 himem 的情形),它就不正常。还需要确定,DOS 无 himem 的情形会是什么样的结果。

无论如何,现在已经清楚的是,VirtualBox 与 grub4dos 并无冲突。只要在 grub4dos 下操作,一切的一切都正常。

而 VirtualBox 与 DOS 是有冲突的。前面你已经说过,即使没有 himem,启动 PE 也是失败的。因此,这就是说,它是直接与 DOS 冲突了。(当然,严格来说,还要做一个无 himem 情形的验证。)

也可以认为是与 grub4dos 有冲突,那是因为,只要在 map --hook 之前执行 map --memdisk-raw=0 就没问题了。这一点,你也可以把它作为一个选项放在 0pe 中,以便用户可以在 VirtualBox 上选择它来启动 0pe。
回复

使用道具 举报

464#
 楼主| 发表于 2011-8-26 14:41:58 | 只看该作者
回复 #463 不点 的帖子
因为有多个map --hook和map --rehook,想了解
map --memdisk-raw=0设置一次就一直生效的吗?还是每次 map --hook 之前都要设置?
在grldr阶段设置,到了grub.exe阶段还要设置吗?

回复 #462 ntsyh 的帖子
你的cpu什么型号?是单核还是多核的?xp下任务管理器性能面板看到几个cpu图?
把0PE\XP\NTKRNLMP.EX_文件删掉或改名试试。
确保不要多处存在0PE.GZ导致版本混乱。
回复

使用道具 举报

465#
发表于 2011-8-26 15:59:59 | 只看该作者

回复 #464 pseudo 的帖子

map --memdisk-raw 在 hook 或 rehook 之后起作用。如果已经 hook,需要 rehook 后,新的值才起作用。

map --memdisk-raw 的值不继承前面的 grub 环境中的值。就是说,在新的环境中,默认值仍是 1.

如果不是从一个 grub 环境中(通过执行 grub.exe 或者 grldr)运行另外一个 grub 环境,则设置一次 map --memdisk-raw 就可以被后续的 map --hook 使用了。
回复

使用道具 举报

466#
发表于 2011-8-26 16:04:12 | 只看该作者
发现 VirtualBox+(memdisk-raw=1)+himem 三者共同作用,才导致问题的发生,缺一不可。

前面说过,当没有 himem 时,PE 也启动不了。这可能是因为 PE 的启动过程运行了与 himem 等价的代码。
回复

使用道具 举报

467#
发表于 2011-8-26 18:26:57 | 只看该作者
[quote]原帖由 pseudo 于 2011-8-26 14:41 发表



回复#464 pseudo

是单核的CPU,上次试过你的测试能认的;
把0PE\XP\NTKRNLMP.EX_文件删掉后正常了,现在就是在此PE网上回复。

[ 本帖最后由 ntsyh 于 2011-8-26 19:04 编辑 ]
回复

使用道具 举报

468#
 楼主| 发表于 2011-8-26 19:38:33 | 只看该作者

回复 #467 ntsyh 的帖子

用这个查一下cpu情况。

检测Intel、AMD的cpu核心数.rar

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

回复

使用道具 举报

469#
发表于 2011-8-26 22:13:55 | 只看该作者
原帖由 pseudo 于 2011-8-26 19:38 发表
用这个查一下cpu情况。




用这个查了cpu情况反馈

[ 本帖最后由 ntsyh 于 2011-8-26 22:20 编辑 ]

Snap1.jpg (28.1 KB, 下载次数: 208)

Snap1.jpg

Snap3.jpg (54.35 KB, 下载次数: 202)

Snap3.jpg

Snap4.jpg (52.77 KB, 下载次数: 219)

Snap4.jpg
回复

使用道具 举报

470#
 楼主| 发表于 2011-8-26 23:04:04 | 只看该作者
误判核心数,导致在单核机上启用多核PE,这样加载网络会死机。

至于什么原因导致误判有待研究。

用附件暂时避过,它把核心太多(16核以上)的归为误判,仍当单核处理。

适用于0PEv1.3.1(2011-08-09)XP中文版的补丁(2011.8.26发布).part1.rar

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

适用于0PEv1.3.1(2011-08-09)XP中文版的补丁(2011.8.26发布).part2.rar

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

回复

使用道具 举报

471#
发表于 2011-8-26 23:12:44 | 只看该作者
解压错误,文件损失。请重新上传。
回复

使用道具 举报

472#
 楼主| 发表于 2011-8-26 23:14:35 | 只看该作者
winrar版本要够新
回复

使用道具 举报

473#
发表于 2011-8-26 23:23:21 | 只看该作者
晕,我是的4.00,用4.01的解压成功。
checkrange 16:-1 read 0x60000 && set ntkrnl= && goto 0
哦,仅此一句,暂时绕开。

[ 本帖最后由 zxw 于 2011-8-26 23:50 编辑 ]
回复

使用道具 举报

474#
发表于 2011-8-27 03:18:02 | 只看该作者

回复 #433 pseudo 的帖子

原帖由 pseudo 于 2011-8-24 00:37 发表
VMware怎么弄都没问题。

附件带debug.com,可选himem.sys。


用这个版本,今天在一台二手电脑上的 VirtualBox 下成功进入 PE。资源管理器和记事本等,都正常,其他的程序也应该没问题。一开始我进入命令行执行 map --memdisk-raw=0 和 map --rehook 然后继续,发现成功了。第二次试验,就不再执行 memdisk-raw 的设置,也能成功进入 PE !!

这个 CPU 很低档,不支持硬件辅助虚拟化功能。在它上面的 VirtualBox 默认时也没有打开 PAE 支持。也许是这个原因而“歪打正着”了?因此怀疑 VirtualBox 的硬件辅助虚拟化代码存在 bug。

其他感兴趣者也可以试试禁止 VirtualBox 的 CPU 硬件虚拟化以及 PAE,看看问题是否解决了?

EDIT:

后面的试验已经证明,确实是 VirtualBox 硬件虚拟化代码的 bug。有时候,老电脑的用处是新电脑无法代替的,呵呵。把你的老电脑攒起来,20 年后拍卖,说不定可以卖个好价钱。

[ 本帖最后由 不点 于 2011-8-27 09:58 编辑 ]
回复

使用道具 举报

475#
发表于 2011-8-27 08:15:09 | 只看该作者
原帖由 pseudo 于 2011-8-26 23:04 发表
误判核心数,导致在单核机上启用多核PE,这样加载网络会死机。

至于什么原因导致误判有待研究。

用附件暂时避过,它把核心太多(16核以上)的归为误判,仍当单核处理。


判断CPU核心数的程序有待完善吧?我在一台AMD单核的电脑上运行,判断出intel:2,amd:1这样的话,是按1核心还是2核心还算?
回复

使用道具 举报

476#
 楼主| 发表于 2011-8-27 08:26:59 | 只看该作者
回复 #474 不点 的帖子
看来VirtualBOX问题多多。

我这里map --memdisk-raw=0暂时还没完全成功。可能是我的VirtualBOX没装好,影响测试效果。

回复 #475 2010RENDQ 的帖子
程序比较简陋。
第一行有AMD字样,后面就只看有amd字样的。
第一行有intel字样,后面就只看有intel字样的。
回复

使用道具 举报

477#
发表于 2011-8-27 09:16:47 | 只看该作者

回复 #474 不点 的帖子

试了一下,我这里禁用硬件虚拟(VT-x/AMD-V)都好了,PAE没有禁用。
回复

使用道具 举报

478#
发表于 2011-8-27 09:36:58 | 只看该作者

回复 #477 adef 的帖子

来晚了一步,被你抢先了。我也刚刚在一台 i7 的系统上测试,结果与你的一样。只要在 “系统”->“硬件加速”->“硬件虚拟”中钩掉“启用VT-x/AMD-V” 即可。

这次可以断定是 VirtualBox 的 bug 了,而 grub4dos 以及 Himem 都可以洗清了。

原因找到了,bug 定准了,workaround 也有了,这个问题终于算是有了满意的结局。

剩下的就是需要有人向 VirtualBox 报告 bug。可以制作一个最小的、能够再现 bug 的映像文件,交给开发人员去处理。
回复

使用道具 举报

479#
发表于 2011-8-27 12:14:59 | 只看该作者
不点就是我们常说的“知其然亦知其所以然”的那种人啊,敬佩!
回复

使用道具 举报

480#
 楼主| 发表于 2011-8-27 12:57:56 | 只看该作者
确实,VirtualBOX只要设置为不“启用VT-x/AMD-V”,就可以正常启动0PE。
这样测试0PE的虚拟机又多一种了。

如果启用VT-x/AMD-V,则要map --memdisk-raw=0才能一定程度上兼容himem.sys。

不点大人辛苦了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 01:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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