无忧启动论坛
标题: chkpci外部命令检测硬件ID唯一性的讨论 [打印本页]
作者: zhaohj 时间: 2010-10-29 11:24
标题: chkpci外部命令检测硬件ID唯一性的讨论
随着新版grldr的“|”、“>"管道命令已全面支持,chkpci检测硬件ID的应用也已展开,使用中发现以下问题:
1:虚拟机测试,设置虚拟机的硬盘为SCSI硬盘,SRSID.TXT:
PCI$
$PCI\VEN_1000&DEV_0622=symmpi
$PCI\VEN_1000&DEV_0624=symmpi
$PCI\VEN_1000&DEV_0628=symmpi
$PCI\VEN_1000&DEV_0030=symmpi
$PCI\VEN_1000&DEV_0032=symmpi
$PCI\VEN_1000&DEV_0050=symmpi
$PCI\VEN_1000&DEV_0054=symmpi
$PCI\VEN_1000&DEV_0058=symmpi
$PCI\VEN_1000&DEV_005E=symmpi
$PCI\VEN_1000&DEV_0056=symmpi
$PCI\VEN_1000&DEV_005A=symmpi
$PCI\VEN_1000&DEV_0640=symmpi
$PCI\VEN_1000&DEV_0646=symmpi
$PCI\VEN_1000&DEV_0062=symmpi
使用chkpci -cc:01 /SRSID.TXT,得到$PCI\VEN_1000&DEV_0058=symmpi
-------------------------------------
在SRSID.TXT中删除$PCI\VEN_1000&DEV_0058=symmpi
使用chkpci -cc:01 /SRSID.TXT,得到$PCI\VEN_1000&DEV_0054=symmpi
------------------------------------
再在SRSID.TXT中删除$PCI\VEN_1000&DEV_0058=symmpi
使用chkpci -cc:01 /SRSID.TXT,得到$PCI\VEN_1000&DEV_005E=symmpi
------------------------------------
再在SRSID.TXT中删除$PCI\VEN_1000&DEV_005E=symmpi
使用chkpci -cc:01 /SRSID.TXT,得到空
------------------------------------
我在实机intel主板的机器上,开启AHCI,SRSID.TXT:
PCI$
$PCI\VEN_8086&DEV_27C1=IASTOR
$PCI\VEN_8086&DEV_27C3=IASTOR
$PCI\VEN_8086&DEV_27C5=IASTOR
$PCI\VEN_8086&DEV_27C6=IASTOR
$PCI\VEN_8086&DEV_2681=IASTOR
$PCI\VEN_8086&DEV_2682=IASTOR
$PCI\VEN_8086&DEV_2683=IASTOR78
$PCI\VEN_8086&DEV_2821=IASTOR
$PCI\VEN_8086&DEV_2824=IASTOR78
$PCI\VEN_8086&DEV_2829=IASTOR
$PCI\VEN_8086&DEV_5029=IASTOR78
$PCI\VEN_8086&DEV_2922=IASTOR
$PCI\VEN_8086&DEV_2923=IASTOR78
$PCI\VEN_8086&DEV_2822=IASTOR
$PCI\VEN_8086&DEV_282A=IASTOR
$PCI\VEN_8086&DEV_2925=IASTOR78
$PCI\VEN_8086&DEV_2929=IASTOR
$PCI\VEN_8086&DEV_292C=IASTOR
$PCI\VEN_8086&DEV_3A22=IASTOR
$PCI\VEN_8086&DEV_3A02=IASTOR
$PCI\VEN_8086&DEV_3A23=IASTOR
$PCI\VEN_8086&DEV_3A03=IASTOR
$PCI\VEN_8086&DEV_3A05=IASTOR
$PCI\VEN_8086&DEV_3A25=IASTOR
$PCI\VEN_8086&DEV_3B22=IASTOR
$PCI\VEN_8086&DEV_3B23=IASTOR
$PCI\VEN_8086&DEV_3B24=IASTOR
$PCI\VEN_8086&DEV_3B25=IASTOR
$PCI\VEN_8086&DEV_3B29=IASTOR
$PCI\VEN_8086&DEV_3B2B=IASTOR
$PCI\VEN_8086&DEV_3B2C=IASTOR
$PCI\VEN_8086&DEV_3B2F=IASTOR
使用chkpci -cc:01 /SRSID.TXT,得到$PCI\VEN_8086&DEV_3A02=IASTOR
再按上述方法,分别得到:
$PCI\VEN_8086&DEV_3A02=IASTOR,对应ICH10D AHCI(6 Port)
$PCI\VEN_8086&DEV_3A03=IASTOR,对应ICH10 AHCI(4 Port)
$PCI\VEN_8086&DEV_3A05=IASTOR,对应ICH10 SATA RAID;2010
$PCI\VEN_8086&DEV_3A25=IASTOR,对应ICH10R SATA RAID;2010
$PCI\VEN_8086&DEV_3B22=IASTOR,对应PCH 6 Port SATA AHCI Controller
$PCI\VEN_8086&DEV_3B24=IASTOR,对应PCH SATA Enhanced RAID;2010
$PCI\VEN_8086&DEV_3B25=IASTOR,对应PCH SATA RAID;2010
$PCI\VEN_8086&DEV_3B29=IASTOR,对应PCHM 4 Port SATA AHCI Controller
$PCI\VEN_8086&DEV_3B2B=IASTOR,对应PCHM SATA Enhanced RAID;2010
$PCI\VEN_8086&DEV_3B2C=IASTOR,对应PCHM SATA RAID;2010
$PCI\VEN_8086&DEV_3B2F=IASTOR,对应PCHM 6 Port SATA AHCI Controller
空
--------------
这就产生同一硬件发生匹配多个ID的情况,虽然最佳匹配生成一个,但有可能是错误的。
[ 本帖最后由 zhaohj 于 2010-10-29 11:39 编辑 ]
-
照片-0002.jpg
(163.9 KB, 下载次数: 251)
-
照片-0003.jpg
(167.9 KB, 下载次数: 254)
-
照片-0007.jpg
(167.3 KB, 下载次数: 291)
-
照片-0008.jpg
(163.46 KB, 下载次数: 233)
作者: dvd008 时间: 2010-10-29 12:47
现在的F6模块不好用?
这个有什么优势?
作者: pseudo 时间: 2010-10-29 13:57
原帖由 zhaohj 于 2010-10-29 11:24 发表 
随着新版grldr的“|”、“>"管道命令已全面支持,chkpci检测硬件ID的应用也已展开,使用中发现以下问题:
1:虚拟机测试,设置虚拟机的硬盘为SCSI硬盘,SRSID.TXT:
PCI$
$PCI\VEN_1000&DEV_0622=symmpi
$PC ...
再在SRSID.TXT中删除$PCI\VEN_1000&DEV_0058=symmpi
使用chkpci -cc:01 /SRSID.TXT,得到$PCI\VEN_1000&DEV_005E=symmpi
...
grub4dos外部命令chkpci是没问题的。楼主遇到的现象也是合理的。
chkpci已经在0PE里实际应用:
可选SRS驱动库,驱动的智能选择与手动选择机制
通用镜像启动器、通用F6模块(2010-10-22)9MB.rar
关键在于楼主的SRSID.TXT格式不当。可以直接用0PE所带的/SRS/CHKPCI.TXT试试。
[ 本帖最后由 pseudo 于 2010-10-29 14:01 编辑 ]
作者: zhaohj 时间: 2010-10-29 14:27
我想法改成这种格式:
PCI$
$PCI\VEN_1000&DEV_0622
PCI\VEN_1000&DEV_0622=symmpi
$PCI\VEN_1000&DEV_0624
PCI\VEN_1000&DEV_0624=symmpi
$PCI\VEN_1000&DEV_0628
PCI\VEN_1000&DEV_0628=symmpi
$PCI\VEN_1000&DEV_0030
PCI\VEN_1000&DEV_0030=symmpi
$PCI\VEN_1000&DEV_0032
PCI\VEN_1000&DEV_0032=symmpi
$PCI\VEN_1000&DEV_0050
PCI\VEN_1000&DEV_0050=symmpi
$PCI\VEN_1000&DEV_0054
PCI\VEN_1000&DEV_0054=symmpi
$PCI\VEN_1000&DEV_0058
PCI\VEN_1000&DEV_0058=symmpi
$PCI\VEN_1000&DEV_005E
PCI\VEN_1000&DEV_005E=symmpi
$PCI\VEN_1000&DEV_0056
PCI\VEN_1000&DEV_0056=symmpi
$PCI\VEN_1000&DEV_005A
PCI\VEN_1000&DEV_005A=symmpi
$PCI\VEN_1000&DEV_0640
PCI\VEN_1000&DEV_0640=symmpi
$PCI\VEN_1000&DEV_0646
PCI\VEN_1000&DEV_0646=symmpi
$PCI\VEN_1000&DEV_0062
PCI\VEN_1000&DEV_0062=symmpi
-------------
使用chkpci -cc:01 /srsid.txt得到PCI\VEN_1000&DEV_0054=symmpi,正确。
-----------------------
删除
$PCI\VEN_1000&DEV_0054
PCI\VEN_1000&DEV_0054=symmpi
使用chkpci -cc:01 /srsid.txt得到空,这样子也正确,说明目前应该按这种格式。
----------------------------
C大能不能改一下,把格式改成:
PCI$
$PCI\VEN_1000&DEV_0622=symmpi
$PCI\VEN_1000&DEV_0624=symmpi
$PCI\VEN_1000&DEV_0628=symmpi
$PCI\VEN_1000&DEV_0030=symmpi
找到某个匹配,就输出这行。这样看起来爽气一点。
另:匹配ID输出是必需的。
[ 本帖最后由 zhaohj 于 2010-10-29 16:01 编辑 ]
作者: zhaohj 时间: 2010-10-29 15:59
最终看C大定夺了。
目前的方法,自己用程序处理也简单,不过C大少许一改,我们轻松多了。
已经做好了SRSID2.LST、SIF2.LST、OEM2.LST(原SRSID.TXT、TXTSETUP.SIF、TXTSETUP.OEM转CHKPCI格式),GRUB4DOS下处理速度实在是太快了。
作者: zhaohj 时间: 2010-10-29 16:06
原帖由 dvd008 于 2010-10-29 12:47 发表 
现在的F6模块不好用?
这个有什么优势?
最大的优势是可以不要DOS了,兼容性就大大提高。
而且100%返回到启动设备。
作者: chenall 时间: 2010-10-29 22:01
这样子就失去了灵活性。
目前的格式虽然编写会麻烦一点(也只是多写一行而已),但是很灵活。
因为我不知道你最终的目的是什么,所以我无法给你其它答复。
作者: zhaohj 时间: 2010-10-29 22:47
原帖由 chenall 于 2010-10-29 22:01 发表 
这样子就失去了灵活性。
目前的格式虽然编写会麻烦一点(也只是多写一行而已),但是很灵活。
因为我不知道你最终的目的是什么,所以我无法给你其它答复。
最终的结果是输出:id 、驱动名
形如:
PCI\VEN_1000&DEV_0622=symmpi
作者: jianliulin 时间: 2010-10-29 23:32
好期待,这样不用进系统就能测试驱动是否支持!!!!
作者: zhaohj 时间: 2010-10-30 16:55
SRSID.TXT:
PCI$
$PCI\VEN_8086&DEV_7111
intelide
$PCI\VEN_1000&DEV_0054
LSI_SAS
...
------------------
chkpci -cc:01 /SRSID.TXT 得到
intelide
LSI_SAS
虚拟机测试,实机可能很少会发生。
[ 本帖最后由 zhaohj 于 2010-10-30 16:58 编辑 ]
作者: Plantsoot 时间: 2010-10-30 17:10
C大可以给个特殊的参数,如果加上那个特殊参数,就满足z大的需求,就可以了。不知可行否。
作者: zhaohj 时间: 2010-10-30 18:06
现在采取这样的办法:如果有多个匹配,取最后一个。哈哈,没办法的办法。
本来比较简单:chkpci -cc:01 /srsid.txt | wenv set a=
有多个匹配: chkpci -cc:01 /srsid.txt > (fd0)TEMP
wenv for /f %i in ( (fd0)/TEMP ) do (...)
[ 本帖最后由 zhaohj 于 2010-10-30 18:11 编辑 ]
作者: dvd008 时间: 2010-10-30 18:38
差不多了就放出来,正准备刻盘呢
作者: jianliulin 时间: 2010-10-30 21:48
顶!!!,很多人都等着测试!!!
作者: hhh333 时间: 2010-10-30 22:10
如果grub4dos支持JPG或PNG文件,再加chkpci、wenv、fbinst等,其他的如ms、eb、syslinux、avldr这些装载器等都可以不要了!
作者: zhaohj 时间: 2010-10-31 01:56
原帖由 dvd008 于 2010-10-30 18:38 发表 
差不多了就放出来,正准备刻盘呢
别急,这几天肯定能放出,至少自己先测试通过。主要的几个模块已全部通过,再拼装一下。
驱动不算,几个LST加外部命令,不到100k,计算速度实在太快了。
作者: sgw888 时间: 2010-10-31 09:16
支持 ZHAOHJ,一直在关注SRS F6,现在终于可以脱离DOS了,以前一直对进入DOS觉得不妥,现在终于有希望完全脱离DOS了.
作者: jianliulin 时间: 2010-10-31 09:49
原帖由 sgw888 于 2010-10-31 09:16 发表 
支持 ZHAOHJ,一直在关注SRS F6,现在终于可以脱离DOS了,以前一直对进入DOS觉得不妥,现在终于有希望完全脱离DOS了.
同感 ·
作者: zhhsh 时间: 2010-10-31 11:30
支持一下zhaohj,这样没有了dos环境,就不用担心版权问题,完善了以后发布到bootland
到时我再修改一下,增加一个菜单,供用户把XP安装到一个文件当中
[ 本帖最后由 zhhsh 于 2010-10-31 11:33 编辑 ]
作者: zhaohj 时间: 2010-11-1 00:12
差不多搞好了,一不小心远程电脑定时时间到了自动关闭,如果11.1不太忙,放出测试版。
目前对OEM驱动的处理不太满意,主要是FAT命令目前不支持通配符*,PXE启动又无法列表,就简化处理了。
作者: chenall 时间: 2010-11-1 14:49
前几天都比较忙,只是偶尔上来一下.
支持zhaohj..
关于chkpci有什么需要改进的,我尽量吧.其实你们也可以自己改的,嘿嘿,懂点C语言其实并不难.
作者: chenall 时间: 2010-11-1 14:50
原帖由 zhaohj 于 2010-10-30 16:55 发表 
SRSID.TXT:
PCI$
$PCI\VEN_8086&DEV_7111
intelide
$PCI\VEN_1000&DEV_0054
LSI_SAS
...
------------------
chkpci -cc:01 /SRSID.TXT 得到
intelide
LSI_SAS
虚拟机测试,实机可能很少会发生。
好像看起来没有什么不正常呀..
你可以直接执行不加参数的chkpci显示所有ID列表来对比一下.
作者: zhaohj 时间: 2010-11-1 15:18
是正常的,但如果匹配出两个驱动,肯定得两选一,或者得改一下驱动了。
chkpci我还是喜欢这样的格式:
PCI$
$PCI\VEN_8086&DEV_7111=intelide
$PCI\VEN_1000&DEV_0054=LSI_SAS
匹配后就显示本行($除外)
作者: Plantsoot 时间: 2010-11-1 15:51
原帖由 chenall 于 2010-11-1 14:49 发表 
前几天都比较忙,只是偶尔上来一下.
支持zhaohj..
关于chkpci有什么需要改进的,我尽量吧.其实你们也可以自己改的,嘿嘿,懂点C语言其实并不难.
我倒是有兴趣,可以简单介绍下开发环境和工具吗?
作者: chenall 时间: 2010-11-1 15:53
原帖由 Plantsoot 于 2010-11-1 15:51 发表 
我倒是有兴趣,可以简单介绍下开发环境和工具吗?
你可以看一下.
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=159851&page=30#pid2050744
作者: chenall 时间: 2010-11-1 15:54
原帖由 zhaohj 于 2010-11-1 15:18 发表 
是正常的,但如果匹配出两个驱动,肯定得两选一,或者得改一下驱动了。
chkpci我还是喜欢这样的格式:
PCI$
$PCI\VEN_8086&DEV_7111=intelide
$PCI\VEN_1000&DEV_0054=LSI_SAS
匹配后就显示本行($除外)
我再加一个参数实现这样的输出好了.
作者: chenall 时间: 2010-11-1 16:29
原帖由 zhaohj 于 2010-11-1 15:18 发表 
是正常的,但如果匹配出两个驱动,肯定得两选一,或者得改一下驱动了。
chkpci我还是喜欢这样的格式:
PCI$
$PCI\VEN_8086&DEV_7111=intelide
$PCI\VEN_1000&DEV_0054=LSI_SAS
匹配后就显示本行($除外)
试试刚刚上传的版本.
添加了一个参数(字母的o)-o
应该可以满足你的要求,你试一下.
作者: chenall 时间: 2010-11-1 16:30
原帖由 friend8179 于 2010-11-1 15:56 发表 
是直接在linux用GCC命令编译的?
嗯.
/*
* compile:
gcc -nostdlib -fno-zero-initialized-in-bss -fno-function-cse -fno-jump-tables -Wl,-N -fPIE chkpci.c
* disassemble: objdump -d a.out
* confirm no relocation: readelf -r a.out
* generate executable: objcopy -O binary a.out chkpci
*
*/
作者: zhaohj 时间: 2010-11-1 17:33
原帖由 chenall 于 2010-11-1 16:29 发表 
试试刚刚上传的版本.
添加了一个参数(字母的o)-o
应该可以满足你的要求,你试一下.
好啊,但没通过,chkpci -cc:01 -o /SRS/SRSID.TXT
-
Snap1.jpg
(49.89 KB, 下载次数: 222)
作者: Plantsoot 时间: 2010-11-1 17:34
标题: 回复 #25 chenall 的帖子
多谢Chenall兄,果然是linux环境下的C语言编程。
作者: chenall 时间: 2010-11-1 18:33
@zhaohj
弄错了,已经修改重新上传.
另外可以顺便测试一下这个测试的GRLDR,应该会有些用处.
加了 >> 操作符(不改变文件大小).
比如(test.txt文件已经存在,并且有足够的大小)
//第一句写入abcd\0
echo abcd > (hd0,0)/test.txt
//接在abcd后面写入.
echo def >> (hd0,0)/test.txt
echo 1234 >> (hd0,0)/test.txt
得到的test.txt里面的开头内容会是
abcddef1234
使用了一个字符串的结束符号"\0"(十六进制的0)分隔(不清楚的就不用管这个了这是程序的内部处理机制.了解C语言编程的就比较清楚).
[ 本帖最后由 chenall 于 2010-11-1 23:25 编辑 ]
-
-
grldr_test.rar
115.95 KB, 下载次数: 62, 下载积分: 无忧币 -2
作者: zhaohj 时间: 2010-11-1 22:22
>>太有用了,在我刚发布的SRSF6测试版中,为了写入字符串到文本,花费了很多精力。很大一部分是计算上下行的指针的,即--offset。
另:这个转义符“\”也特难处理。
作者: chenall 时间: 2010-11-1 23:23
原帖由 zhaohj 于 2010-11-1 22:22 发表 
>>太有用了,在我刚发布的SRSF6测试版中,为了写入字符串到文本,花费了很多精力。很大一部分是计算上下行的指针的,即--offset。
另:这个转义符“\”也特难处理。
有没有什么例子,或许可以通过编程手段来简化处理的工作.
作者: zhaohj 时间: 2010-11-1 23:31
新版chkpci及grldr新功能测试都通过,这下省力多了。
还有一个问题很难处理:如果一个变量值中存在转义符'\",很难处理。当初用“\”做转义符真是一个错误。
希望有一个功能,这个“\"转义符能用其他代替(或切换),如%
如wenv set a=$PCI\VEN_1000&DEV_0054
wenv echo ${a} >> (fd1)/srsid.txt
[ 本帖最后由 zhaohj 于 2010-11-1 23:38 编辑 ]
-
Snap1.jpg
(45.93 KB, 下载次数: 168)
作者: chenall 时间: 2010-11-1 23:57
原帖由 zhaohj 于 2010-11-1 23:31 发表 
新版chkpci及grldr新功能测试都通过,这下省力多了。
还有一个问题很难处理:如果一个变量值中存在转义符'\",很难处理。当初用“\”做转义符真是一个错误。
希望有一个功能,这个“\"转义符能用其他代替( ...
任何事物都有两面的,呵呵.
关于echo我们可以加个参数控制它让不转义..
作者: zhaohj 时间: 2010-11-2 00:09
wenv中,tuxw加入的新功能还是不错的,loop、break、switch
switch已加入echo控制换行功能。
C大如果更新,希望加入loop、break。
作者: chenall 时间: 2010-11-2 00:20
原帖由 zhaohj 于 2010-11-2 00:09 发表 
wenv中,tuxw加入的新功能还是不错的,loop、break、switch
switch已加入echo控制换行功能。
C大如果更新,希望加入loop、break。
已经上传了新版WENV.我最近没有多少时间,就不整合了.你也可以等待tuxw的更新.
只是对echo命令进行了扩展,默认不允许转义输出.并且自动加回车符.
1).-e 允许转义输出.
比如\n是一个回车。
2).-n 输出不自动加回车符.
作者: zhaohj 时间: 2010-11-2 10:22
今天测试了Intel芯片组的SRS驱动,其中有:
$PCI\VEN_8086&DEV_3A22=IASTOR
$PCI\VEN_197B&DEV_2368=PCIIDE
...
检测的结果应该是正常的,但PCIIDE驱动是BUS驱动,AHCI并不需要它。对驱动不是很了解,想法是程序能否设别这个是BUS驱动并能控制输出?
我们的目的主要是AHCI\RAID有关的ID信息。
作者: chenall 时间: 2010-11-2 15:40
你应该显示一下chkpci不太带数的ID列表,看看是否有什么区别.
作者: zhaohj 时间: 2010-11-2 17:17
原帖由 chenall 于 2010-11-2 15:40 发表 
你应该显示一下chkpci不太带数的ID列表,看看是否有什么区别.
不带参数的ID列表,也是输出两行。
现在的问题是:如果是IDE硬盘,chkpci不太带数的ID列表会输出Bus驱动的ID
如果是ahci/raid硬盘,chkpci不太带数的ID列表除了输出Bus驱动的ID,再输出ahci/raid的ID。
我想这是有问题的。
作者: chenall 时间: 2010-11-2 18:05
原帖由 zhaohj 于 2010-11-2 17:17 发表 
不带参数的ID列表,也是输出两行。
现在的问题是:如果是IDE硬盘,chkpci不太带数的ID列表会输出Bus驱动的ID
如果是ahci/raid硬盘,chkpci不太带数的ID列表除了输出Bus驱动的ID,再 ...
没能明白具体的意思,最好是能上图.
作者: zhaohj 时间: 2010-11-2 18:56
简单地讲,怎样排除非AHCI/RAID的ID
比如虚拟机VM,硬盘是SCSI,lsi_1068
下面的PCI\VEN_8086&DEV_7111是bus驱动的ID,这个只有IDE硬盘上才有的,我们并不需要。
象内置的驱动库txtsetup.sif中包含有PCI\VEN_8086&DEV_7111=pciide,这样有可能识别成pciide驱动。
虽然CHKPCI检测并输出了两个ID,但我们怎样去判断下面两个其中哪个是我们需要的呢?
[ 本帖最后由 zhaohj 于 2010-11-2 19:04 编辑 ]
-
Snap1.jpg
(89.76 KB, 下载次数: 164)
作者: chenall 时间: 2010-11-2 19:46
这个也许可以加一个参数比如-sc:xx (sub-class)位.
作者: zhaohj 时间: 2010-11-2 22:22
是的,需要这个参数。
如:
CSPE,可以使用txtsetup.sif类的内置驱动,原DOS下处理能识别出唯一(或没有)的匹配ID的驱动。
作者: chenall 时间: 2010-11-2 23:26
好了.加了一个-sc参数.要配合-cc使用,否则参数无效.
作者: zhaohj 时间: 2010-11-3 00:27
原帖由 chenall 于 2010-11-2 23:26 发表 
好了.加了一个-sc参数.要配合-cc使用,否则参数无效.
竟然不会使用,能否举例说明。或许是bug
作者: chenall 时间: 2010-11-3 00:42
一个例子
显示所有SCSI控制器ID
chkpci -cc:1 -sc:0
显示所有RAID控制器ID
chkpci -cc:1 -sc:4
相关的资料可以看我的搏客上class code的介绍.
嗯,看来还得再增强一个参数.需要允许指定多个比如
chkpci -cc:1 -sc:1,4 (目前还不支持)
[ 本帖最后由 chenall 于 2010-11-3 01:03 编辑 ]
作者: zhaohj 时间: 2010-11-3 00:47
好像获取的ID相反了
下面chkpci -cc:01 -sc:1 应该得到PCI\VEN_1000&DEV_0030
[ 本帖最后由 zhaohj 于 2010-11-3 00:49 编辑 ]
-
Snap1.jpg
(42.52 KB, 下载次数: 152)
作者: chenall 时间: 2010-11-3 01:03
这个没错,是我前面贴子写错了.
SCSI应该是
chkpci -cc:1 -sc:0
作者: zhaohj 时间: 2010-11-3 01:11
正确了,明天得好好看一下上class code的介绍。
不早了,你也该休息了。晚安!
----------------------------------------
做个标志,从下面图中我们需要的class 0x01 对应的 sub-class仅需要0x00、0x04
即chkpci -cc:01 -sc:0,4
[ 本帖最后由 zhaohj 于 2010-11-3 08:43 编辑 ]
作者: zhaohj 时间: 2010-11-3 08:24
| |
| Devices built before class codes (i.e. pre PCI 2.0) |
| |
| |
| |
| |
| |
| |
| Simple communications controllers |
| |
| |
| |
| |
| |
| |
| |
| | |
| | All devices other than VGA |
| | |
Class Code 1: Mass Storage Controllers
| | |
| | |
| | IDE controller. The Prog I/F is defined as follows: | | | | | Programmable indicator (primary) | | Operating mode (secondary) | | Programmable indicator (secondary) | | | | |
|
| | |
| | |
| | |
| | Other mass storage controller |
Class Code 2: Network Controllers
| | |
| | |
| | |
| | |
| | |
| | Other network conteroller |
Class Code 3: Display Controllers
| | |
| | VGA compatable controller. Has mapping for 0xA0000..0xBFFFF and io addresses 0x3B0..0x3BB. |
| |
| | |
| | |
Class Code 4: Multimedia Devices
Class Code 5: Memory Controllers
Class Code 6: Bridge Devices
Class Code 7: Simple Communications Controllers
| | |
| | Generic XT compatable serial controller |
| 16450 compatable serial controller |
| 16550 compatable serial controller |
| | |
| Bi-directional parallel port |
| |
| | Other commonications device |
Class Code 8: Base System Peripherals
| | |
| | Generic 8259 programmable interrupt controller (PIC) |
| |
| |
| | Generic 8237 DMA controller |
| |
| |
| | |
| |
| |
| | |
| |
| | |
Class Code 9: Input Devices
Class Code A: Docking Stations
| | |
| | |
| | Other type of docking station |
Class Code C: Serial Bus Controllers
| | |
| | |
| | |
| | SSA (Serial Storage Architecture) |
| | USB (Universal Serial Bus) |
[ 本帖最后由 zhaohj 于 2010-11-3 08:27 编辑 ]
作者: zoom4ever 时间: 2010-11-3 11:17
-cc:01 -sc:06 ahci?
作者: chenall 时间: 2010-11-3 15:16
OK,已经上传新版CHKPCI..
cc和sc参数支持列表使用","分隔,最多允许4个.
现在可以通过以下命令显示所有SCSI/RAID 的ID了
chkpci -cc:1 -sc:0,4
作者: jianliulin 时间: 2010-11-3 15:37
原帖由 chenall 于 2010-11-3 15:16 发表 
OK,已经上传新版CHKPCI..
cc和sc参数支持列表使用","分隔,最多允许4个.
现在可以通过以下命令显示所有SCSI/RAID 的ID了
chkpci -cc:1 -sc:0,4
能否把 chkpci -cc:1 -sc:0,4 简化为:chkpci --hd ,今后遇到启动不了的电脑,就可以方便的输入命令查询其磁盘ID
[ 本帖最后由 jianliulin 于 2010-11-3 15:40 编辑 ]
作者: chenall 时间: 2010-11-3 15:40
原帖由 jianliulin 于 2010-11-3 15:37 发表 
能否把 chkpci -cc:1 -sc:0,4 简化为:chkpci --hd
这样看着很容易发生误解.而且这些对于一般用户来说是不需要关心的.
如果要加使用-srs可能更直观
作者: jianliulin 时间: 2010-11-3 15:50
原帖由 chenall 于 2010-11-3 15:40 发表 
这样看着很容易发生误解.而且这些对于一般用户来说是不需要关心的.
如果要加使用-srs可能更直观
嗯,比较直观,反正简单点就行,估计使用chkpci 就是用来搞srs驱动,或者C大专门弄一个外置命令给srs驱动专用,
[ 本帖最后由 jianliulin 于 2010-11-3 15:52 编辑 ]
作者: chenall 时间: 2010-11-3 16:00
好了,重新上传了..
添加了三个比较直观的参数.用于显示特定的驱动(因为简化编程,所以不可以同时使用,也不要和CC/SC参数一起使用)
-srs -net -vga
作者: zhaohj 时间: 2010-11-3 17:25
有问题,SCSI没出现:
-
Snap1.jpg
(43.69 KB, 下载次数: 160)
作者: chenall 时间: 2010-11-3 20:58
原帖由 zhaohj 于 2010-11-3 17:25 发表 
有问题,SCSI没出现:
看起来没有问题吧.应该是你的虚拟机没有SCSI驱动.
作者: zhaohj 时间: 2010-11-4 08:07
原帖由 chenall 于 2010-11-3 20:58 发表 
看起来没有问题吧.应该是你的虚拟机没有SCSI驱动.
现在只有不带-sc参数的正常,-sc:1正常,-sc:0,4都不正常
我在INTEL开启ahci的机器上,使用chkpci -cc:01 -sc:0,4也找不到ID
[ 本帖最后由 zhaohj 于 2010-11-4 08:23 编辑 ]
-
Snap1.jpg
(45.17 KB, 下载次数: 181)
-
Snap1.jpg
(65.09 KB, 下载次数: 158)
作者: zhaohj 时间: 2010-11-4 11:57
记得2010-11-02上传的 5点左右 的版本是好的,后来11-02版本被覆盖,自己也没有保留。
作者: zoom4ever 时间: 2010-11-4 11:59
标题: 回复 #61 zhaohj 的帖子
chkpci -srs 应该就是 chkpci -cc:01 -sc:0,4的简写吧?
INTEL AHCI 应该是chkpci -cc:01 -sc:06吧?
应该是没错吧?
作者: chenall 时间: 2010-11-4 12:00
@zhaohj
我还是没有看出异常..
你用chkpci不带任何参数试试看能不能看到,换旧版不带参数的执行看看有没有区别
后面chkpci -srs
chkpci -cc:01 -sc:0,4
没有任何显示也是正常的.因为根本就没有符合条件的ID.
作者: zhaohj 时间: 2010-11-4 12:06
可以这样简单测试:
chkpci -cc:01 ;显示所有的ID信息
chkpci -cc:01 -sc:0,1,2,3,4,128 ;这条命令与上面结果应该一样,实际测试结果不同
-
Snap2.jpg
(39.41 KB, 下载次数: 237)
作者: zoom4ever 时间: 2010-11-4 12:09
可能是zhaohj以为 chkpci -srs 能检测是intel AHCI呢吧? 这个chkpci -cc:01 -sc:0,4应该就是chkpci -srs的简写吧 ACHI应该是cc_0106 所以要用chkpci --cc:01 sc:06
作者: zhaohj 时间: 2010-11-4 12:11
原帖由 zoom4ever 于 2010-11-4 12:09 发表 
可能是zhaohj以为 chkpci -srs 能检测是intel AHCI呢吧? 这个chkpci -cc:01 -sc:0,4应该就是chkpci -srs的简写吧 ACHI应该是cc_0106 所以要用chkpci --cc:01 sc:06
你误解了
Class Code 1: Mass Storage Controllers
Sub-Class
| Prog. I/F
| Description
|
0x00
| 0x00
| SCSI Controller
|
0x01
| 0xXX
| IDE controller. The Prog I/F is defined as follows:
bits
| Desc
| 0
| Operating mode (primary)
| 1
| Programmable indicator (primary)
| 2
| Operating mode (secondary)
| 3
| Programmable indicator (secondary)
| 6..4
| Reserved (zero)
| 7
| Master IDE device
|
|
0x02
| 0x00
| Floppy disk controller
|
0x03
| 0x00
| IPI controller
|
0x04
| 0x00
| RAID controller
|
0x80
| 0x00
| Other mass storage controller
|
作者: zoom4ever 时间: 2010-11-4 12:12
标题: 回复 #67 zhaohj 的帖子
但是为什么AHCI后面sub-class 是06呢?我机器的硬件ID:PCI\VEN_8086&DEV_3A22&CC_010601 所以chkpci -srs 根本显示不出来~
[ 本帖最后由 zoom4ever 于 2010-11-4 12:15 编辑 ]
作者: chenall 时间: 2010-11-4 12:13
还是没有看出来区别...
-sc:0,4只显示sub-class的id为00,04的ID,可是很明显根本就没有这样的ID.
另外看你上面的图片显示出来的ID和以前显示出来的ID是不一样的,可能是你修改了配置?
还有发现一个sub-class id =7的,这个不在-SRS参数列表中.-srs只有0,4
7的难道就是AHCI?
[ 本帖最后由 chenall 于 2010-11-4 12:17 编辑 ]
作者: chenall 时间: 2010-11-4 12:18
原帖由 zoom4ever 于 2010-11-4 12:12 发表 
但是为什么AHCI后面sub-class 是06呢?我机器的硬件ID:PCI\VEN_8086&DEV_3A22&CC_010601 所以chkpci -srs 根本显示不出来~
因为-src只检测0,4的6不在列表中.
可能是新的规范.
作者: chenall 时间: 2010-11-4 12:25
再查了一下相关资料,-srs还得再加两个(SATA的)ID.6和7
(clase:$01;subclass:$06;progif:$00;name:'Serial ATA'),
(clase:$01;subclass:$06;progif:$01;name:'Serial ATA (AHCI 1.0)'),
(clase:$01;subclass:$07;progif:$00;name:'Serial Attached SCSI'),
作者: zhaohj 时间: 2010-11-4 12:25
麻烦大了,虚拟机测试,竟然是0x7
-
Snap1.jpg
(48.85 KB, 下载次数: 220)
作者: zoom4ever 时间: 2010-11-4 12:38
实机的AHCI应该是06
作者: chenall 时间: 2010-11-4 13:49
重新上传了.
-srs 参数添加了两个SATA/AHCI的ID.
作者: zhaohj 时间: 2010-11-4 16:06
终于可以了,万分感谢!
作者: zhaohj 时间: 2010-11-17 13:02
呵呵,可能有误,抱歉,正在测试新版grldr...
[ 本帖最后由 zhaohj 于 2010-11-17 17:30 编辑 ]
作者: zhaohj 时间: 2011-7-1 18:10
下面的网卡驱动,chkpci需要加强:
-
Snap1.jpg
(17.45 KB, 下载次数: 244)
作者: chenall 时间: 2011-7-2 08:19
标题: 回复 #77 zhaohj 的帖子
这个应该也有类似PCI\VEN_XXXX&DEV_XXXX的形式的。
驱动INF文件中应该可以找到。另外你可以把CHKPCI检测的结果贴上来。
我刚下载了一个这个驱动看了一下,实际上它的驱动ID是。
pci\ven_14e4&dev_163b
[ 本帖最后由 chenall 于 2011-7-2 08:28 编辑 ]
作者: zhaohj 时间: 2011-7-2 13:21
原帖由 chenall 于 2011-7-2 08:19 发表 
这个应该也有类似PCI\VEN_XXXX&DEV_XXXX的形式的。
驱动INF文件中应该可以找到。另外你可以把CHKPCI检测的结果贴上来。
我刚下载了一个这个驱动看了一下,实际上它的驱动ID是。
pci\ven_14e4&dev_163b
今天休息天,实机在服务器上操作了一下
chkpci -net
结果确实是:
PCI\VEN_14E4&DEV_163B&SUBSYS_028C1028
=====================
提取这样的驱动还真不易。
作者: zhaohj 时间: 2011-7-22 11:30
目前还不能检测nv芯片组
*_NVRAIDBUS="NVRAID"
*NVRAIDBUS="NVRAID"
SCSI\NVIDIA__RAID_DISK________="NVRD32"
SCSI\NVIDIA__RAID_DISK_20_____="NVRD32"
SCSI\__NVIDIA_______RAID_DISK="NVRD32"
SCSI\__NVIDIA____RAID_DISK_20= ...
作者: chenall 时间: 2011-7-22 16:25
标题: 回复 #80 zhaohj 的帖子
应该是和上面的驱动一样,这些ID电脑应该是无法检测的,需要安装它的一个驱动之后由它的驱动提供的.
作者: 21212121 时间: 2011-8-10 13:47
但是我的阵列卡是
PCI\VEN_105A&DEV_3574
这些是我的驱动盘里面看到的信息
可是我的命令下看到的是
pci\VEN_8086&DEV_269E&SUBSYS_00009..
pci\VEN_8086&DEV_2680&SUBSYS_00009..
很明显不对啊
作者: 21212121 时间: 2011-8-10 15:21
但是我的阵列卡是TX4310
PCI\VEN_105A&DEV_3574
这些是我的驱动盘里面看到的信息
可是我的命令下看到的是
pci\VEN_8086&DEV_269E&SUBSYS_00009..
pci\VEN_8086&DEV_2680&SUBSYS_00009..
很明显不对啊
作者: zhaohj 时间: 2011-8-10 15:30
PCI\VEN_8086开头的明显是IDE的驱动,说明你的阵列卡没有检测到
作者: 21212121 时间: 2011-8-10 16:01
是啊 为啥呢?但是我用自己增加阵列卡驱动的PE,进入PE能看到磁盘的
作者: 21212121 时间: 2011-8-12 13:20
找到了 前面的帖子里面的52楼Class Codes和里面CC字符串对照一下能看出来了
作者: zoom4ever 时间: 2011-8-27 14:23
zhaohj兄和chenall大大 今天在帮学校弄服务器的时候 一台浪潮NF5220的服务器 RAID卡是LSI 8208ELP 用CHKPCI的时候为什么不能检测出ID呢 直接执行chkpci -srs 没有任何显示输出 这个RAID卡的硬件ID应该是PCI\VEN_1000&DEV_0059
作者: chenall 时间: 2011-8-27 16:48
试试这个
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: zoom4ever 时间: 2011-8-29 13:12
新版本的chkpci没问题了 谢谢C大!
作者: netwinxp 时间: 2011-8-30 06:08
标题: 回复 #80 zhaohj 的帖子
这个属于ACPI范畴,CHKACPI的话就可以检测到CPU和这类型的HWID,不过ms推出ACPI说的很笼统,目前即使是linux也对它支持也不是很理想。
BTW:你们贴的那些PCI类型已经很老了,现在除了CC_0101、0104、0106、0107、0180可能还有0105。再说现在USB做启动的也越来越多,说不定啥时候还得CHKUSB。
CHK的最大问题是无法确确确定哪个设备是真正的启动设备,ms似乎也没有找到比较好的方法,所以折腾出磁盘签名之类的一大堆繁琐的东东。
作者: zhaohj 时间: 2011-8-30 07:41
一年多前N版说在制作CHKACPI,未见下文...
版主能完善下造福众生!
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |