无忧启动论坛

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

[讨论] 最简单动态生成F6驱动软盘的设想!

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-4 11:44:49 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
2011-10-18日更新
在ZXW大大的帮助下,这个批处理终于不再像玩具了
更新的比较多。支持绝对路径和GZ格式的压缩包了。这样PXE也可以用
附件去PE取下载吧。就不重复了
下载地址:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=200932&extra=page%3D1
2011年10月08日更新:
这个设想得以实现,昨天晚上得到zxw大大的帮助以及幸运的草的测试。ZXW大大为人低调做事严谨很值得我学习。
附件是ZXW大大帮助下修改好的代码。已经在我身边的几个机器上按F6加载成功。

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

代码很短,但是写这个代码花了我2天的时间,CMD的代码几分钟搞定,grud4dos的代码基本上是一个命令一个命令的调试。目前来讲还是有BUG,我在AMD的780G上测试WINPE 免F6通过,能找到硬盘,但是安装XP的时候,免F6找不到设备,必须手动按F6(梅捷780G开了ACHI)。但是在intel的机器上始终没能成功。ls (fd0)/ 发现有驱动文件,就是不能自动加载成功,就算是按F6手动加载进系统后还是找不到硬盘。

另外:我发现WinVBlock的驱动放在(fd0)或者(fd1)都能成功加载。无论是XP还是PE。真是郁闷死了。
今天不知道怎么回事,我的U盘在我家NF550的主板上加载文件总是提示 磁盘读取错误。
已经解决:被识别成ZIP的问题。


-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
关于自动生成SRS驱动软盘镜像的一个设想

读C大的dpms.bat读的我是一头雾水,看来要想完全读懂,得去看grub4dos的源代码了。

不过因此让我萌发了一个想法,和大家探讨下,可行的话我会我打算实现这个想法:

DP_MassStorage确实是有人帮忙跟新,但是缺点也是不少的,里面有很多IDE驱动,对于我们只是用来安装PE以及安装系统的人来说,确实是有点大材小用了,并且体积也太庞大了。SRSF6和N大的F6镜像如果跟新起来也很麻烦,还得避免驱动ID重复。

我的实现方法如下:
1、驱动直接用官方的F6镜像,不做任何修改。只需要ACHI和RAID驱动即可。用目录来区别各个品牌和版本的镜像文件,比如论坛公认的INTEL的ACHI/RAID驱动通常都是用四个文件,我们可以这样:

─SRS
├─amd
├─intel
│ ├─478
│ ├─775
│ └─SNB
├─nvidia
├─uli
├─via
└─ID_list.txt 保存控制器ID对应的文件夹 如:PCI\VEN_8086&DEV_2822&CC_0104=intel\SNB

2、驱动跟新方式,因为是官方驱动,所以写法比较规范和固定,可以编写一个ID_LIST.CMD的批处理,每次更新驱动或者是增加驱动,运行ID_LIST.CMD后,自动更新ID.LIST.TXT ,自动生成类似PCI\VEN_8086&DEV_2822&CC_0104=intel\snb的列表文件。

3、运行时,用chkpci获取本机的ID,然后用批处理去ID.LIST.TXT去查找对应的文件夹,如果找到转4,找不到忽略直接退出创建F6镜像。

4、利用C大的方法创建镜像,并将3找到的文件夹内的所有文件复制到(fd0)中。

5、如果需要安装系统,将FiraDisk&WinVBlock的文件复制到(fd1)即可。当然也可以采用批处理续尾的方式整合到批处理内部,根据参数来选择使用。





[ 本帖最后由 hotdll 于 2011-10-22 08:54 编辑 ]
2#
 楼主| 发表于 2011-10-4 21:12:24 | 显示全部楼层
今天完成了CMD的批处理部分
刚调试grub4dos的时候,更新了如下的代码:
代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. ::计算路径长度,变量保存为fd变量截取用
  3. :loop
  4. set /a length+=1
  5. if not "!cd:~%length%,1!" equ "" goto :loop
  6. set /a length+=1
  7. set fd=
  8. set sd=
  9. if exist %cd%\srs\list.txt del %cd%\srs\list.txt
  10. for /f "usebackq" %%i in (`dir %cd%\srs\txtsetup.oem /b /s`) do (
  11. for /f "usebackq delims=," %%j in (`find /i "PCI\VEN" %%i`) do (
  12.    set fd=%%i
  13.    set fd=!fd:~%length%,-12!
  14.    set fd=!fd:\=/!
  15.    set sd=%%j
  16.    set sd=!sd:~6,21!
  17.    echo !fd!,!sd!,>>%cd%\srs\list.txt
  18. )
  19. )
复制代码
目录结构:
  1. D:\WINPE\SRS
  2. │  list.txt

  3. ├─amd
  4. │  └─SB78
  5. │          ahcix86
  6. │          ahcix86.cat
  7. │          ahcix86.inf
  8. │          ahcix86.msi
  9. │          ahcix86.sys
  10. │          txtsetup.oe

  11. ├─intel
  12. │  ├─478
  13. │  ├─775
  14. │  │      iaAHCI.cat
  15. │  │      iaAHCI.inf
  16. │  │      iaStor.cat
  17. │  │      iaStor.inf
  18. │  │      IaStor.sys
  19. │  │      TXTSETUP.OE
  20. │  │
  21. │  └─SNB
  22. │          F6Readme.tx
  23. │          iaahci.cat
  24. │          iaAHCI.inf
  25. │          iastor.cat
  26. │          iaStor.inf
  27. │          iaStor.sys
  28. │          license.txt
  29. │          TXTSETUP.OE

  30. ├─nvidia
  31. │      disk1
  32. │      nvgts.sys
  33. │      nvraid.cat
  34. │      nvraidco.dll
  35. │      NvRCoDa.dll
  36. │      NvRCoDe.dll
  37. │      NvRCoEng.dll
  38. │      NvRCoEnu.dll
  39. │      NvRCoEs.dll
  40. │      NvRCoEsm.dll
  41. │      NvRCoFi.dll
  42. │      NvRCoFr.dll
  43. │      NvRCoIt.dll
  44. │      NvRCoJa.dll
  45. │      NvRCoKo.dll
  46. │      NvRCoNl.dll
  47. │      NvRCoNo.dll
  48. │      NvRCoPtb.dll
  49. │      NvRCoRu.dll
  50. │      NvRCoSv.dll
  51. │      NvRCoZhc.dll
  52. │      NvRCoZht.dll
  53. │      nvrd32.inf
  54. │      nvrd32.sys
  55. │      txtsetup.oem

  56. ├─uli
  57. └─via
复制代码
生成的list.txt内容

  1. srs/amd/SB78/,---- D:\WINPE\SRS\AMD,
  2. srs/amd/SB78/,PCI\VEN_1002&DEV_4392,
  3. srs/amd/SB78/,PCI\VEN_1002&DEV_4391,
  4. srs/amd/SB78/,PCI\VEN_1002&DEV_4393,
  5. srs/amd/SB78/,PCI\VEN_1022&DEV_7802,
  6. srs/amd/SB78/,PCI\VEN_1022&DEV_7801,
  7. srs/amd/SB78/,PCI\VEN_1022&DEV_7803,
  8. srs/intel/775/,---- D:\WINPE\SRS\INT,
  9. srs/intel/775/,PCI\VEN_8086&DEV_2681,
  10. srs/intel/775/,PCI\VEN_8086&DEV_27C1,
  11. srs/intel/775/,PCI\VEN_8086&DEV_27C5,
  12. srs/intel/775/,PCI\VEN_8086&DEV_2821,
  13. srs/intel/775/,PCI\VEN_8086&DEV_2829,
  14. srs/intel/775/,PCI\VEN_8086&DEV_2922,
  15. srs/intel/775/,PCI\VEN_8086&DEV_2929,
  16. srs/intel/775/,PCI\VEN_8086&DEV_3A02,
  17. srs/intel/775/,PCI\VEN_8086&DEV_3A22,
  18. srs/intel/775/,PCI\VEN_8086&DEV_3B29,
  19. srs/intel/775/,PCI\VEN_8086&DEV_3B2F,
  20. srs/intel/775/,PCI\VEN_8086&DEV_3B22,
  21. srs/intel/775/,PCI\VEN_8086&DEV_2682,
  22. srs/intel/775/,PCI\VEN_8086&DEV_27C3,
  23. srs/intel/775/,PCI\VEN_8086&DEV_27C6,
  24. srs/intel/775/,PCI\VEN_8086&DEV_2822,
  25. srs/intel/775/,PCI\VEN_8086&DEV_282A,
  26. srs/intel/SNB/,---- D:\WINPE\SRS\INT,
  27. srs/intel/SNB/,PCI\VEN_8086&DEV_27C1,
  28. srs/intel/SNB/,PCI\VEN_8086&DEV_27C5,
  29. srs/intel/SNB/,PCI\VEN_8086&DEV_2922,
  30. srs/intel/SNB/,PCI\VEN_8086&DEV_2929,
  31. srs/intel/SNB/,PCI\VEN_8086&DEV_3A02,
  32. srs/intel/SNB/,PCI\VEN_8086&DEV_3A22,
  33. srs/intel/SNB/,PCI\VEN_8086&DEV_3B29,
  34. srs/intel/SNB/,PCI\VEN_8086&DEV_3B2F,
  35. srs/intel/SNB/,PCI\VEN_8086&DEV_3B22,
  36. srs/intel/SNB/,PCI\VEN_8086&DEV_1C02,
  37. srs/intel/SNB/,PCI\VEN_8086&DEV_1C03,
  38. srs/intel/SNB/,PCI\VEN_8086&DEV_27C3,
  39. srs/intel/SNB/,PCI\VEN_8086&DEV_27C6,
  40. srs/intel/SNB/,PCI\VEN_8086&DEV_2822,
  41. srs/intel/SNB/,PCI\VEN_8086&DEV_282A,
  42. srs/nvidia/,---- D:\WINPE\SRS\NVI,
  43. srs/nvidia/,PCI\VEN_10DE&DEV_0266,
  44. srs/nvidia/,PCI\VEN_10DE&DEV_0267,
  45. srs/nvidia/,PCI\VEN_10DE&DEV_037E,
  46. srs/nvidia/,PCI\VEN_10DE&DEV_037F,
  47. srs/nvidia/,PCI\VEN_10DE&DEV_036F,
  48. srs/nvidia/,PCI\VEN_10DE&DEV_03F6,
  49. srs/nvidia/,PCI\VEN_10DE&DEV_03F7,
  50. srs/nvidia/,PCI\VEN_10DE&DEV_03E7,
  51. srs/nvidia/,PCI\VEN_10DE&DEV_044C,
  52. srs/nvidia/,PCI\VEN_10DE&DEV_07F8,
  53. srs/nvidia/,PCI\VEN_10DE&DEV_07F9,
  54. srs/nvidia/,PCI\VEN_10DE&DEV_07FA,
  55. srs/nvidia/,PCI\VEN_10DE&DEV_07FB,
  56. srs/nvidia/,PCI\VEN_10DE&DEV_0AD9,
  57. srs/nvidia/,PCI\VEN_10DE&DEV_0AD8,
  58. srs/nvidia/,PCI\VEN_10DE&DEV_0ABD,
  59. srs/nvidia/,PCI\VEN_10DE&DEV_0ABC,
  60. srs/nvidia/,PCI\VEN_10DE&DEV_0BC4,
  61. srs/nvidia/,PCI\VEN_10DE&DEV_0BC5,
复制代码

[ 本帖最后由 hotdll 于 2011-10-6 22:32 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2011-10-4 21:16:54 | 显示全部楼层
接下来研究下如何用chkpci和wenv来实现复制文件到(fd0)的操作。
回复

使用道具 举报

4#
 楼主| 发表于 2011-10-5 00:05:51 | 显示全部楼层

回复 #4 3370123 的帖子

P大的功力太深厚,我看不懂他的代码。
我这个完全是我自己想出来的。
刚把GRUB4DOS的判断驱动实现了。
回复

使用道具 举报

5#
 楼主| 发表于 2011-10-5 09:05:45 | 显示全部楼层
半成品已经出来了。我家的老电脑是NVIDIA的,先把NVIDIA的解决了再说。
C大说的NVIDIA的支持不好,呵呵应该是CHKPCI的问题。哈哈
回复

使用道具 举报

6#
 楼主| 发表于 2011-10-5 10:29:18 | 显示全部楼层
原帖由 chenall 于 2011-10-5 09:44 发表
抓到一个NVIDIA的了,,,,

麻烦测试一下用DPMS生成的驱动是否可以使用。。。。我没有条件测试。

C大,我家的主板是NF550,只有RAID和IDE模式,没有ACHI,可以帮你测试吗?

我这个批处理目前遇到不少问题,帮忙解决下。

[ 本帖最后由 hotdll 于 2011-10-6 22:43 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2011-10-6 22:44:18 | 显示全部楼层
C大,不点大大

我在我家的NF550机器上测试 title如下:
  1. title 【 1 】启动Native TangoPE
  2. F6IMG
  3. map (ud)/BOOT/TangoPE.iso (0xff)
  4. map --rehook
  5. chainloader (0xff)
复制代码
为什么加载F6IMG (见1楼附件),map的时候就提示error 25 : disk read error .
不加载就没事?

但是在别人的机器上又正常?

和解?
grldr为 9.28C大的。
主板是NF550 技嘉M55S 的BIOS

备注:虚拟机测试正常

[ 本帖最后由 hotdll 于 2011-10-6 23:15 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2011-10-7 09:03:25 | 显示全部楼层
原帖由 幸运的草 于 2011-10-7 08:32 发表
楼主,怎么F6IMG后出现一乱码的中文?加载字库并把UD文件列表编码转换为UTF-8,还是乱码?
能否用英文显示?

用ansi编码
回复

使用道具 举报

9#
 楼主| 发表于 2011-10-7 09:04:45 | 显示全部楼层

回复 #15 chenall 的帖子


  1. map (ud)/BOOT/TangoPE.iso (0xff)
  2. F6IMG
  3. map --hook
  4. chainloader (0xff)
复制代码


c大,使用这个命令,(fd0)盘无法加载,我的驱动默认是从(ud)/srs/.....下复制到(fd0)的。

提示还是读取(ud)下的文件错误。

[ 本帖最后由 hotdll 于 2011-10-7 09:26 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2011-10-7 09:28:34 | 显示全部楼层
原帖由 幸运的草 于 2011-10-7 09:11 发表
是ANSI编码,但提示文字乱码,也不知道提示的是啥。
经测试,如果是ZIP格式的UD盘,或者BIOS将U盘识别为ZIP时,如果先F6IMG后,就MAP不成功。出现找不到盘的英文提示。FIND也无返回。
如果先map,后F6IMG,可 ...

我把我用的文件打包给你

  1. timeout 10
  2. default 6
  3. color white/green yellow/green
  4. fontfile (ud)/BOOT/grub/FONTS.GZ
  5. splashimage (ud)/BOOT/GRUB/bg.xpm.gz
  6. title 【 1 】启动Native TangoPE
  7. map (ud)/BOOT/TangoPE.iso (0xff)
  8. map --rehook
  9. F6IMG
  10. chainloader (0xff)
复制代码


Desktop.7z (264.25 KB, 下载次数: 32)
回复

使用道具 举报

11#
 楼主| 发表于 2011-10-7 13:54:39 | 显示全部楼层
原帖由 幸运的草 于 2011-10-7 09:54 发表
是字库的问题,我使用的是UNIFONT字库,是RUN要求使用的字库。
因为很多人使用GFXMENU,不使用字库,建议将提示改用英文,这样兼容性好点。我已经将提示修改为英文。这样不依赖中文字库。

另外,就是请请问 ...

GFXMENU无法做到中文提示,并且我觉得不点说的对。没必要因为GFXMENU去改变grub4dos

这个驱动文件用官方的F6镜像文件解压缩就可以了。可以一个芯片组对应N个目录。通常检测的是最先的目录。方便修改。
回复

使用道具 举报

12#
 楼主| 发表于 2011-10-7 13:56:07 | 显示全部楼层
原帖由 chenall 于 2011-10-7 09:40 发表
你生成SRS驱动时先不要占用(fd0)
可以使用临时的比如(fd2) (fd3)
全部完成后再映射到(fd0),否则肯定出错。

你的U盘启动时是(fd0)你映射一个虚拟内存盘到(fd0)时原来的(fd0)就看不到了。

C大能不能说的再详细一点?
先映射到fd3后,如何再映射到fd0?或者提供哪里找资料?
回复

使用道具 举报

13#
 楼主| 发表于 2011-10-7 15:00:56 | 显示全部楼层
原帖由 <i>幸运的草</i> 于 2011-10-7 14:49 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2316072&ptid=200808" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
我也是这个意思,楼主不同意用英文<br />
但用中文提示就麻烦了,要考虑语言环境了。
<br />
这样吧,我做中文的,你把英文的做好后给我个附件,我放进去呵呵。
我英文很差,怕翻译的别人笑话。所以没敢做。
回复

使用道具 举报

14#
 楼主| 发表于 2011-10-7 15:33:25 | 显示全部楼层
原帖由 chenall 于 2011-10-7 15:17 发表
呵呵,我英文也很差。随便写写,能看懂就行了。

我写的很多英文信息可能都有语法错误,或者单词拼写错误。

嘻嘻,就当是练练英文了。要不然自己都懒得去学习英文。


为什么WINPE不需要按F6就能直接加载驱动,但是装XP的时候却要按F6而不能免按F6呢?
回复

使用道具 举报

15#
 楼主| 发表于 2011-10-8 09:25:35 | 显示全部楼层
原帖由 rockrock99 于 2011-10-8 09:00 发表
貌似新版的grldr不能免F6了

能不能免F6与grldr  有关系没?
回复

使用道具 举报

16#
 楼主| 发表于 2011-10-8 09:30:55 | 显示全部楼层

回复 #33 jasonwang 的帖子

您可能没看清楚我的这个帖子
我的这个批处理就是在grub4dos下实现搜索属于客户机器的SRS驱动并打包成F6镜像。

您肯定是在根目录运行代码了。我马上处理下。
回复

使用道具 举报

17#
 楼主| 发表于 2011-10-11 22:11:52 | 显示全部楼层
原帖由 chenall 于 2011-10-10 21:55 发表
哪里有详细报告,我怎么没有看到?

我只有看到rockrock99的一个报告,可是这个报告有些含糊了,根本不能确定是GRUB4DOS的原因。

而我自己也特意测试了一下是成功的,所以忽略那个报告。

需要有更完整的 ...

在我的电脑上,ZIP问题目前解决不了
SRSF6的也是无法找到驱动
回复

使用道具 举报

18#
 楼主| 发表于 2011-10-12 21:23:18 | 显示全部楼层

回复 #42 cnn_5454 的帖子

我的驱动包是官方的驱动包。不是DP的驱动包。
另外能不能把980A SLI的ACHI ID和RAID的ID 报上来?
?谢谢
回复

使用道具 举报

19#
 楼主| 发表于 2011-10-18 08:34:02 | 显示全部楼层

回复 #44 135956 的帖子

1楼有地址。
PE区有不同的打包组合
回复

使用道具 举报

20#
 楼主| 发表于 2011-10-21 16:58:25 | 显示全部楼层

回复 #47 2011-YLMF 的帖子

成品请移步到PE区。
回复

使用道具 举报

21#
 楼主| 发表于 2011-10-23 13:17:39 | 显示全部楼层

回复 #52 cnn_5454 的帖子

呵呵,我提供的SRS驱动包直接支持。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-21 00:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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