如何在LINUX下实现硬件的自动检测 - 存储设备的自动检测
- UID
- 1066743
|
如何在LINUX下实现硬件的自动检测 - 存储设备的自动检测
存储设备主要是指硬盘,光驱等能够进行告诉数据存取的设备。我们最常见的存储设备按照总线类型分类主要包括ide,scsi这两种。对于ide设备,Linux系统一般是使用hd*来表示,*是按照连接的总线位置顺序编号。一般而言,我们现在所使用的微机有两个ide接口,并且每个接口上只能连接两个设备,一个为主设备而另一个为从设备。对于连接在ide0上的主设备它的设备名为hda,而对于在ide0上的从设备它的设备名为hdb。以此类推,连接在ide1上的主、从设备的设备名分别为hdc和hdd。
一般而言,现有的linux发行版都将对ide设备的支持加入内核,所以在系统启动之后,相应的设备模块已经在内核中了,所以检测过程只需对/proc/ide下相应的文件进行访问就行了。对于scsi设备,对它们的支持一般都不打入内核,所以要想使scsi设备在Linux下生效必须先插入对应的设备驱动模块。这就要求用户在创建lilo时必须在/etc/lilo.conf中加入一行"initrd=",它连接的由命令mkinitrd生成系统启动映像。例如,在使用Adaptec,AIC-7850的scsi芯片组时,使用模块aic7xxx,此时需要进行如下步骤:
mkinitrd --ifneeded /boot/initrd-2.4.3.img 2.4.3--with=aic7xxx
然后编辑/etc/lilo.conf,加入行: initrd=/boot/initrd-2.4.3.img
重新运行lilo,启动后,这时就会在目录/proc/scsi下出现设备的对应描述文件。只要检索这些文件就可以完成对设备的检测。
- ide设备的检测过程
- 查找/proc/ide/下名为的hd*(*为通配符,可为a,b,…)的目录(目录名为设备名)。
- 打开文件/proc/ide/hd*/media,此文件的只由一行构成,其内容为cdrom、disk、tape或floppy,此文件的内容表示此IDE设备的类型。
- 打开文件/proc/ide/hd*/model,由此文件得到详细的设备描述信息。例如:ST313021A,表示希捷硬盘,型号为ST313021A。
- 打开文件/proc/ide/hd*/geometry,这个文件描述的是硬盘的几何信息。例如 physical 16383/16/63
logical 1583/255/63(cylinders/heads/sectors)
表示这块ide硬盘的柱面数,头数和扇区数
- 由命令mknod path, b, major,minor,创建设备结点。对于从/dev/hda到/dev/hdh的设备结点的主次设备号为:
1
2
3
4
5
6
7
8
| /dev/hda major = 3, minor = 0
/dev/hdb major = 3, minor = 64
/dev/hdc major = 22, minor = 0
/dev/hdd major = 22, minor = 64
/dev/hde major = 33, minor = 0
/dev/hdf major = 33, minor = 64
/dev/hdg major = 34, minor = 0
/dev/hdh major = 34, minor = 64
|
- scsi设备的检测过程
- 读入/proc/scsi/scsi文件,其文件结构:
1
2
3
4
5
6
7
8
9
| Attached devices:
Host: scsi**** Channel: **** Id: **** Lun: ****
Vendor: XXXXXXX Model:xxxxxx Rev:
Type: Direct-Access(类型为hd,设备名为sd*)
Sequential-Access(类型为tape,设备名为st*)
CD-ROM (类型为cdrom,设备名为scd*)
Scanner (类型为scanner,设备名为sg*)
Printer (类型为printer,设备名为sg*)
其他设备(设备名为sg*)
|
|
|
|
|
|
|