diary/Kojima

・sys-fs 関連のメモ

ここしばらく,時間があるときに調べている sys-fs(/sys)関連の備忘録代わりのメモ.

手元の環境だと /sys 以下にはこういうディレクトリがある.

kojima@xeon[~]% ls /sys/                            
block/  bus/  class/  devices/  firmware/  fs/  kernel/  module/  power/

block/ はカーネルが認識している各種ブロックデバイスの情報,bus/ は PCI や USB といったバス関連の情報,class/ はカーネルのサブシステムごとの情報(?), module/ はロードしている各種モジュールの情報,firmware/ と fs/, kernel/, power/ は よく分からない(苦笑)

面白そうなのは,/sys/bus/pci/ あたりで,/sys/bus/pci/devices/ にはこういう風に

kojima@xeon[~]% ls /sys/bus/pci/devices 
0000:00:00.0@  0000:00:1d.7@  0000:00:1f.5@  0000:05:0b.0@
0000:00:01.0@  0000:00:1e.0@  0000:01:00.0@  0000:05:0c.0@
0000:00:1d.0@  0000:00:1f.0@  0000:05:02.0@  0000:05:0c.1@
0000:00:1d.1@  0000:00:1f.1@  0000:05:0a.0@  0000:05:0e.0@

PCI バスに接続している機器の情報が,PCI のバス ID(というんだっけ?)ごとに 一覧される.この実体は /sys/devicec/pci0000:00 以下にあるらしい.

一方,これらの機器を利用するためのドライバ類の情報は /sys/bus/pci/drivers/ 以下に表われる.

kojima@xeon[~]% ls /sys/bus/pci/drivers
AEC62xx_IDE/  PCI_IDE/          ata_generic/    pata_hpt3x3/       pdc_adma/
ALI15x3_IDE/  PIIX_IDE/         ata_piix/       pata_it821x/       sata_mv/
AMD_IDE/      Promise_IDE/      ehci_hcd/       pata_jmicron/      sata_nv/
ATIIXP_IDE/   Promise_Old_IDE/  firewire_ohci/  pata_marvell/      sata_promise/
CMD64x_IDE/   RZ1000_IDE/       ivtv/           pata_mpiix/        sata_qstor/
CS5530 IDE/   SC1200_IDE/       nvidia/         pata_netcell/      sata_sil/
CS5535_IDE/   SIS_IDE/          ohci1394/       pata_oldpiix/      sata_sil24/
Cypress_IDE/  SLC90e66_IDE/     ohci_hcd/       pata_pdc2027x/     sata_sis/
Cyrix_IDE/    Serverworks_IDE/  pata_acpi/      pata_rz1000/       sata_svw/
HPT34x_IDE/   SiI_IDE/          pata_amd/       pata_serverworks/  sata_sx4/
HPT366_IDE/   TC86C001/         pata_artop/     pata_sil680/       sata_uli/
ITE8213_IDE/  TRIFLEX_IDE/      pata_atiixp/    pata_sis/          sata_via/
ITE821x IDE/  TRM290_IDE/       pata_cmd64x/    pata_sl82c105/     sata_vsc/
Intel ICH/    VIA_IDE/          pata_cs5520/    pata_triflex/      sx8/
JMicron IDE/  agpgart-intel/    pata_efar/      pata_via/          tg3/
NS87415_IDE/  ahci/             pata_hpt366/    pcieport-driver/   uhci_hcd/

これはドライバごとになっているようで,Plamo の場合,IDE用のドライバは 全てカーネル組み込みにしているので,AEC62xx_IDE/ とか ALI15x3_IDE/ みたいな 存在しないハードウェア用のドライバも表示されているけど,存在しない ハードウェアでは

kojima@xeon[~]% ls /sys/bus/pci/drivers/AEC62xx_IDE 
bind  new_id  uevent  unbind

このように PCI バスの情報が表示されないのに対して,存在するハードウェアでは

kojima@xeon[~]% ls /sys/bus/pci/drivers/PIIX_IDE            
0000:00:1f.1@  bind  new_id  uevent  unbind

みたいに,実際にそのドライバが操作するハードウェアの PCI バス上の位置が 表示される.で,この 0000:00:1f.1 も /sys/devices/pci0000:00/0000:00:1f.1/ へのリンクになっていて,辿っていくと

kojima@xeon[~]% ls -l /sys/bus/pci/drivers/PIIX_IDE/0000:00:1f.1/
合計 0
-rw-r--r--  1 root root 4096 2008-05-27 00:26 broken_parity_status
lrwxrwxrwx  1 root root    0 2008-05-27 00:26 bus -> ../../../bus/pci/
-r--r--r--  1 root root 4096 2008-05-27 00:26 class
-rw-r--r--  1 root root  256 2008-05-27 00:26 config
-r--r--r--  1 root root 4096 2008-05-27 00:26 device
lrwxrwxrwx  1 root root    0 2008-05-27 00:26 driver -> ../../../bus/pci/drivers/PIIX_IDE/
-rw-------  1 root root 4096 2008-05-27 00:26 enable
drwxr-xr-x  5 root root    0 2008-05-27 00:35 ide0/
drwxr-xr-x  5 root root    0 2008-05-27 00:35 ide1/
-r--r--r--  1 root root 4096 2008-05-27 00:26 irq
-r--r--r--  1 root root 4096 2008-05-27 00:26 local_cpus
-r--r--r--  1 root root 4096 2008-05-27 00:26 modalias
-rw-r--r--  1 root root 4096 2008-05-27 00:26 msi_bus
drwxr-xr-x  2 root root    0 2008-05-27 00:35 power/
-r--r--r--  1 root root 4096 2008-05-27 00:26 resource
-rw-------  1 root root    8 2008-05-27 00:26 resource0
-rw-------  1 root root    1 2008-05-27 00:26 resource1
-rw-------  1 root root    8 2008-05-27 00:26 resource2
-rw-------  1 root root    1 2008-05-27 00:26 resource3
-rw-------  1 root root   16 2008-05-27 00:26 resource4
-rw-------  1 root root 1024 2008-05-27 00:26 resource5
lrwxrwxrwx  1 root root    0 2008-05-27 00:26 subsystem -> ../../../bus/pci/
-r--r--r--  1 root root 4096 2008-05-27 00:26 subsystem_device
-r--r--r--  1 root root 4096 2008-05-27 00:26 subsystem_vendor
-rw-r--r--  1 root root 4096 2008-05-27 00:26 uevent
-r--r--r--  1 root root 4096 2008-05-27 00:26 vendor

こういう風に,より詳細な情報が得られる.class とか device あたりは ID番号だけなのでよく分からないのだけど,どこかにリストみたいなものは あるのだろうか?

とりあえず uevent を見ると必要な情報は手に入りそうではあるが..

kojima@xeon[~]% cat  /sys/bus/pci/drivers/PIIX_IDE/0000:00:1f.1/uevent 
DRIVER=PIIX_IDE
PHYSDEVBUS=pci
PHYSDEVDRIVER=PIIX_IDE
PCI_CLASS=1018A
PCI_ID=8086:24CB
PCI_SUBSYS_ID=103C:00CC
PCI_SLOT_NAME=0000:00:1f.1
MODALIAS=pci:v00008086d000024CBsv0000103Csd000000CCbc01sc01i8a

最後の MODALIAS はモジュールドライバ用の情報で,単純に PCI 機器に埋め込 まれているベンダーID(v00008086 = Intel), デバイスID(24CB = 82801DB (ICH4) IDE Controller),サブベンダー ID 等の情報になっているらしい.

この情報は

kojima@xeon[~]% cat /sys/bus/pci/drivers/PIIX_IDE/0000:00:1f.1/modalias
pci:v00008086d000024CBsv0000103Csd000000CCbc01sc01i8a

からも取れて,modprobe `cat cat /sys/bus/pci/drivers/PIIX_IDE/0000:00:1f.1/modalias` とかしてやると,

modprobe が /lib/moduels/2.6.24.5-plamoSMP/modules.pcimap の

# pci module         vendor     device     subvendor  subdevice  class      class_mask driver_data
8250_pci             0x000011b0 0x00000001 0x000012c4 0x00000001 0x00000000 0x00000000 0x0
8250_pci             0x000011b0 0x00000001 0x000012c4 0x00000002 0x00000000 0x00000000 0x0

といったリストを見て,適切なモジュールを読み込んでくれる模様.



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41