lsscsiでIDを確認する。
# lsscsi
[0:0:0:0] disk ATA ST3320613AS SD22 /dev/sda
[2:0:0:0] disk ATA ST3320613AS SD22 /dev/sdb
[3:0:0:0] disk ATA WDC WD2500JS-22M 02.0 /dev/sdc
[4:0:0:0] cd/dvd MATSHITA DVD-RAM LF-M721 APM1 /dev/scd0
以下のようなメッセージがでたので、ubuntu intrepidなのにsidのパッケージを入れて0.19 -> 0.21としている。
sdev_scandir_sort: left parse failed
sdev_scandir_sort: right parse failed
sdev_scandir_sort: left parse failed
sdev_scandir_sort: left parse failed
sdev_scandir_sort: right parse failed
今回取り外したいのは/dev/sdcなので、以下の通りscsiaddコマンドを実行する。
# scsiadd -r 3 0 0 0
これで取り外し可能になる。初回は、ちゃんと止まっていることをdmesgで確認したほうがいいかも。
[86029.176586] sd 3:0:0:0: [sdc] Synchronizing SCSI cache
[86029.179954] sd 3:0:0:0: [sdc] Stopping disk
[86029.181469] ata4.00: disabled
ここで、3:0:0:0のディスクを/dev/nakedにしてしまうことにする。
それにはまず、udevinfoでudevのルールを記述するための情報を探す。
udevinfo -q path -n <device>によりsysfsのパスを表示し、udevinfo -a -q <sysfs-path>による詳細情報を得る。
$ udevinfo -q path -n /dev/sdc
/devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
$ udevinfo -a -p /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
(略)
looking at device '/devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc':
KERNEL=="sdc"
SUBSYSTEM=="block"
(略)
looking at parent device '/devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0':
KERNELS=="3:0:0:0"
SUBSYSTEMS=="scsi"
(略)
以上の情報から、udevのルールを記述する。
# vi /etc/udev/rules.d/30-naked-hdd.rules
SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="3:0:0:0", NAME="naked%n", SYMLINK+="%k"
udevadm testにより、このルールが認識されていることを確認する。
# udevadm test /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
(略)
update_link: 'sdc' with target 'naked' has the highest priority 0, create it
(略)
あとは、udevadm control --reload_rulesで更新する(udevadm triggerも必要かも)。
# udevadm control --reload_rules
これにより、/dev/nakedが作成されればOK.
$ ls -l /dev/naked*
brw-rw---- 1 root disk 8, 32 2008-10-20 22:08 /dev/naked
brw-rw---- 1 root disk 8, 33 2008-10-20 22:08 /dev/naked1
# fdisk -l /dev/naked
Disk /dev/naked: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x615a3876
Device Boot Start End Blocks Id System
/dev/naked1 1 30401 244196001 7 HPFS/NTFS
udevのルールをうまく書けば接続時マウントも可能だと思う。
lsscsiコマンドでIDを取ってもいいが、udevinfo -q envでもとれる。
# udevinfo -q env -n /dev/naked
ID_VENDOR=ATA
ID_MODEL=WDC_WD2500JS-22M
ID_REVISION=02.0
ID_SERIAL=1ATA_WDC_WD2500JS-22MHB0_WD-WCANK2808749
ID_SERIAL_SHORT=ATA_WDC_WD2500JS-22MHB0_WD-WCANK2808749
ID_TYPE=disk
ID_BUS=scsi
ID_ATA_COMPAT=WDC_WD2500JS-22MHB0_WD-WCANK2808749
ID_PATH=pci-0000:00:11.0-scsi-3:0:0:0
# udevinfo -q env -n /dev/naked | sed -ne 's/^ID_PATH=.*-scsi-\([0-9:]*\)$/\1/p'| sed -e 's/:/ /g'
3 0 0 0
あとは、わかるな?