无忧启动论坛

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

chkpci外部命令检测硬件ID唯一性的讨论

[复制链接]
31#
发表于 2010-11-1 18:33:55 | 只看该作者
@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

回复

使用道具 举报

32#
 楼主| 发表于 2010-11-1 22:22:16 | 只看该作者
>>太有用了,在我刚发布的SRSF6测试版中,为了写入字符串到文本,花费了很多精力。很大一部分是计算上下行的指针的,即--offset。
另:这个转义符“\”也特难处理。
回复

使用道具 举报

33#
发表于 2010-11-1 23:23:30 | 只看该作者
原帖由 zhaohj 于 2010-11-1 22:22 发表
>>太有用了,在我刚发布的SRSF6测试版中,为了写入字符串到文本,花费了很多精力。很大一部分是计算上下行的指针的,即--offset。
另:这个转义符“\”也特难处理。


有没有什么例子,或许可以通过编程手段来简化处理的工作.
回复

使用道具 举报

34#
 楼主| 发表于 2010-11-1 23:31:50 | 只看该作者
新版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, 下载次数: 111)

Snap1.jpg
回复

使用道具 举报

35#
发表于 2010-11-1 23:57:24 | 只看该作者
原帖由 zhaohj 于 2010-11-1 23:31 发表
新版chkpci及grldr新功能测试都通过,这下省力多了。

还有一个问题很难处理:如果一个变量值中存在转义符'\",很难处理。当初用“\”做转义符真是一个错误。
希望有一个功能,这个“\"转义符能用其他代替( ...


任何事物都有两面的,呵呵.

关于echo我们可以加个参数控制它让不转义..
回复

使用道具 举报

36#
 楼主| 发表于 2010-11-2 00:09:09 | 只看该作者
wenv中,tuxw加入的新功能还是不错的,loop、break、switch
switch已加入echo控制换行功能。

C大如果更新,希望加入loop、break。
回复

使用道具 举报

37#
发表于 2010-11-2 00:20:51 | 只看该作者
原帖由 zhaohj 于 2010-11-2 00:09 发表
wenv中,tuxw加入的新功能还是不错的,loop、break、switch
switch已加入echo控制换行功能。

C大如果更新,希望加入loop、break。


已经上传了新版WENV.我最近没有多少时间,就不整合了.你也可以等待tuxw的更新.

只是对echo命令进行了扩展,默认不允许转义输出.并且自动加回车符.

     1).-e 允许转义输出.
        比如\n是一个回车。
     2).-n 输出不自动加回车符.
回复

使用道具 举报

38#
 楼主| 发表于 2010-11-2 10:22:38 | 只看该作者
今天测试了Intel芯片组的SRS驱动,其中有:
$PCI\VEN_8086&DEV_3A22=IASTOR
$PCI\VEN_197B&DEV_2368=PCIIDE
...
检测的结果应该是正常的,但PCIIDE驱动是BUS驱动,AHCI并不需要它。对驱动不是很了解,想法是程序能否设别这个是BUS驱动并能控制输出?
我们的目的主要是AHCI\RAID有关的ID信息。
回复

使用道具 举报

39#
发表于 2010-11-2 15:40:32 | 只看该作者
你应该显示一下chkpci不太带数的ID列表,看看是否有什么区别.
回复

使用道具 举报

40#
 楼主| 发表于 2010-11-2 17:17:30 | 只看该作者
原帖由 chenall 于 2010-11-2 15:40 发表
你应该显示一下chkpci不太带数的ID列表,看看是否有什么区别.


不带参数的ID列表,也是输出两行。
现在的问题是:如果是IDE硬盘,chkpci不太带数的ID列表会输出Bus驱动的ID
                     如果是ahci/raid硬盘,chkpci不太带数的ID列表除了输出Bus驱动的ID,再输出ahci/raid的ID。
我想这是有问题的。
回复

使用道具 举报

41#
发表于 2010-11-2 18:05:10 | 只看该作者
原帖由 zhaohj 于 2010-11-2 17:17 发表


不带参数的ID列表,也是输出两行。
现在的问题是:如果是IDE硬盘,chkpci不太带数的ID列表会输出Bus驱动的ID
                     如果是ahci/raid硬盘,chkpci不太带数的ID列表除了输出Bus驱动的ID,再 ...


没能明白具体的意思,最好是能上图.
回复

使用道具 举报

42#
 楼主| 发表于 2010-11-2 18:56:17 | 只看该作者
简单地讲,怎样排除非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, 下载次数: 79)

Snap1.jpg
回复

使用道具 举报

43#
发表于 2010-11-2 19:46:54 | 只看该作者
这个也许可以加一个参数比如-sc:xx (sub-class)位.
回复

使用道具 举报

44#
 楼主| 发表于 2010-11-2 22:22:35 | 只看该作者
是的,需要这个参数。
如:
CSPE,可以使用txtsetup.sif类的内置驱动,原DOS下处理能识别出唯一(或没有)的匹配ID的驱动。
回复

使用道具 举报

45#
发表于 2010-11-2 23:26:41 | 只看该作者
好了.加了一个-sc参数.要配合-cc使用,否则参数无效.
回复

使用道具 举报

46#
 楼主| 发表于 2010-11-3 00:27:49 | 只看该作者
原帖由 chenall 于 2010-11-2 23:26 发表
好了.加了一个-sc参数.要配合-cc使用,否则参数无效.


竟然不会使用,能否举例说明。或许是bug
回复

使用道具 举报

47#
发表于 2010-11-3 00:42:48 | 只看该作者
一个例子
显示所有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 编辑 ]
回复

使用道具 举报

48#
 楼主| 发表于 2010-11-3 00:47:51 | 只看该作者
好像获取的ID相反了
下面chkpci -cc:01 -sc:1 应该得到PCI\VEN_1000&DEV_0030

[ 本帖最后由 zhaohj 于 2010-11-3 00:49 编辑 ]

Snap1.jpg (42.52 KB, 下载次数: 92)

Snap1.jpg
回复

使用道具 举报

49#
发表于 2010-11-3 01:03:01 | 只看该作者
这个没错,是我前面贴子写错了.
SCSI应该是
chkpci -cc:1 -sc:0
回复

使用道具 举报

50#
 楼主| 发表于 2010-11-3 01:11:54 | 只看该作者
正确了,明天得好好看一下上class code的介绍。
不早了,你也该休息了。晚安!


----------------------------------------
做个标志,从下面图中我们需要的class 0x01 对应的 sub-class仅需要0x00、0x04
即chkpci -cc:01 -sc:0,4

[ 本帖最后由 zhaohj 于 2010-11-3 08:43 编辑 ]
回复

使用道具 举报

51#
 楼主| 发表于 2010-11-3 08:24:30 | 只看该作者
Class Codes
Class
Description
0x00
Devices built before class codes (i.e. pre PCI 2.0)
0x01
Mass storage controller
0x02
Network controller
0x03
Display controller
0x04
Multimedia device
0x05
Memory Controller
0x06
Bridge Device
0x07
Simple communications controllers
0x08
Base system peripherals
0x09
Inupt devices
0x0A
Docking Stations
0x0B
Processorts
0x0C
Serial bus controllers
0x0D-0xFE
Reserved
0xFF
Misc

Class Code 0: Pre 2.0
Sub-Class
Prog. I/F
Description
0x00
0x00
All devices other than VGA
0x01
0x01
VGA device

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

Class Code 2: Network Controllers
Sub-Class
Prog. I/F
Description
0x00
0x00
Ethernet controller
0x01
0x00
Token ring
0x02
0x00
FDDI controller
0x03
0x00
ATM controller
0x80
0x00
Other network conteroller

Class Code 3: Display Controllers
Sub-Class
Prog. I/F
Description
0x00
0x00
VGA compatable controller. Has mapping for 0xA0000..0xBFFFF and io addresses 0x3B0..0x3BB.
0x01
8514 compatable
0x01
0x00
XGA controller
0x80
0x80
Other display controller

Class Code 4: Multimedia Devices
Sub-Class
Prog. I/F
Description
0x00
0x00
Video device
0x01
0x00
Audio device
0x80
0x00
Other multimedia device

Class Code 5: Memory Controllers
Sub-Class
Prog. I/F
Description
0x00
0x00
RAM controller
0x01
0x00
Flash memory controller
0x80
0x00
Other memory controller

Class Code 6: Bridge Devices
Sub-Class
Prog. I/F
Description
0x00
0x00
Host/PCI bridge
0x01
0x00
PCI/ISA bridge
0x02
0x00
PCI/EISA bridge
0x03
0x00
PCI/Micro Channel bridge
0x04
0x00
PCI/PCI bridge
0x05
0x00
PCI/PCMCIA bridge
0x06
0x00
PCI/NuBus bridge
0x07
0x00
PCI/CardBus bridge
0x80
0x00
Other bridge type

Class Code 7: Simple Communications Controllers
Sub-Class
Prog. I/F
Description
0x00
0x00
Generic XT compatable serial controller
0x01
16450 compatable serial controller
0x02
16550 compatable serial controller
0x01
0x00
Parallel port
0x01
Bi-directional parallel port
0x02
ECP 1.X parallel port
0x80
0x00
Other commonications device

Class Code 8: Base System Peripherals
Sub-Class
Prog. I/F
Description
0x00
0x00
Generic 8259 programmable interrupt controller (PIC)
0x01
ISA PIC
0x02
EISA PIC
0x01
0x00
Generic 8237 DMA controller
0x01
ISA DMA controller
0x02
EISA DMA controller
0x02
0x00
Generic 8254 timer
0x01
ISA system timer
0x02
EISA system timer
0x03
0x00
Generic RTC controller
0x01
ISA RTC controller
0x80
0x00
Other system peripheral

Class Code 9: Input Devices
Sub-Class
Prog. I/F
Description
0x00
0x00
Keyboard controller
0x01
0x00
Digitizer (pen)
0x02
0x00
Mouse controller
0x80
0x00
Other input controller

Class Code A: Docking Stations
Sub-Class
Prog. I/F
Description
0x00
0x00
Generic docking station
0x80
0x00
Other type of docking station

Class Code B: Processors
Sub-Class
Prog. I/F
Description
0x00
0x00
386
0x01
0x00
486
0x02
0x00
Pentium
0x10
0x00
Alpha
0x20
0x00
PowerPC
0x40
0x00
Co-Processor

Class Code C: Serial Bus Controllers
Sub-Class
Prog. I/F
Description
0x00
0x00
Firewire (IEEE 1394)
0x01
0x00
ACCESS bus
0x02
0x00
SSA (Serial Storage Architecture)
0x03
0x00
USB (Universal Serial Bus)


[ 本帖最后由 zhaohj 于 2010-11-3 08:27 编辑 ]
回复

使用道具 举报

52#
发表于 2010-11-3 11:17:27 | 只看该作者
-cc:01 -sc:06 ahci?
回复

使用道具 举报

53#
发表于 2010-11-3 15:16:28 | 只看该作者
OK,已经上传新版CHKPCI..
cc和sc参数支持列表使用","分隔,最多允许4个.
现在可以通过以下命令显示所有SCSI/RAID 的ID了
chkpci -cc:1 -sc:0,4
回复

使用道具 举报

54#
发表于 2010-11-3 15:37:49 | 只看该作者
原帖由 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 编辑 ]
回复

使用道具 举报

55#
发表于 2010-11-3 15:40:29 | 只看该作者
原帖由 jianliulin 于 2010-11-3 15:37 发表


能否把 chkpci -cc:1 -sc:0,4 简化为:chkpci --hd


这样看着很容易发生误解.而且这些对于一般用户来说是不需要关心的.

如果要加使用-srs可能更直观
回复

使用道具 举报

56#
发表于 2010-11-3 15:50:39 | 只看该作者
原帖由 chenall 于 2010-11-3 15:40 发表


这样看着很容易发生误解.而且这些对于一般用户来说是不需要关心的.

如果要加使用-srs可能更直观

嗯,比较直观,反正简单点就行,估计使用chkpci 就是用来搞srs驱动,或者C大专门弄一个外置命令给srs驱动专用,

[ 本帖最后由 jianliulin 于 2010-11-3 15:52 编辑 ]
回复

使用道具 举报

57#
发表于 2010-11-3 16:00:19 | 只看该作者
好了,重新上传了..

添加了三个比较直观的参数.用于显示特定的驱动(因为简化编程,所以不可以同时使用,也不要和CC/SC参数一起使用)

-srs -net -vga
回复

使用道具 举报

58#
 楼主| 发表于 2010-11-3 17:25:56 | 只看该作者
有问题,SCSI没出现:

Snap1.jpg (43.69 KB, 下载次数: 107)

Snap1.jpg
回复

使用道具 举报

59#
发表于 2010-11-3 20:58:36 | 只看该作者
原帖由 zhaohj 于 2010-11-3 17:25 发表
有问题,SCSI没出现:


看起来没有问题吧.应该是你的虚拟机没有SCSI驱动.
回复

使用道具 举报

60#
 楼主| 发表于 2010-11-4 08:07:48 | 只看该作者
原帖由 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, 下载次数: 116)

Snap1.jpg

Snap1.jpg (65.09 KB, 下载次数: 97)

Snap1.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 09:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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