无忧启动论坛

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

【抛砖】提供一个win7pe下快速安装指定驱动的方法!

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-10 15:42:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原理:
第一步
    g4d利用chkpci 查询本机的硬件ID,然后将ID写入仿真盘中的drv.ini文件,格式为:
  1. drvclass,厂商代码,硬件id例如NET,8086,PCI\VEN_8086&DEV_4227
复制代码
第二步
启动到win7pe后,执行drv.cmd 格式为:
[code[
drv.cmd drvclass,驱动包路径 例如:
drv.cmd NET,X:\DRIVERS\

[/code]


drv.cmd可以在桌面上创建快捷方式,将参数写进去。
---------------------------------------------------------------------------------------------------------
g4d部分的代码:
  1. !BAT by  sratlf,hotdll@20120608
  2. checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit
  3. map --mem=0x20000 %~f0 (rd) > nul
  4. cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
  5. calc *0x82d8=*0x82d8-%?% > nul
  6. calc *0x82d0=*0x82d0+%?% > nul
  7. map --mem (rd)+1 (hd) > nul
  8. map --rehook
  9. insmod (hd-1,0)/F6.MOD > nul || exit
  10. echo ;@hotdll > (hd-1,0)/DRV.INI
  11. chkpci -srs | call :get_WHID SRS=
  12. chkpci -net | call :get_WHID NET=
  13. echo ;@sratlf >> (hd-1,0)/DRV.INI

  14. :get_WHID
  15. if "%~2"=="" && exit
  16. set WID=%~2
  17. if /i "%WID:~0,7%"=="PCI\VEN" && set HID=%WID:~0,21% ! shift 2 && goto :get_WHID
  18. echo %1,%HID:~8,4%,%HID% >> (hd-1,0)/DRV.INI \r \n
  19. shift 2 && goto :get_WHID
复制代码
drv.cmd
  1. @echo off
  2. :: %1 指定DEV_CLASS,%2指定驱动路径
  3. :: PECMD调用本批处理的范例,EXEC @=DRV.CMD NET x:\drivers
  4. if "%~1"=="" echo 没有指定驱动类别,按任意键退出... && pause && exit
  5. if "%~2"=="" echo 没有指定驱动路径,按任意键退出... && pause && exit
  6. setlocal enabledelayedexpansion
  7. for /f " delims=, tokens=1-3 eol=;" %%i in (w:\drv.ini) do (
  8.         if /i "%%i"=="%~1" echo %WinDir%\System32\PECMD DEVI *devid:%%k $%~dp2%%i\%%j.CAB
  9. )
复制代码

[ 本帖最后由 hotdll 于 2012-6-10 15:46 编辑 ]
2#
发表于 2012-6-10 15:48:51 | 只看该作者
很强大,顶下先```````
回复

使用道具 举报

3#
发表于 2012-6-10 16:32:45 | 只看该作者
这个方法还是很不错的啊严重支持了。
回复

使用道具 举报

4#
发表于 2012-6-10 20:59:42 | 只看该作者
xp
2003也可以用吧
回复

使用道具 举报

5#
发表于 2012-6-11 01:02:51 | 只看该作者
事先在g4d下检测网卡硬件id留待进pe后使用,这个必要性不大。在可以运行pecmd的环境下获取id太容易了。

在启动阶段就检测网卡id,根据id获取本机专用小体积网卡驱动的事,早年MicroPE、0PE做过。后来废除了。
回复

使用道具 举报

6#
发表于 2012-6-11 08:18:47 | 只看该作者

回复 #6 pseudo 的帖子

P大共享一下方法咯,让菜菜们折腾一下
回复

使用道具 举报

7#
发表于 2012-6-11 09:19:02 | 只看该作者

回复 #7 527104427 的帖子

楼上过谦。

参考“四、关于网卡驱动”:http://bbs.wuyou.net/forum.php?m ... 4242&highlight=

现在有条件更轻松地实现。

如果采用动态内核,可以考虑提前部署专用驱动文件,用windows本身功能(必要时修改注册表)安装驱动(不依赖pecmd),使得进桌面时网络已就绪。

大致流程是:
对于启动后期难以获取网卡驱动包情形(例如pxe启动)
A)先期获取专用驱动包,或含专用驱动小体积驱动包。如果条件允许,也可用大驱动包;
B)适当时机解包部署
通过g4d处理(必要时进入dos),形成含网卡驱动的动态pe内核后启动pe。
或进入native shell时解包部署,形成动态内核后继续启动。
C)pe自行启动网络功能,就像启动装好网络驱动的xp那样,进桌面网络已就绪。
对于启动后期易于获取网卡驱动包情形,获取和部署驱动的工作可以推迟到方便处理的时候。
回复

使用道具 举报

8#
 楼主| 发表于 2012-6-11 09:35:32 | 只看该作者

回复 #8 pseudo 的帖子

希望P大搞个很B的WIN7 WIN8 动态内核出来让我们小菜观摩。

P大还可以更牛X的事先在G4D下搞最小的VGA SYSTE SOUND NET SRS等驱动到某盘让WIN7启动后就有驱动。。。。让我们小菜欣赏欣赏。

P大搞过XPE或者0PE不代表就有资格否定一切。我等P大的0-WIN7-WIN8动态内核的PE。
回复

使用道具 举报

9#
发表于 2012-6-11 09:43:25 | 只看该作者

回复 #8 pseudo 的帖子

除了0PE外,其他的PE根本不可能用这种方法。
因为两类PE走的是不同的“路线”。
四路通北京。各有各的道。


0PE是为G4D而生,也为G4D而死,它是G4D的“种”,离开了G4D根本没法活。而你的这种方法离开G4D是形不通的。
其他传统PE即不是这样,它只是借G4D走个道,即借“鸡”生“蛋”。换句话而言,它们是“微软”的“种”,离了G4D照样子生活。

[ 本帖最后由 幸运的草 于 2012-6-11 09:55 编辑 ]
回复

使用道具 举报

10#
发表于 2012-6-11 11:38:35 | 只看该作者
原帖由 hotdll 于 2012-6-11 09:35 发表
P大搞过XPE或者0PE不代表就有资格否定一切。我等P大的0-WIN7-WIN8动态内核的PE。

惊讶楼主说出“P大搞过XPE或者0PE不代表就有资格”这样的话。
希望论坛里的讨论,面向技术,不涉及“资格”这样针对人的内容。

楼主发帖意在讨论吧。应该不排除否定意见,只容许肯定。
我没有否定一切,我是说,事先在g4d时获取,留到后期用必要性不大。因为在后期获取id很容易。

看到“资格”字样,看来hotdll兄弟又误解我了。也许我也误解了hotdll兄弟。
但相比而言,估计hotdll兄弟误解我的程度估计严重些。说得不对请指正。

原帖由 hotdll 于 2012-6-11 09:35 发表
P大还可以更牛X的事先在G4D下搞最小的VGA SYSTE SOUND NET SRS等驱动到某盘让WIN7启动后就有驱动。。。。让我们小菜欣赏欣赏。

谁去做"在G4D下搞最小的VGA SYSTE SOUND NET SRS等驱动到某盘让WIN7启动后就有驱动"的工作,都是贡献。
但MicroPE/CSPE曾经做过事先部署显卡、网卡驱动的工作,并曾经有成品可欣赏。
了解此先例,“在G4D下搞最小的VGA SYSTE SOUND NET SRS等驱动”就不那么显得“更牛X”了。

了解相关工作,有利于判断价值、可行性和难度,可以借鉴经验吸取教训;
不了解相关工作,照样可以发现新大陆。但不利于全面准确评价发现的价值,有可能是重新发现新大陆而已。
当然重新发现也很好,后来的发现一般比当初有所进步,否定之否定,总是前进。

有人认为了解相关工作反而束缚手脚,有人认为了解相关工作有好处。我理解前一种,但劝他们采纳后一种。

原帖由 hotdll 于 2012-6-11 09:35 发表
希望P大搞个很B的WIN7 WIN8 动态内核出来让我们小菜观摩。

xp/03动态内核现成。
我早说过不玩win7,等着拿现成的。这点hotdll兄弟也知道,却要我搞个很B的win7出来。
莫非hotdll兄弟觉得自己弄的win7很B(“小菜”不是自谦),别人要搞个很B的win7出来,才有“资格”参与讨论、否定某些东西?

动态内核少见,了解的人相对少。动态内核不见得一切比非动态内核好,也不见得一切都不好。
例如加载外置SRS驱动启动pe时,动态内核支持最常见的zip格式打包驱动无需制作软盘镜像。
还有机会采用效率也比较高的驱动注入方式,非动态内核只能采用仿真F6软盘一种方式别无选择。
动态内核的存在是一个参考,让人了解世界多样性,山外有山,那山可能低,也可能高。
回复

使用道具 举报

11#
 楼主| 发表于 2012-6-11 11:57:17 | 只看该作者
原帖由 pseudo 于 2012-6-11 11:38 发表

惊讶楼主说出“P大搞过XPE或者0PE不代表就有资格”这样的话。
希望论坛里的讨论,面向技术,不涉及“资格”这样针对人的内容。

楼主发帖意在讨论吧。应该不排除否定意见,只容许肯定。
我没有否定一切, ...



莫非P大不识字?本帖主题就是win7pe,既不是0pe,也不是xpe。

P大以0PE XPE的角度去否定WIN7PE的驱动问题,岂不是贻笑大方?

另外。P大的回帖没见到有任何实质性的讨论内容,无非就是是说这种方法您是首创罢了。除此之外还有什么?


无非是以下两种情况:
1、继续四处推广您的0PE 宇宙第一。
2、对论坛其他PE或想法持敌对态度。

[ 本帖最后由 hotdll 于 2012-6-11 12:26 编辑 ]
回复

使用道具 举报

12#
发表于 2012-6-11 12:00:45 | 只看该作者
只要讨论,千万别争吵……
回复

使用道具 举报

13#
发表于 2012-6-11 12:24:53 | 只看该作者
纯粹利用HWID来判定硬件,要注意HWID冲突问题。

早期声卡芯片厂商众多,也很混乱。一个HWID多个厂商用,一个厂商的多个产品用同一个HWID,总之各种混乱。驱动安装错误引发的很多蓝屏。

不过现在应该规范了,这个问题应该不复存在了。
回复

使用道具 举报

14#
发表于 2012-6-11 12:48:20 | 只看该作者
回复 #10 幸运的草 的帖子
“其他的PE根本不可能用这种方法”
不然,首先是MicroPE/CSPE,还有zhaohj大的pe,以及一些受zhaohj大影响的pe,都已经或可以用这种方法。
现在pe大多不同程度用到g4d。

回复 #12 hotdll 的帖子
hotdll兄弟误解深,我无语了。
回复

使用道具 举报

15#
发表于 2012-6-11 12:54:55 | 只看该作者
路过看到了,又见哲学。

当一个人觉得自己受到伤害时,他很自然的反应就是抵触和反击。

前不久我就伤害过一个人。我反反复复检查我的帖子,自认为完全没有伤害人的意图。

可是人家就是坚持认为如何如何了(原话是说我 “ 思想有问题 ” ),我并未侥幸得到原谅。

这样的事情是无法避免的。这是理解与沟通方面存在的问题。很常见。
回复

使用道具 举报

16#
发表于 2012-6-11 13:11:01 | 只看该作者
其实没必要争,我觉得这个问题其关键点在于"饭大测试表明,传递Hwind参数给Pecmd,Pecmd能更快的的加载驱动。"

那么问题来了,为什么这样会快一点?pecmd不能取得hwind吗还是pecmd的匹配hwind有问题?关键点在于加载驱动用的是什么程序,该程序处理的流程能否更快一点。也许可以提交给2012abc19701 大大,修改一下pecmd即可。(取hwind很慢吗?程序来做估计也是毫秒级的,慢一定不是出在取hwind上,肯定是处理的流程要优化一下才对)。

pseudo 大大表达的意思其实是:取Hwind不一定要在Grub中,在pecmd加载阶段也可以用其它程序来做。
我基本上赞同,因为这时来做就不用转几个弯了,启动配置也可以简洁一点。

说到底,最主要的还是最好修改一下pecmd的驱动加载方式,或者提供一个快速匹配的模式参数,这样就根本不用外面的程序再给pecmd提供hwind了。
回复

使用道具 举报

17#
 楼主| 发表于 2012-6-11 13:22:57 | 只看该作者

回复 #16 不点 的帖子

躺着也能中枪。。。。。。。
回复

使用道具 举报

18#
发表于 2012-6-11 13:25:44 | 只看该作者

回复 #17 2011mking 的帖子

这个大大的话很在理!
回复

使用道具 举报

19#
发表于 2012-6-11 13:29:11 | 只看该作者
本贴关键在于“快速”,在WIN7PE启动之前由G4D给出本机的HWID。
现在的全能WIN7PE,启动后,可以直接调用驱动精灵之类安装驱动,这些软件类似HWID查询匹配功能,似乎可以不用G4D提前检测了。
回复

使用道具 举报

20#
发表于 2012-6-11 14:05:39 | 只看该作者

回复 #17 2011mking 的帖子、回复 #20 hlstudio 的帖子

在理。
虽然我喜欢玩g4d,但G4D提前检测并留到可以运行pecmd时才用,不大必要。

借助pecmd(或不借助pecmd),怎样更快的加载驱动值得研究,“最好修改一下pecmd的驱动加载方式”。
这与具体是7pe、0pe还是其它pe关系不大,很多东西是同理相通的。
回复

使用道具 举报

21#
发表于 2012-6-11 14:59:09 | 只看该作者
就我的理解,g4d环境下chkpci可以检测出机器的设备iD,配合网上不断更新维护的pcidevs.txt等列表.如www.fuwi.ethz.ch/files/pcidevs.txt更新还是比较及时的。基本每个月都有更新。能够提供和判断一些设备的ID以及名称。这有几种应用的可能,1 整理出本机的设备列表,传递到系统下win或pe,并方便提取驱动或安装驱动,我认为这是可行的。在进入系统前整理好设备型号,可以加快安装驱动的时间。2利用g4d和chkpci配合,来判断机器的主要部件性能,如内存大小,处理器核心数,是否有独立显卡,网卡是否千兆,是否品牌机。这就可以带来很多的实用功能,如检测硬件,根据硬件的不同,采取不同的方式引导pe或引导不同的pe。

[ 本帖最后由 buger 于 2012-6-11 15:01 编辑 ]
回复

使用道具 举报

22#
发表于 2012-6-11 15:49:39 | 只看该作者
弄了个win32下输出Hwid的程序:
LoadDrv /chkpci  或 LoadDrv /chkpci  输出文件路径及名称
没有第二个参数时,默认输出到LoadDrv的所在的目录下,默认名称是hwid.txt

其它用法:
LoadDrv path\*.cab
LoadDrv path\*.inf
其中*也可以用指定的文件名替换。

/chkpci 参数输出示例(现在用的机器上输出的)
acpi\atk0110
acpi\fixedbutton
acpi\genuineintel_-_x86_family_6_model_23
acpi\genuineintel_-_x86_family_6_model_23
acpi\int0800
acpi\pnp0000
acpi\pnp0100
acpi\pnp0103
acpi\pnp0200
acpi\pnp0303
acpi\pnp0501
acpi\pnp0800
acpi\pnp0a08
acpi\pnp0b00
acpi\pnp0c01
acpi\pnp0c01
acpi\pnp0c02
acpi\pnp0c02
acpi\pnp0c02
acpi\pnp0c02
acpi\pnp0c02
acpi\pnp0c04
acpi\pnp0c0c
acpi\pnp0f03
acpi_hal\pnp0c08
monitor\gsm4b6f
monitor\gsm4b6f
hdaudio\func_01&ven_10ec&dev_0662&subsys_1043837f&rev_1001
hid\vid_093a&pid_2510&rev_0100
ide\cdromasus_drw-22b1s__________________________1.01____
ide\diskst3500320as_____________________________sd1a____
isapnp\readdataport
pci\ven_10ec&dev_8136&subsys_83471043&rev_02
pci\ven_8086&dev_244e&subsys_00000000&rev_e1
pci\ven_8086&dev_27b8&subsys_00000000&rev_01
pci\ven_8086&dev_27c0&subsys_81791043&rev_01
pci\ven_8086&dev_27c8&subsys_81791043&rev_01
pci\ven_8086&dev_27c9&subsys_81791043&rev_01
pci\ven_8086&dev_27ca&subsys_81791043&rev_01
pci\ven_8086&dev_27cb&subsys_81791043&rev_01
pci\ven_8086&dev_27cc&subsys_81791043&rev_01
pci\ven_8086&dev_27d0&subsys_00000000&rev_01
pci\ven_8086&dev_27d2&subsys_00000000&rev_01
pci\ven_8086&dev_27d8&subsys_837f1043&rev_01
pci\ven_8086&dev_27da&subsys_81791043&rev_01
pci\ven_8086&dev_27df&subsys_81791043&rev_01
pci\ven_8086&dev_29c0&subsys_00000000&rev_10
pci\ven_8086&dev_29c2&subsys_82b01043&rev_10
intel-27c0
intel-27c0
intel-27df
intel-27df
acpiapic_mp
composite_battery
*fsvga932
root\dmio
root\ftdisk
ms_mmacm
ms_mmdrv
ms_mmmci
ms_mmvcd
ms_mmvid
ms_l2tpminiport
ms_ndiswanip
ms_pppoeminiport
ms_pptpminiport
ms_pschedmp
ms_ptiminiport
root\rdpdr
root\rdp_kbd
root\rdp_mou
root\swenum
root\update
root\mssmbios
vpcsystem
storage\volume
storage\volume
storage\volume
storage\volume
storage\volume
sw\{a7c7a5b0-5af3-11d1-9ced-00a024bf0407}
sw\{b7eafdc0-a680-11d0-96d8-00aa0051e51d}
sw\{cd171de3-69e5-11d2-b56d-0000f8754380}
usb\root_hub&vid8086&pid27cb&rev0001
usb\root_hub&vid8086&pid27ca&rev0001
usb\root_hub&vid8086&pid27c9&rev0001
usb\root_hub&vid8086&pid27c8&rev0001
usb\root_hub20&vid8086&pid27cc&rev0001
usb\vid_03f0&pid_4917&rev_0100
usb\vid_0781&pid_5530&rev_0100
usb\vid_093a&pid_2510&rev_0100
usb\vid_10c4&pid_ea60&rev_0100
usbprint\hewlett-packardhp_la7ffa
usbstor\disksandisk_cruzer__________1.00

LoadDrv.rar

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

回复

使用道具 举报

23#
发表于 2012-6-11 16:37:08 | 只看该作者
原帖由 hotdll 于 2012-6-11 11:57 发表


无非是以下两种情况:
1、继续四处推广您的0PE 宇宙第一。
2、对论坛其他PE或想法持敌对态度。




跟所有的PE制作者如此
你中招是荣幸的
回复

使用道具 举报

24#
发表于 2012-6-11 16:37:15 | 只看该作者
我有MOD了一下,可以映射VEN对应驱动,然后用FORX查找netbj.txt然后安装里面的CAB就行了
全套http://www.ctdisk.com/file/7616714

调用DRV7MOD就行了
只收录了部分网卡驱动
代码:

  1. !BAT by  sratlf,hotdll@20120608
  2. checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit
  3. map --mem=0x20000 %~f0 (rd) > nul
  4. cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
  5. calc *0x82d8=*0x82d8-%?% > nul
  6. calc *0x82d0=*0x82d0+%?% > nul
  7. map --mem (rd)+1 (fd7) > nul
  8. map --rehook
  9. insmod (fd7)/F6.MOD > nul || exit
  10. chkpci -net | call :get_WHID NET %0

  11. :get_WHID
  12. if "%~3"=="" && exit
  13. set WID=%~3
  14. if /i "%WID:~0,7%"=="PCI\VEN" && set HID=%WID:~0,21% ! shift 2 && goto :get_WHID
  15. map --mem %~dp2/DRV/%WID:~8,4%.GZ (hd) && map --e820cycles=3 && map --hook
  16. shift 2 && goto :get_WHID
复制代码
回复

使用道具 举报

25#
发表于 2012-6-11 16:53:34 | 只看该作者

回复 #23 2011mking 的帖子

太棒了!
如果可区分类别(声、显、网等)输出,就完美了。
回复

使用道具 举报

26#
发表于 2012-6-11 17:26:54 | 只看该作者
原帖由 <i>hotdll</i> 于 2012-6-11 09:35 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2461851&ptid=211170" 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 />
希望P大搞个很B的WIN7 WIN8 动态内核出来让我们小菜观摩。<br />
<br />
P大还可以更牛X的事先在G4D下搞最小的VGA SYSTE SOUND NET SRS等驱动到某盘让WIN7启动后就有驱动。。。。让我们小菜欣赏欣赏。<br />
<br />
P大搞过XPE或者0 ...
<br />
支持饭大
论坛某些人以PE教父自居,别人的东西偷学了换个话题就说自己的;讨论什么问题,总是给自己帖子的链接;动不动要给人洗脑、灌输,貌似幼儿园老师出身,笑~~~
敢不敢把解决问题的代码贴出来给大家观摩观摩?
是代码很菜呢还是很菜呢还是很菜呢?
不点大大总是偶尔在这些时候碰巧出现,满口哲学,有失身份啊!
言语失当,冒犯之处请海涵
麻烦楼下继续讨论技术
回复

使用道具 举报

27#
发表于 2012-6-11 17:33:27 | 只看该作者

回复 #23 2011mking 的帖子

这个好,同支持.
需要声/显/网/SRS的,
回复

使用道具 举报

28#
 楼主| 发表于 2012-6-11 17:38:30 | 只看该作者

回复 #23 2011mking 的帖子

终于把玉引来了一块。。。。。。。。。。。。。。。
回复

使用道具 举报

29#
发表于 2012-6-11 17:48:45 | 只看该作者
从硬件ID上是分不出设备是属于网卡还是显卡的。这个好象不统一。
但是,可以输出哪些是未安装成功驱动的。

LoadDrv /NoIns
输出没有安装驱动的硬件ID

LoadDrv.rar

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

回复

使用道具 举报

30#
发表于 2012-6-11 17:50:46 | 只看该作者

回复 #23 2011mking 的帖子

没有来得及揣摩,乍一看你的这个工具与微软官方的DEVCON貌似功能类似。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-2 11:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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