ノートパソコンのハードディスクがそろそろ窮屈になってきたので, ハードディスクを増設することにした。 最近は 250G などの,やたらと容量が大きいものがあるが, 映画もビデオも記録しないので,そこまで大きい必要はない。 設置面積が小さくて済むことと,余分な電源が必要ないという理由で, ポータブルな USB 接続のハードディスクにした。
機種: I-O DATA HDPX-U80 容量: 80G バイト 金額: 29,800円
取り敢えずハードディスクを USB ケーブルでノートパソコンに接続してみる。 認識できたか否かを確かめるために /var/log/messages を見る。
Jun 7 14:13:16 shiba kernel: hub.c: new USB device 00:07.2-2.2, assigned address 3 Jun 7 14:13:16 shiba kernel: usb.c: USB device 3 (vend/prod 0x4bb/0x107) is not claimed by any active driver. Jun 7 14:13:17 shiba murasaki.usb[1987]: device is added Jun 7 14:13:17 shiba murasaki.usb[1987]: vendor:0x4bb product:0x107 Dclass:0x0 Dsubclass:0x0 Dprotocol:0x0 Iclass:0x8 Isubclass:0x6 Iprotocol:0x50 Jun 7 14:13:17 shiba murasaki.usb[1987]: MATCH(usb-storage) -> match_flags:0x380 vendor:0x0 product:0x0 Dclass:0x0 Dsubclass:0x0 Dprotocol:0x0 Iclass:0x8 Isubclass:0x6 Iprotocol:0x50 Jun 7 14:13:17 shiba kernel: SCSI subsystem driver Revision: 1.00 Jun 7 14:13:17 shiba kernel: Initializing USB Mass Storage driver... Jun 7 14:13:17 shiba kernel: usb.c: registered new driver usb-storage Jun 7 14:13:17 shiba kernel: scsi0 : SCSI emulation for USB Mass Storage devices Jun 7 14:13:18 shiba kernel: Vendor: I-O DATA Model: HDPX-U Rev: MO4O Jun 7 14:13:18 shiba kernel: Type: Direct-Access ANSI SCSI revision: 02 Jun 7 14:13:18 shiba kernel: USB Mass Storage support registered.
どうやら SCSI 機器として認識したらしい。 このノートパソコンには,他には SCSI 機器は無いはずなので,多分,/dev/sda が割り当てられているはずだ。 初期状態は,どうせ一つのパーティションで VFAT くらいでフォーマットされているのだろう。 念のため,/dev/sda1 をマウントして中身を確認してみる。
[root@shiba /root]# mkdir /mnt/usbhdd [root@shiba /root]# mount -t auto /dev/sda1 /mnt/usbhdd [root@shiba /root]# df ファイルシステム 1k-ブロック 使用済 使用可 使用率% マウント場所 /dev/hda1 省略 省略 省略 /dev/sda1 78129056 32 78129024 1% /mnt/usbhdd
ちゃんと /dev/sda に割り振られて,使えそうなことが分かったので,アンマウントして, パーティションを切り直し,フォーマットする。
[root@shiba /root]# fdisk /dev/sda このディスクのシリンダ数は 9729 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) こういうメッセージは大容量のハードディスクでは必ず出るので気にしない! コマンド (m でヘルプ): p 初期状態の確認 ディスク /dev/sda: ヘッド 255, セクタ 63, シリンダ 9729 ユニット = シリンダ数 of 16065 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 9729 78148161 c Win95 FAT32 (LBA) コマンド (m でヘルプ): d パーティションを削除 領域番号 (1-4): 1 コマンド (m でヘルプ): n 新しくパーティションを作成 コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-9729, 初期値 1): 初期値 1 を使います 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-9729, 初期値 9729): +20480M コマンド (m でヘルプ): p ディスク /dev/sda: ヘッド 255, セクタ 63, シリンダ 9729 ユニット = シリンダ数 of 16065 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 2611 20972826 83 Linux コマンド (m でヘルプ): n 必要なだけパーティションを作成 コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (2612-9729, 初期値 2612): 初期値 2612 を使います 終点 シリンダ または +サイズ または +サイズM または +サイズK (2612-9729, 初期値 9729): +20480M 途中省略 コマンド (m でヘルプ): p ディスク /dev/sda: ヘッド 255, セクタ 63, シリンダ 9729 ユニット = シリンダ数 of 16065 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 2611 20972826 83 Linux /dev/sda2 2612 5222 20972857+ 83 Linux /dev/sda3 5223 9729 36202477+ 83 Linux コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 [root@shiba /root]#
なお,パーティションの意味や fdisk の使い方は別のページに書いておいた。
ハードディスクのパーティションを作成したので,次に,それぞれのパーティションをフォーマットしなければならない。 Linux 用のフォーマットは 最近は ext3 なので,コマンドラインで
mkfs -t ext3 /dev/sda1
とすればよいと思ったのだが, mkfs.ext3 が無い! といって怒られた。 locate mkfs.ext3 で調べてみると,確かにそんなものはどこにもない。
mkfs は色々な種類のファイルシステムをフォーマットするためのツールを呼び出すスクリプトらしいが, Vine 2.6 の mkfs は ext3 用のスクリプトが整備されていないらしい。
マニュアルなどを調べてみると,mke2fs に -j オプションをつけてフォーマットすればよさそうだ。 (ほんまかいな??)
[root@shiba /root]# mke2fs -j /dev/sda1 mke2fs 1.29 (24-Sep-2002) warning: 326 blocks unused. Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 2626560 inodes, 5242880 blocks 262160 blocks (5.00%) reserved for the super user First data block=0 160 block groups 32768 blocks per group, 32768 fragments per group 16416 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 25 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@shiba /root]# 以下同様に /dev/sda2 /dev/sda3 もフォーマットする
これで初期設定は終わった。後は好きなようにマウントすれば使えるはずだ。
[root@shiba /root]# mkdir /mnt/usbhdd1 マウントするためのディレクトリーの作成 [root@shiba /root]# mkdir /mnt/usbhdd2 [root@shiba /root]# mount -t auto /dev/sda1 /mnt/usbhdd1 マウントする [root@shiba /root]# mount -t auto /dev/sda2 /mnt/usbhdd2
これで /mnt/usbhdd1 や /mnt/usbhdd2 というディレクトリーが USB HDD になっているので, 適当に読み書きしてみる。
なお,USB 機器だと,使い終わった後,気軽に引き抜いてしまいそうだが, 引き抜く前にアンマウントしておかないと,書き込んだデーターが失われるかもしれない。
[root@shiba /root]# umount /mnt/usbhdd1 [root@shiba /root]# umount /mnt/usbhdd2
常時接続しておくなら /etc/fstab にマウントの設定を記述しておけばよいが, 私のように必要な時だけ接続するなら,手動でマウントするか,あるいは autofs を使うのがよいだろう。 このあたりの話はこちらのページに書いておいた。
autofs を使って自動マウントするには /etc/auto.misc に次のような設定を追加する。
usbhdd1 -fstype=auto :/dev/sda1 usbhdd2 -fstype=auto :/dev/sda2 usbhdd3 -fstype=auto :/dev/sda3
/etc/auto.misc の修正をしたら,念のため コマンドラインで /etc/rc.d/init.d/autofs restart を実行する。 (必要だったかどうか覚えていないが,実行しても悪いことはないはず ..... 。)
これで,/misc/usbhdd1 や /misc/usbhdd1 にアクセスすればハードディスクが自動的にマウントされる。 また,何もせずに放っておくと,自動的にアンマウントされる。 詳しくはこちらのページに書いておいた。
上記は研究室のノートパソコンに公費で購入したハードディスクを接続してみた話であるが, 使えることが分かったし,結構便利そうだったので, 同じ物を自宅でも購入してみた。
自宅のノートパソコンの機種は研究室のノートパソコンの機種とほとんど同じであるが, OS は,まだ Vine Linux 2.1.5 である。USB ケーブルを差し込んで /etc/messages を見ると, どうもドライバーが見つけられないようだ。
Jun 7 20:54:03 cactus kernel: usb.c: USB new device connect, assigned device number 4 Jun 7 20:54:03 cactus kernel: usb.c: USB device 4 (vend/prod 0x4bb/0x107) is not claimed by any active driver. Jun 7 20:54:03 cactus usbmgr[949]: vendor:0x4bb product:0x107 Jun 7 20:54:03 cactus usbmgr[949]: class:0x8 subclass:0x6 protocol:0x50 Jun 7 20:54:04 cactus usbmgr[949]: USB device isn't matched the configuration
USB 機器の認識は usbmgr が行っているようなので,取り敢えず /etc/usbmgr の中を覗いてみると, 設定ファイルらしい /etc/usbmgr/usbmgr.conf があった。 /etc/usbmgr/usbmgr.conf の STORAGE のあたりの記述をまねして,以下を追加してみる。
vendor 0x4bb product 0x107 module scsi_mod , sd_mod , usb-storage
さらに,設定ファイルの内容や /etc/usbmgr/ の中身を調べて, STORAGE のあたりの記述と同じようにするために, /etc/usbmgr/vendor/04bb の中に 0107 が無かったので 0107 ディレクトリーを作り, 0107 の中に,以下の内容のファイルを module という名前で作成した。
scsi_mod sd_mod usb-storage
以上の設定を終えたら,USB ケーブルを一旦抜いて,挿し直す。 ( その前に /etc/rc.d/init.d/usbmgr restart を実行したかもしれないが,忘れてしまった。)
/var/log/messages を見ると,SCSI デバイスとしてちゃんと認識されていた。 以後は Vine 2.6 の場合と同じなので省略する。
なお,/etc/usbmgr/usbmgr.conf に vendor を設定したり, /etc/usbmgr/vendor/04bb/ の下にファイルを作ったりする代わりに /etc/usbmgr/usbmgr.conf の中で class を設定したのでも良かったのかもしれない。
# Class Setup # USB Clik! 40 [NEC] class 0x8 subclass 0x4 module scsi_mod , sd_mod , usb-storage class 0x8 subclass 0x6 module scsi_mod , sd_mod , usb-storage