无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: chenall
打印 上一主题 下一主题

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

  [复制链接]
1508#
发表于 2009-12-29 11:34:14 | 只看该作者
原帖由 紫狐 于 2009-12-29 11:18 发表
chenall ,啥时候把cspe传到你的网盘呀?


版主也不看看帖子,我的FTP上与LIVEMESH一直来是同步的。
回复

使用道具 举报

1507#
发表于 2009-12-29 11:18:35 | 只看该作者
chenall ,啥时候把cspe传到你的网盘呀?
回复

使用道具 举报

1506#
 楼主| 发表于 2009-12-28 18:06:02 | 只看该作者
^_^,

抽空制了一个NT5.X/NT6.X通用启动软盘镜像,有空测试下。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158244
回复

使用道具 举报

1505#
发表于 2009-12-28 18:02:38 | 只看该作者
原帖由 chenall 于 2009-12-28 17:39 发表
Shift按键卡住了,试试不任何按键看看。。。


真是键盘问题,键盘某几个键不灵,换了键盘就好了。

另外,1505#楼的问题也找到原因了,是硬盘问题,用geometry (hd0)查看多了一个无效分区,查看结果也卡住,后来把硬盘低格了一下,就OK了。
这也说明,find命令geometry命令等搜索硬件的碰到硬件问题需要一个跳出开关,不然会卡住。

以前碰到过一个硬盘有大量坏道的也卡住。

[ 本帖最后由 zhaohj 于 2009-12-28 18:14 编辑 ]
回复

使用道具 举报

1504#
 楼主| 发表于 2009-12-28 17:39:43 | 只看该作者
Shift按键卡住了,试试不任何按键看看。。。
回复

使用道具 举报

1503#
发表于 2009-12-28 14:59:13 | 只看该作者
今天又一台机器进不了PE,NV的主板,PXE启动到DOS处就退出了。grldr12.23及12.25版本都一样。

IMG087.jpg (118.53 KB, 下载次数: 190)

IMG087.jpg
回复

使用道具 举报

1502#
发表于 2009-12-27 12:59:00 | 只看该作者
C大已把相对路径改成了绝对路径。
回复

使用道具 举报

1501#
发表于 2009-12-26 22:16:10 | 只看该作者
早试过这个办法了,其实不用试也知道,问题出在中断向量恢复上,但这个只有不点大人等高人能看懂。
算是提供点资料吧,碰到这样的机器也不容易。
回复

使用道具 举报

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
回复

使用道具 举报

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

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

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

PXE装载时的中断向量表

PXE装载时的中断向量表

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

IMG074.jpg

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

IMG075.jpg

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

IMG081.jpg

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

PXE卸载后的中断向量表

PXE卸载后的中断向量表

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

IMG083.jpg

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

IMG084.jpg
回复

使用道具 举报

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

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

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

Snap1.jpg

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

Snap2.jpg

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

真实机器

真实机器
回复

使用道具 举报

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

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

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

刚进入PXE时

刚进入PXE时

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

快到DOS时的

快到DOS时的

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

卡住了

卡住了
回复

使用道具 举报

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

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

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

使用道具 举报

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

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

使用道具 举报

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

grldr.rar

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

回复

使用道具 举报

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

使用道具 举报

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

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

IMG066.jpg
回复

使用道具 举报

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

回复 #1498 zhaohj 的帖子

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

使用道具 举报

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

使用道具 举报

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 编辑 ]
回复

使用道具 举报

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 编辑 ]
回复

使用道具 举报

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, 下载次数: 148)

IMG065.jpg
回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

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

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

Snap1.jpg
回复

使用道具 举报

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

使用道具 举报

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, 下载次数: 140)

IMG064.jpg
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-22 11:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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