カテゴリー:ログイン中

質問

USBメモリーをパソコンに挿入しても,ドライブとして表示されない

回答

USBポートの設定が有効になっているかを確認します。有効になっていれば,次にUSBメモリーが認識されていることを確認します。確認できれば,コマンド・ラインから直接マウントしてみます。このようにして段階的に,どこに原因があるかを突き止めます。


難易度:★★★★ 対象ディストリビューション:Fedora Core,Red Hat

 最近のLinuxディストリビューションの多くは,挿すだけでUSBメモリーを認識します。そして,ファイル・マネージャやデスクトップ上にアイコンとして表示します。ただし,表示されない場合には,まずはUSBポートがきちんと認識されているかを確認しましょう。

 USBポートを標準で備えるほとんどのパソコンには,USBポートを有効にするか否かの設定がBIOSに用意されています。BIOSのセットアップ画面を表示させる方法は,各メーカーのパソコンによって異なります。一般には,パソコンの起動直後の画面に小さく英語で,その旨の案内が書かれています。例えば,「Press DEL to enter Setup」のようにです。この例なら〔Delete〕キーを押すとBIOSのセットアップ画面が表示されます。

 USBの設定項目もメーカーによって異なりますので,一概には言えませんが,一般には「Integrated Peripherals」というメニューを選択し,「USB Controller」が「Enabled」になっていれば,有効になっています。BIOSの設定でUSBポートが有効になっており,パソコンやUSBメモリーのハードウエアに問題がなければ,USBメモリーを挿入してLinuxを起動しましょう。

 起動したら,コンソール上で,

$ /sbin/lsmod

を実行します。このlsmodコマンドは,動的にカーネルに組み込まれているモジュール(デバイス・ドライバなど)を一覧表示します(図4)。

図4●USBに関連するモジュールを確認する
図4●USBに関連するモジュールを確認する
[画像のクリックで拡大表示]

 USBメモリーを利用するには,「scsi_mod」のSCSIドライバ,「usbcore」のUSBインタフェースの核になるドライバ,「usb-storage」のUSBインタフェースに接続された記憶媒体をストレージとして認識させるドライバと,USB1.1なら「usb-ohci」または「usb-uhci」,USB2.0なら「ehci-hcd」のUSBコントローラ(チップ)用ドライバのいずれかが読み込まれている必要があります。なお,usbcoreは直接カーネルに組み込まれていることもありますので,表示されないことがあります。もし,いずれかのモジュールが組み込まれていなければ,

# modprobe <ドライバ名>

を実行してみましょう。エラーが表示されると,それで原因が分かります。

 また,USBメモリーの挿入時に自動認識させるには,/etc/hotplugディレクトリ内に「usb.distmap」「hotplug.functions」「usb.agent」「usb.rc」のファイルが必要です。

 これらのモジュールやファイルが存在する場合には,/var/log/messagesのログ・ファイルを確認し,USBメモリーがきちんと認識されているか否かを確認します。図5のように,ログを調べて,USBメモリーにSCSIのデバイス・ファイル名(ここでは「sda」)が割り当てられていれば,マウントできる状態までになっています。

図5●USBメモリーに,SCSIのデバイス・ファイル名が割り当てられた
図5●USBメモリーに,SCSIのデバイス・ファイル名が割り当てられた
[画像のクリックで拡大表示]

 手っ取り早く原因を突き止めるには,/var/log/messagesのログ・ファイルを一番先に見るといいでしょう。エラーが発生していたり,USBに割り当てられたログがなければ,モジュールや/etc/hotplugディレクトリ以下のファイル,BIOSの順に原因を追求していきます。

 もしデバイス・ファイル名が割り当てられていたら,mountコマンドを発行して,実際にマウントしてみます。任意のディレクトリを作成し,mountコマンドを発行します。

$ su <bR># mkdir -p /mnt/usbmem <br># mount -t vfat /dev/sda <br>/mnt/usbmen

 マウント時にエラーが発生しなければ,/mnt/usbmemディレクトリにアクセスすると,USBメモリーに読み書きができます。