今回は、Linuxのマウントについて説明します。「マウント」には本来「乗る」という意味があり、相手に対して馬乗りになる様子をマウンティングと言ったりしますね。
Linuxの世界でマウントと言ったときには、コンピューターの外部にあるストレージを、コンピューターから使えるようにすることを指します。
もっと具体的に説明すると、USBメモリー(=コンピューターの外部にあるストレージ)をLinuxに接続して、USBメモリーのファイルを読み書きできるようにすることをマウントすると言うのです。
そこで今回は、
- Linuxに接続したUSBメモリーが表示されない
- USBメモリーにアクセスできない
- USBメモリーに書き込めない
といったトラブルで困っているあなたにお届けする、USBメモリーを正しくマウントする操作を説明する記事です。今回の記事では、Linux Mint 18.3 Xfceエディションを利用している場合の操作を説明しています。それでは、行ってみましょう。
マウントとは
Linuxの世界でマウントと言ったときには、コンピューターの外部にあるストレージを、コンピューターから使えるようにすることを指す、と書きました。
すごく分かりにくく書くことになってしまいましたが、それは「コンピューターの外部にあるストレージ」の種類が多く、USBメモリーに限らないためです。Linuxにマウントできるストレージを、思いつくままに挙げてみましょう。
- USBメモリー・USB HDD
- SDカード
- CD-ROM・DVD-ROM
- isoファイル
- HDDイメージファイル(vmdkファイル、vhdファイル、vdiファイル)
- NASストレージ(NFSサーバーで公開されているファイルシステム、Windowsの共有フォルダ、SMB、CIFSストレージ
- WebDAVサーバー
- (コンピューター内部の)任意のディレクトリ
これらのストレージは、マウント前にいろいろな準備が必要ですが、いずれも最後はmountコマンドを使用して、Linuxをインストールしたコンピューターから使えるようにできます。mountコマンドの基本的な使い方は以下のとおりです。
[code]
mount デバイス マウントポイント
[/code]
「デバイス」の部分には、USBメモリーなどのストレージを指すキーワード(例:/dev/sdb1)を指定します。
「マウントポイント」の部分には、コンピューター内部の任意のディレクトリ(例:/media/yazaki/MF-LSU1)を指定します。
Linuxにストレージをマウントすると、「マウントポイント」に指定したディレクトリを参照することで、「デバイス」に保存されているファイルやディレクトリを参照できます。また、「マウントポイント」に指定したディレクトリにファイルを書き込むことで、「デバイス」に書き込まれます。
いかがでしょう、マウントのイメージがつかめましたか?
USBメモリーを接続すると自動的にマウントされる
どんなときも、具体例をみると、ああそういうことか!と思えるでしょう。そこで、LinuxをインストールしたコンピューターにUSBメモリーを挿入して、どのように動作するのか見てみましょう。
(1)USBメモリーをパソコンに接続します。
少し待つと、USBメモリーが自動的にマウントされ、以下のように「ボリュームをマウントしました。」と表示されます。さらに、ファイルマネージャーが起動して、USBメモリーのファイルを読み書きできるようになりました。
このファイルマネージャーの中にファイルを作成したりコピーしたりできます。簡単ですね!
(2)USBメモリーを取り外すときは、「」をクリックしてから取り外しましょう。この操作をアンマウントすると言います。
USBメモリーをマウントできないときは設定を確認する
USBメモリーが自動的にマウントされないときは、以下の手順で設定を変更しましょう。
(1)スタートボタンをクリックし、「設定」をクリックして、「リムーバブルドライブとメディア」をクリックします。
(2)赤枠で囲んだ3つのチェックボックスのチェックをつけ、「閉じる」をクリックします。
この設定を変更してから、USBメモリーを接続すれば、上で紹介したとおり自動的にマウントされます。
「端末」を起動してUSBメモリーをマウントする
次は、上記の設定を変更したくない場合や、そもそもデスクトップ環境を使っていない場合に、USBメモリーをマウントする操作を説明します。
※デスクトップ環境をお使いの方は、上で説明した3つのチェックボックスのチェックを外し、「端末」を起動してから操作してください。
ここでは、Windows 10を使ってFAT32形式でフォーマットしたUSBメモリーをマウントする場合の操作を説明します。
(1)パソコンにUSBメモリーを接続します。まだ何も起きていないように見えますが、LinuxカーネルがUSBメモリーを認識しているはずです。確認してみましょう。
(2)以下のコマンドを入力します。
dmesg
dmesgコマンドは、Linuxカーネルが出力したメッセージを表示するコマンドです。最後の方に、USBデバイスを接続したときのメッセージが出力されています。
[ 1105.118782] usb 1-2: new full-speed USB device number 6 using ohci-pci [ 1105.615886] usb 1-2: config 1 interface 0 altsetting 0 endpoint 0x1 has invalid maxpacket 512, setting to 64 [ 1105.615890] usb 1-2: config 1 interface 0 altsetting 0 endpoint 0x82 has invalid maxpacket 512, setting to 64 [ 1105.646629] usb 1-2: New USB device found, idVendor=056e, idProduct=6018 [ 1105.646633] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1105.646635] usb 1-2: Product: MF-LSU3 [ 1105.646637] usb 1-2: Manufacturer: ELECOM [ 1105.646638] usb 1-2: SerialNumber: 1432619411240024 [ 1105.651733] usb-storage 1-2:1.0: USB Mass Storage device detected [ 1105.651922] scsi host3: usb-storage 1-2:1.0 [ 1107.018302] scsi 3:0:0:0: Direct-Access ELECOM MF-LSU3 1100 PQ: 0 ANSI: 6 [ 1107.020685] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 1107.047647] sd 3:0:0:0: [sdb] 31389312 512-byte logical blocks: (16.1 GB/15.0 GiB) [ 1107.065034] sd 3:0:0:0: [sdb] Write Protect is off [ 1107.065036] sd 3:0:0:0: [sdb] Mode Sense: 22 00 00 00 [ 1107.082593] sd 3:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 1107.204671] sdb: sdb1 [ 1107.304408] sd 3:0:0:0: [sdb] Attached SCSI removable disk
私のところでは、上のとおりUSBメモリの製品名「usb 1-2: Product MF-LSU3」が出力されており、LinuxカーネルがUSBメモリーを認識していることが確認できました。また、「sdb: sdb1」と表示されていることから、「/dev/sdb1」でUSBメモリーにアクセスできることもわかります。
次は、USBメモリーをマウントするディレクトリを作成します。
(3)以下のコマンドを入力します。
sudo mkdir -p /media/yazaki/MF-LSU3
Linux Mintでは、/mediaにユーザー名のディレクトリを作成して、その下にUSBメモリーをマウントするディレクトリを作成することが通例のようですので、それに従いました。「MF-LSU3」は、USBメモリーの製品名です。
このように、分かりやすい名前をつけましょう。続けて、USBメモリーのUUID、およびTYPEを確認します。
(4)以下のコマンドを入力します。
sudo blkid
次のように表示されました。
/dev/sda1: UUID="ad2ab370-4702-4497-a00a-0fba97174a17" TYPE="ext4" PARTUUID="66e15bff-01" /dev/sda5: UUID="09eced07-dc39-4dcf-bc01-053d514fcef2" TYPE="swap" PARTUUID="66e15bff-05" /dev/sdb1: UUID="34F1-3A56" TYPE="vfat" PARTUUID="c3072e18-01"
- 手順(2)で確認した「/dev/sdb1」の行が、話題のUSBメモリーの情報。
- UUIDは、簡単にいえばUSBメモリーを他の製品と区別するための情報。
- TYPEは、USBメモリーのファイルシステムの種類を示す情報。
今回は、FAT32でフォーマットしていますので「vfat」と表示されています。もう少し情報収集が続きます。
(5)以下のコマンドを入力します。
id
以下のように表示されます。
uid=1000(yazaki) gid=1000(yazaki) groups=1000(yazaki),...
表示されたuid=1000とgid=1000は、マウント時に指定します。uidとgidを省略すると、USBメモリーに書き込めないトラブルに遭遇します。お待ちかね、マウントするコマンドを入力しましょう!
(6)以下のコマンドを入力します。
sudo mount -o owner,uid=1000,gid=1000,utf8,flush /dev/sdb1 /media/yazaki/MF-LSU3
-oの後に指定した「owner,uid=1000,gid=1000,utf8,flush」は、「,」で区切って一つずつ意味がありますので、簡単に説明しておきます。
オプション | 説明 |
---|---|
owner | nosuidオプションとnodevオプションを有効にする |
uid | ファイルシステムの種類がfatまたはvfatの場合に、ファイルの所有者を指定 |
gid | ファイルシステムの種類がfatまたはvfatの場合に、ファイルの所有グループを指定 |
utf8 | ファイルシステムの種類がvfatの場合に、ファイル名の変換にUTF8を使用する |
flush | 可能限り早くストレージに書き込む |
- uidとgidには、手順(5)で確認したuidとgidを設定。
- 「/dev/sdb1」は、手順(2)で確認。
- 「/media/yazaki/MF-LSU3」は、手順(3)で作成。
ちなみに、表内で軽く触れられているnosuidオプションの説明には、以下のように注意事項が書いてありました。suidperlがインストールされていると危険と書かれていますが、今はあまり気にしなくて良さそうです。
nosuid
SUID および SGID ビットを無効にする (これは安全なように見えるが、suidperl(1) がインストールされている場合には、実際にはむしろ危険である)。引用:https://linuxjm.osdn.jp/html/util-linux/man8/mount.8.html
なかなか大変でしたが、これでUSBメモリーを読んだり、書き込んだりできるようになりました。
(7)USBメモリーを使い終わったら、以下のコマンドでアンマウントしましょう。
sudo umount /media/yazaki/MF-LSU3
まとめ
今回は、Windows 10を使ってFAT32でフォーマットしたUSBメモリーをLinuxにマウントして利用する方法を紹介しました。
FAT32以外の形式でフォーマットしているUSBメモリーの場合は、マウント時のオプションを変更する必要がありますので注意してください。それでは、USBメモリーを利用したHappyなLinuxライフをお過ごしください!