起動時の流れ

起動スクリプトとして /etc/init.dmurasaki が置かれ、これはランレベル 2 用のシンボリックリンクが start 引数付きで呼び出されることで実行される。スクリプトは Buffalo 社により書き換えられており、以下の処理が行われている。

1. Buffalo 社製のバイナリ /usr/bin/parse_usbscsi を実行。
2. /proc/cmdline を参照し、ホットプラグがオフモードでないことを確認。
3. murasaki 用のロックファイルを作成。
4. エージェントに murasaki を指定するため、murasaki の実行パス /sbin/hotplug.murasaki/proc/sys/kernel/hotplug に書き込む。
5. /proc/sys/kernel/modprobe を参照し、modprobe の実行パスを取得。
6. /etc/murasaki 下に存在するシステムディレクトリの削除。
7. /sbin/murasaki_init.usb を実行。
8. /proc/scsi/usb-storage-0/0 が存在する場合、マウントスクリプトを start 引数二つで実行。


/usr/bin/parse_usbscsi

この Buffalo 社製のバイナリはデバイス情報を参照し /mnt/usbinfo 下に exist 及び list を生成しているようだ。

# cat list
/dev/sdb
/dev/sdc
/dev/sdd

# cat exist
/dev/sdb,SAMSUNG SV1604N ,HDD
/dev/sdc,WDC WD2500BB-00R,HDD
/dev/sdd,EACS-00D6B0     ,HDD

これらのリストは自作マウントスクリプトからも利用しようと思っていたのだが、筆者の現在の環境においては残念ながら正常に機能しなかった。上記では三台のデバイスがリストされているが実際は四台接続されている環境である。/proc/scsi/scsi を参照するとカーネルはすべてのデバイスを認識していることが確認できる。

# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: Generic  Model: Traveling Disk   Rev: 1.11
  Type:   Direct-Access                    RMB: Removable
  ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: USB-HS   Model: SAMSUNG SV1604N  Rev: 0.01
  Type:   Direct-Access                    RMB: HardDisk
  ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: USB-HS   Model: WDC WD2500BB-00R Rev: 0.01
  Type:   Direct-Access                    RMB: HardDisk
  ANSI SCSI revision: 02
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: WDC WD10 Model: EACS-00D6B0      Rev:
  Type:   Direct-Access                    RMB: HardDisk
  ANSI SCSI revision: 02

結局リスト化の作業も自前で実装するしかなさそうである・・・。


ホットプラグ時の流れ









タグ:

LinkStation
最終更新:2008年09月07日 12:14