无忧启动论坛

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

[原创]支持外置硬盘控制器驱动,可任意方式启动的PE[10-01-13稳定版]

  [复制链接]
1471#
发表于 2009-12-20 20:43:46 | 只看该作者
报告最新版EXT.zip测试结果:
可以正常启动到PE下,但点击开始菜单的[关闭计算机]时PE系统没有反应。我是联想昭阳笔记本,直接用grldr引导MicroPE.ISO文件启动。
回复

使用道具 举报

1472#
 楼主| 发表于 2009-12-20 21:27:50 | 只看该作者
这个更新没有改到这些核心内容,应该没有关系啊,我自己的测试是正常的,其它人也可以测试一下,或者pz也可以试试其它版本的。
回复

使用道具 举报

1473#
发表于 2009-12-21 07:02:40 | 只看该作者
早上起来又用虚拟机VM测试了一下,这回却是正常的。我在测试中出现的问题,会不会是添加VBEMPI驱动和真实机器上使用ISO文件引导有冲突的问题呢?当我删掉了VBEMPI驱动后却是正常的。

[ 本帖最后由 pz 于 2009-12-21 07:15 编辑 ]
回复

使用道具 举报

1474#
 楼主| 发表于 2009-12-21 23:59:35 | 只看该作者
有可能是VBEMP驱动的问题,这个得我得再查一下.
回复

使用道具 举报

1475#
发表于 2009-12-22 08:13:02 | 只看该作者
突然发觉VMware拖放不灵了,难道与VBEMP驱动有关?
回复

使用道具 举报

1476#
 楼主| 发表于 2009-12-22 13:27:06 | 只看该作者
好像VBEMP驱动确实有问题,还是先删除好了,需要的时候自己手工加载。只需删除VBEMP目录即可。
回复

使用道具 举报

1477#
发表于 2009-12-22 16:14:46 | 只看该作者
VBEMP驱动删除就好了,看来这个驱动有后遗症。
最新的PETOOLS搜索工具把它加上吧。
以后的PE会是英文版?那对中文支持会有什么影响?
回复

使用道具 举报

1478#
 楼主| 发表于 2009-12-22 17:47:30 | 只看该作者
不是啊,还是中文版的,只是如果有需要可以通过修改配置文件显示成英文界面的.
回复

使用道具 举报

1479#
发表于 2009-12-23 11:13:28 | 只看该作者
支持TXTSETUP.SIF格式的打包SRS.ZIP后,不支持SRS目录方式了,C大再检查下。另新版FIRADISK代替WDSYS正常。
回复

使用道具 举报

1480#
发表于 2009-12-23 11:21:10 | 只看该作者
这次改动还挺大的,单独换一个EXT.ZIP还不行,全换了就好了,估计有些改动写到内核里了。错怪C大了,SORRY!
新版FIRADISK0.0.1.18感觉比较稳定了。但还没测试系统安装,特别是安装WIN2003。

[ 本帖最后由 zhaohj 于 2009-12-23 16:35 编辑 ]
回复

使用道具 举报

1481#
 楼主| 发表于 2009-12-23 18:23:50 | 只看该作者
应该是只要换EXT.ZIP是可以的,可能有其它的改动,忘了,呵呵.

能用就好.对于firadisk内核就暂不使用了(因为天使比较稳定),有要用就放在EXT.ZIP里面就可以了.
回复

使用道具 举报

1482#
发表于 2009-12-24 17:11:09 | 只看该作者
有一台机器,PXE启动死活进不了CSPE及0PE。
下面是CSPE启动加载EXT.ZIP时的debug on
下面图片出现后机器就不动了,查看服务器上TFTP传输,未见EXT.ZIP传输,一直是0%。
而虚拟机测试一切正常。
GRLDR12-03及12-20版都如此。

[ 本帖最后由 zhaohj 于 2009-12-24 17:15 编辑 ]

IMG064.jpg (112.37 KB, 下载次数: 172)

IMG064.jpg
回复

使用道具 举报

1483#
 楼主| 发表于 2009-12-24 17:51:17 | 只看该作者
不会是DELL的机子吧.....
还是Intel原装的版,以前我有碰到过一次,好像PXE的路径不对了,找不到文件,不过是提示出错了,而不是卡死。
不知道这个是什么原因,得再跟踪一下,看看到底那个命令出了问题。(可以再等等看,如果没有卡死应该会有一个提示)
回复

使用道具 举报

1484#
发表于 2009-12-24 18:02:28 | 只看该作者
是ASUS的945集成主板(INTEL芯片组),1G内存,显卡集成的。
到最后未见出来错误提示符,运行其他全内置PE都正常。

[ 本帖最后由 zhaohj 于 2009-12-24 18:07 编辑 ]

Snap1.jpg (165.89 KB, 下载次数: 190)

Snap1.jpg
回复

使用道具 举报

1485#
 楼主| 发表于 2009-12-24 18:05:45 | 只看该作者
如果可能的话单步跟踪下,看看是到哪个命令卡住了,

我哪天比较有空再改一下Micrope.lst菜单全部使用绝对路径(目前是使用相对的路径,有一些PXE ROM不支持,会造成文件找不到)
回复

使用道具 举报

1486#
发表于 2009-12-24 18:13:09 | 只看该作者
单步跟踪是不是菜单上全改成DEBUG ON?
回复

使用道具 举报

1487#
发表于 2009-12-25 09:51:06 | 只看该作者
单步跟踪了一下,在find语句卡住了
find --set-root --ignore-floppies --ignore-cd /OEM_SRS.ZIP || find --set-root --ignore-floppies --ignore-cd /CSPE/OEM_SRS.ZIP
checkrange 0 errnum || find --set-root --ignore-floppies --ignore-cd /OEM_SCSI.IMG

[ 本帖最后由 zhaohj 于 2009-12-25 10:59 编辑 ]

IMG065.jpg (119.94 KB, 下载次数: 175)

IMG065.jpg
回复

使用道具 举报

1488#
发表于 2009-12-25 12:50:36 | 只看该作者
把这句:
find --set-root --ignore-floppies --ignore-cd /OEM_SRS.ZIP || find --set-root --ignore-floppies --ignore-cd /CSPE/OEM_SRS.ZIP
改成:
cat --length=0 /OEM_SRS.ZIP  && find --set-root --ignore-floppies --ignore-cd /OEM_SRS.ZIP
cat --length=0 /CSPE/OEM_SRS.ZIP  && find --set-root --ignore-floppies --ignore-cd /CSPE/OEM_SRS.ZIP
能执行下去,但还是进不了DOS状态,在PXE UNLOAD 后卡住了。

从上面的语句可以看出,如果所有地方都不存在这个文件,find语句也会卡住。
本人测试时上面的几个文件(OEM*.*)是不存在的。
那是否说明find语句也有问题呢?

[ 本帖最后由 zhaohj 于 2009-12-25 15:01 编辑 ]
回复

使用道具 举报

1489#
发表于 2009-12-25 14:07:32 | 只看该作者
pxe unload,有点意思.........

看了 bean 的 fsys_pxe.c 的代码,发现如下的一个片段:


  1.   i = 0;
  2.   while (code[i])
  3.     {
  4.       grub_memset (&unload, 0, sizeof(unload));
  5.       pxe_call (code[i], &unload);
  6.       if (unload.Status)
  7.         {
  8.           grub_printf ("PXE unload fails: %d\n", unload.Status);
  9.           goto quit;
  10.         }
  11.       i++;
  12.     }
  13.   if (*((unsigned short *)0x413) == pxe_basemem)
  14.     *((unsigned short *)0x413) = pxe_freemem;
  15.   pxe_entry = 0;
  16.   ROM_int15 = *((unsigned long *)0x54);
  17.   grub_printf ("PXE stack unloaded\n");
复制代码

意思就是说,把 pxe bios 所占用的内存释放掉。释放掉之后呢?.....

因为 pxe bios 很有可能把 int15 接管了,所以,pxe 的 bios 在卸载时会恢复原先的 ROM int15。因此此时确实应该把 GRUB4DOS 所记录的 ROM_int15 进行更新。

但是由此我们也能想到,会不会某个 PXE BIOS 连 int13 也更改了呢?如果它曾经接管了 int13,那么,在卸载它自己的时候,它应该也会恢复原先的 ROM int13。因此此时我们也应该把 GRUB4DOS 所记录的 ROM_int13 和 ROM_int13_dup 进行更新:

  1. extern unsigned long ROM_int13;
  2. extern unsigned long ROM_int13_dup;

  3.   i = 0;
  4.   while (code[i])
  5.     {
  6.       grub_memset (&unload, 0, sizeof(unload));
  7.       pxe_call (code[i], &unload);
  8.       if (unload.Status)
  9.         {
  10.           grub_printf ("PXE unload fails: %d\n", unload.Status);
  11.           goto quit;
  12.         }
  13.       i++;
  14.     }
  15.   if (*((unsigned short *)0x413) == pxe_basemem)
  16.     *((unsigned short *)0x413) = pxe_freemem;
  17.   pxe_entry = 0;
  18.   ROM_int15 = *((unsigned long *)0x54);
  19.   ROM_int13_dup = ROM_int13 = *((unsigned long *)0x4C);
  20.   grub_printf ("PXE stack unloaded\n");
复制代码


同时需要把 asm.S 中的

ROM_int13:

改成

VARIABLE(ROM_int13)

而把

ROM_int13_dup:

改成

VARIABLE(ROM_int13_dup)

[ 本帖最后由 不点 于 2009-12-25 14:09 编辑 ]
回复

使用道具 举报

1490#
发表于 2009-12-25 14:33:45 | 只看该作者
不点大师也过来了,看来这个问题有希望解决。虽然是个别现象,但至少找到了BUG(呵呵,这样的机器还真难遇到)。
回复

使用道具 举报

1491#
发表于 2009-12-25 14:59:19 | 只看该作者

回复 #1498 zhaohj 的帖子

机器倒不难遇到,
这样的机器+MicroPE/0PE+PXE启动
才难遇到。
回复

使用道具 举报

1492#
发表于 2009-12-25 15:45:35 | 只看该作者
C大把pxe unload地方改一下看看能不能解决后续问题。
PXE启动大不了不搜索其他盘符。

IMG066.jpg (111.41 KB, 下载次数: 166)

IMG066.jpg
回复

使用道具 举报

1493#
 楼主| 发表于 2009-12-25 16:38:34 | 只看该作者
等下过去再改一下编译一个试试。
回复

使用道具 举报

1494#
 楼主| 发表于 2009-12-25 18:00:47 | 只看该作者
OK,新的GRLDR,麻烦测试一下。

grldr.rar

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

回复

使用道具 举报

1495#
发表于 2009-12-25 22:29:44 | 只看该作者
谢谢C大,这么快就改好了新版。不过得明天测试了。
问C大,find命令卡住怎么解释,这与相对路径应该没关系。

[ 本帖最后由 zhaohj 于 2009-12-25 22:30 编辑 ]
回复

使用道具 举报

1496#
 楼主| 发表于 2009-12-25 22:43:29 | 只看该作者
可能是BIOS的问题吧,我之前就有碰到过find --set-root碰到不存在的磁盘就会卡住的问题后来的版本解决了。

你可以进入G4D命令行,
然后手工输入find看看显示什么
map --status的信息。

然后再试试find --set-root /xxxx.xxx
应该也是会卡住。
回复

使用道具 举报

1497#
发表于 2009-12-26 11:26:02 | 只看该作者
测试了一下,到DOS这步还试卡住,下面是PXE启动后的内存变化,第一张是刚进入PXE的,第二张是到DOS前的。
另,新版对其他机器无影响。

[ 本帖最后由 zhaohj 于 2009-12-26 11:32 编辑 ]

IMG068.jpg (117.24 KB, 下载次数: 175)

刚进入PXE时

刚进入PXE时

IMG069.jpg (119.33 KB, 下载次数: 174)

快到DOS时的

快到DOS时的

IMG070.jpg (52.97 KB, 下载次数: 171)

卡住了

卡住了
回复

使用道具 举报

1498#
发表于 2009-12-26 13:44:09 | 只看该作者
用虚拟机模拟了这台机器的真实环境,PXE启动DOS98,真实机器到PXE UNLOAD就卡住了

[ 本帖最后由 zhaohj 于 2009-12-26 13:46 编辑 ]

Snap1.jpg (77.13 KB, 下载次数: 176)

Snap1.jpg

Snap2.jpg (59.25 KB, 下载次数: 180)

Snap2.jpg

IMG071.jpg (48.3 KB, 下载次数: 174)

真实机器

真实机器
回复

使用道具 举报

1499#
发表于 2009-12-26 15:19:56 | 只看该作者
说明PXE unload后DOS中断向量有问题,为了便于分析,我把PXE后及PXE UNLOAD后的中断向量贴出来:

[ 本帖最后由 zhaohj 于 2009-12-26 15:22 编辑 ]

IMG073.jpg (74.9 KB, 下载次数: 177)

PXE装载时的中断向量表

PXE装载时的中断向量表

IMG074.jpg (159.93 KB, 下载次数: 174)

IMG074.jpg

IMG075.jpg (163.08 KB, 下载次数: 172)

IMG075.jpg

IMG081.jpg (160.09 KB, 下载次数: 179)

IMG081.jpg

IMG082.jpg (169.37 KB, 下载次数: 177)

PXE卸载后的中断向量表

PXE卸载后的中断向量表

IMG083.jpg (158.64 KB, 下载次数: 174)

IMG083.jpg

IMG084.jpg (155.61 KB, 下载次数: 175)

IMG084.jpg
回复

使用道具 举报

1500#
 楼主| 发表于 2009-12-26 19:01:43 | 只看该作者
看不懂这些东西,你可以试试在启动之前先执行pxe unload看能否启动(也就是不让GRUB4DOS自动pxe unload)。
例子
map --mem /xxx.img (fd0)
map --hook
pxe unload
rootnoverify (fd0)
chainloader +1
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-13 02:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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