[[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

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

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS