Linuxで USBフラッシュメモリーを使おう

Updated : 2004/04/25      


テストしたUSBフラッシュメモリー製品の写真
USBフラッシュメモリー

■ このページでは  Linux でのUSBフラッシュメモリーの使い方を説明しています。
 USBフラッシュメモリー ( 以降は USBメモリーと呼びます ) は、フロッピーディスクよりも記憶容量が大きく、書き込み・読み出しの時間が短いので便利です。 このページでは、Red Hat Linux 9でのUSBメモリーの利用手順を書いてあります。ほかの Linux では未確認ですが、ほぼ同じ方法で利用できるでしょう。
またUSBの仕様には、Ver.1.0、1.1、2.0 などのバージョンがありますが、古い 1.0 か1.1 に対応したUSBメモリー製品を選べば利用できます。  ( USBの Ver.2.0 の製品は持っていないのでテストしてません。 )

■  Linux では USB フラッシュメモリーもマウントして扱うので注意が必要です!
 USBフラッシュメモリーは、Windows だけでなく Linux でも利用することができます。市販のUSBメモリー製品は、あらかじめ MS-DOS フォーマットされています。そのため MS-Windows などの OSからはフロッピーディスクと同じように、MS-DOSフォーマットを指定してマウントすれば利用できます。ただし、Linux では USBメモリーを SCSI にデバイスとして ( SCSI エミュレートして ) 認識するので、SCSI デバイスとしてマウントして利用します。
 USBフラッシュメモリーは、マザーボードのUSBコネクターに接続し、mount コマンドでマウントして利用します。また利用後は unmount コマンドでアンマウントしてから抜き 取ってください。マウントとアンマウントを正しく実行しない場合は、書き込んだファイルなどのデータを破壊してしまう危険があります。USBプラグの抜き 差しはプラグアンドプレー の感覚で気軽にできますが、OSと接続に際しては慎重に操作してください。


 このページの情報は自己責任で利用してください!
 このページに書いた手順は、すべての Linux での USBフラッシュメモリー の動作を保証するものではありません。1つの実行事例であり、参考事例として利用してください。
設定の手順の実行は、自己責任において行ってください。
この手順によって発生した障害や損害については、一切の責任を負いません。



 この ページのメニュー
    1. USB フラッシュメモリーを認識させる
    2. コマンドでマウントする
    3. fstab に登録する
    4. 日 本語ファイル名の文字化け対策
    5. Linux のUSBメモリー認識状況を知るには?


 USB フラッシュメモリーを認識させる

 Red Hat Linux 8 では、OSがUSBデバイスに対応しているのでPCにUSBフラッシュメモリーをさすと自動認識します。
 USBメモリーは、OSのLinux からは SCSI デバイスとして認識されます。
認識されるデバイスファイル名は、/dev/sda1 になります。PCに他の SCSI や USB 機器を接続している場合は、デバイスファイル名が違ってきます。コマンドラインを使用中にUSBメモリーを差すと、「自動認識メッセージ」が画面表示され るで確認できます。
この「自動認識メッセージ」が表示されれば、表示されたデバイスをマウントすることで利用できます。
X-Window を使用中にUSBメモリーを差した場合は、認識されますが「自動認識メッセージ」は表示されません。

 今回動作を確認したのは次の組み合わせです。

 
 Princeton Xiao Jr. (16MB) Xmind XM-ST16 (16MB)
FedoraCore 1


  Red Hat Linux 9


  Red Hat Linux 8



 テストした Red Hat Linux 9 は、インストール時のインストールタイプは「サーバー」でしたが、USBデバイスは問題なく使えました。Linux を起動して Kudzu や murasaki などのハードウェア管理デーモンが起動していれば、プラグアンドプレイの感覚で、Linux を起動後でも抜き差しできます。

フロッピーの代わりに利用しているUSBメモリーです。 写真 (左)Xiao Jr  32MB    (右) XM-ST16 16MB



 コマン ドでマウントする

マウント コマンドを実行するには root 権限が必要です。以下のコマンドは root 権限で実行してください。

@ 起動中の Linux のマシンに、USBメモリーを接続します。

USBメモリーを差して、画面にメッセージ( 自動認識された情報 )が表示されればAのステップすすむ。
もしもメッセージが表示されない場合は、次の chckconfig コマンドを使い、kudzu を起動します。


# chckconfig --llevel 345 kudzu on      # OS起動時にkudzuを起動させる
# /etc/rc.d/initd/kudzu start             # kudzu を起動する




A USBメモリーをマウントするマウントポイントを作成する。
( 1度だけ作成すればOK )


[root@cobalt2 root]# mkdir /mnt/usbfm



B  コマンドで、マウントポイントに USBメモリーを刺した後に、次のコマンドでマウントする。


[root@cobalt2 root]# mount           # マウント前の状態を知る
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda7 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda3 on /var type ext3 (rw)

[root@cobalt root]# mount -t vfat /dev/sda1 /mnt/usbfm    # マウントする

[root@cobalt2 root]# mount
           # マウント後の状態を知る
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda7 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda3 on /var type ext3 (rw)
/dev/sda1 on /mnt/usbfm type vfat (rw)   # USBメモリーがマウントされている
[root@cobalt2 root]#

  ※ コマンドオプションの -t は、USBメモリーのフォーマットタイプの指定で、vfat、msdos などが利用できる。


C   USBメモリーの内容を、ls コマンドでたしかめる


[root@cobalt2 root]# ls /mnt/usbfm
Win98DriverV1.41.exe          # 内容が表示されればマウントは成功です。




D USBメモリーにファイルをコピーしてみる



[root@cobalt2 root]# cp wiredview-inst-01.txt /mnt/usbfm

[root@cobalt2 root]# ls /mnt/usbfm
Win98DriverV1.41.exe
wiredview-inst-01.txt

  ※ コピーや削除は、通常の Linux でのファイルイシステムと同じように利用できます。


  書き込みエラーが出た場合は、 マウントオプション -o を 使って再マウントし明示的に書き込み可能にする。

[root@cobalt root]# umount /mnt/usbfm        # 一度アンマウントする

[root@cobalt root]# mount -t vfat -o rw /dev/sda1 /mnt/usbfm  #再度 マウント




E  アンマウントする

要注意! USBメモリーの利用が終わった ら、必ずコマンドで アンマウントしてからUSBメモリーをPCから抜いてください。


[root@cobalt2 root]# umount /mnt/usbfm       # アンマウントする

[root@cobalt2 root]# mount               # マウントの状態を確認する
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda7 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda3 on /var type ext3 (rw)


  ※ USBメモリーを抜く前にアンマウントしない場合、書き込んだファイルが正常に利用できません!



  fstab に登録する

 コマンド操作で USBメモリーのマウントとアンマウントが問題なくできたら、次は /etc/fstab に設定を登録します。
/etc/fstab に設定を登録することで、コマンド入力時にオプション設定を付けずにマウントできるようになります。


@  /etc/fstab に設定を登録します

   vi 、emacs、ee などのテキストエディターを利用して次のように設定を1行追加します。


LABEL=/          /                ext3    defaults        1 1
LABEL=/boot      /boot            ext3    defaults        1 2
none             /dev/pts         devpts  gid=5,mode=620  0 0
LABEL=/home      /home            ext3    defaults,usrquota,grpquota  1 2
none             /proc            proc    defaults        0 0
none             /dev/shm         tmpfs   defaults        0 0
LABEL=/var       /var             ext3    defaults        1 2
/dev/hda5        swap             swap    defaults        0 0
/dev/cdrom       /mnt/cdrom       udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/sda1        /mnt/usbfm       auto    noauto,user     0 0



  A 上記の USBフラッシュメモリーの設定を登録後は、はオプションなしてマウントできます。


[root@cobalt2 root]# mount /mnt/usbfm     # マウントする

[root@cobalt2 root]# mount
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda7 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda3 on /var type ext3 (rw)
/dev/sda1 on /mnt/usbfm type vfat (rw,noexec,nosuid,nodev) # マウントされた
[root@cobalt2 root]#


[root@cobalt2 root]# umount /mnt/usbfm     # 使用後はアンマウントする

 ]※ fstab で設定しても、使用後にアンマウントしてから USBメモリーを抜かないと壊れます!




 日本語ファイル名の文字化け対策

 WIndowsのパソコン使う「日本語名のファイル」は、Linux では日本語文字コードが違うので文字化けします。
Windows ではデフォルトで「シフトJIS」コードを使用しますが、Linux では 「EUCコード」がデフォルトになっているのが原因です。
Windows で作成した「日本語ファイル名」を正常な日本語表記で表示するには、マウントする際に文字コードを「シフトJIS」でプションを指定します。



LABEL=/          /                ext3    defaults        1 1
LABEL=/boot      /boot            ext3    defaults        1 2
none             /dev/pts         devpts  gid=5,mode=620  0 0
LABEL=/home      /home            ext3    defaults,usrquota,grpquota  1 2
none             /proc            proc    defaults        0 0
none             /dev/shm         tmpfs   defaults        0 0
LABEL=/var       /var             ext3    defaults        1 2
/dev/hda5        swap             swap    defaults        0 0
/dev/cdrom       /mnt/cdrom       udf,iso9660 noauto,owner,kudzu,ro 0 0
 
/dev/sda1       /mnt/usbfm       auto    noauto,user,iocharset=euc-jp 0 0

 ※ 文字コードのオプションは Red Hat  では、euc-jp 、Fedora Core では utf-8 を指定する。
 ※ 上記のように user オプションを追加することで、一般ユーザーもマウントコマンドでマウント可能になる。




  Linux のUSBメモリー認識状況を知るには?

Linux の認識しているハードウェアの状況は、/proc 以下のファイルに記録されています。


[root@cobalt2 root]# more /proc/bus/usb/devices
T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=a000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

   << 途中を省略 >>

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0693 ProdID=000e Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

 このファイルに表示されている場合は、ハードウェアは Linux には認識されています。




もどる  もどる