マウント

CD-ROMフロッピードライブUSBメモリ
ハードディスク/etc/fstab日本語ファイル名の表示

最新版はこちら

マウントとは

 マウントとは、ハードディスク、フロッピーディスク、CD-ROM、USBメモリ などのデバイスのファイルをLinuxで読み書きしようとした時に必要となる行為である (とワタシは思っている)。 また、取り出し・取り外しする時にはアンマウント(umount)しなければならない。 微妙に分かりにくい作業が必要なので、自分のためにメモっておくことにする。


基本的な作業

 基本的なマウントの作業は以下のようなコマンドの実行である。

$ mount [オプション] "マウント元デバイス" ["マウント先"]

 ここで、"マウント元デバイス"は使いたいデバイスを示すパス(?)、"マウント先"は マウントしたデバイスのファイル(ディレクトリ)を示す位置(?)みたいな感じ。

下手な説明よりも、具体的な例の方が分かりやすいだろう。例えば、

$ mount /dev/cdrom /mnt/cdrom

とした場合、CD-ROMの中身が /mnt/cdrom ディレクトリにマウントされる。 つまり、こんな感じ。

$ cd /mnt/cdrom
$ ls
*** CD-ROM の中身のリスト ***
$

 アンマウントは以下のような感じになる。

$ umount "マウント元デバイス"

 具体的な例は次のような感じ。

$ umount /dev/cdrom

 マウントやアンマウントは管理者(root)しか行えない場合と、ユーザでも行える 場合がある。それは設定によるのだが、基本は管理者だけである。設定によって ユーザにも権利が与えられる(CD-ROM、フロッピーはユーザにも権利が与えられている 場合がある)。

 以下はもうちょっと具体的に。


CD-ROM

 とりあえず、手っ取り早いCD-ROMのマウントについて。

 CD-ROMはドライブに挿入した時点で自動的にマウントされ、 取り出した時に自動的にアンマウントされるようになっていることもある。 とりあえず、RedHat9でグラフィカルな感じでインストールした場合、 そうなっている。

 そうなっていない場合は手動でマウントしなければならない。 で、コマンドは上記の例である。ただし、"マウント先"にはあらかじめディレクトリ が作成されていなければいけない。また、設定によっては"マウント先" /mnt/cdrom または、"マウント元デバイス" /dev/cdrom のどちらかのみを用い、両方 は付ける必要が無い(後述fstabあたりで)。アンマウント は上記の例の通りでいいでしょう。

 ついでに、CDドライブの開閉のコマンド

$ eject ←開く
$ eject -t←閉じる

 なお、USB外付けドライブの場合、下記のUSBメモリと似た感じになる。


フロッピーディスク

 フロッピーが挿入とともにマウントされることは考えにくい。手動でのマウント が必要だろう。必要な作業は、

$ mount /dev/fd0 [/mnt/floppy]
$ umount /dev/fd0

こんな感じ。CD-ROMの場合同様、"マウント先"/mnt/floppy は書かなくていい 場合がある。フロッピードライブが複数ある場合、fd0,fd1,fd2,・・・となるの だろう(1つしか持ってないからわかんないけど)。

 なお、USBのフロッピードライブの場合、下記のUSBメモリと似た感じになる。


USBメモリ

 上の2つは、簡単にマウントできるように設定済である場合が多いかと思う。 しかし、USBメモリ用に設定されていることはまず無いだろうから、差し当たり "マウント先"を書く必要があるだろう。ただ、USBに接続することで自動的に (一時的に)設定されるようになっている事もある(後述fstab)。

 USBメモリはSCSIデバイス的扱いになるらしい。まあ、そんなことどうでもいい。 マウント・アンマウントは以下のような感じ(Easy Disk や Clip Drive はこれで いける)。("マウント先"ディレクトリは前もって作成されていなければならない)

# mount -t vfat /dev/sda1 /mnt/usb
# umount /dev/sda1

 SCSIやUSBの状況によっては、"sda1"でないこともあろう。が、今のところ メモリを2つ、3つと接続したことがないので分からない。"sdb1"となるのか?

ハードディスク

 ハードディクスはなんかちょっと分かりにくい。というかどう書いていいのか 分からない。とりあえず、こんな感じ。

# mkdir /mnt/tmp
# mount /dev/hda5 /mnt/tmp
# umount /dev/hda5

いうまでも無いかも知れないが、"hda5"が目的のデバイスである場合である。 で、目的のデバイスがどれかを探す方法が良く分からない。例えば、Linuxシステム と同じハードディスクの Windows のパーティション領域(FAT)をマウントしたい時、 こんな感じで探してみた。

[root@Host tmp]# mount
/dev/hda7 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda6 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
[root@Host tmp]# /sbin/fdisk /dev/hda
・・・・・・

コマンド (m でヘルプ): p

ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 3738
ユニット = シリンダ数 of 16065 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hda1   *         1      1122   9012433+   c  Win95 FAT32 (LBA)
/dev/hda2          1123      3738  21013020    f  Win95 拡張領域 (LBA)
/dev/hda5          2431      3738  10506478+   b  Win95 FAT32
/dev/hda6          1123      1135    104359+  83  Linux
/dev/hda7          1136      2382  10016496   83  Linux
/dev/hda8          2383      2430    385528+  82  Linux スワップ

領域テーブル項目がディスクの順序と一致しません

コマンド (m でヘルプ): q

[root@Host tmp]#

設定ファイル /etc/fstab

 マウント元デバイス、マウント先ディレクトリ、ファイルフォーマットなどの 設定を記録しておき、自動的にマウントしたり、マウントの作業を簡略化できる ようになる。詳しいことは fstab のマニュアル($ man fstab)を読んだ方が いいだろう。とりあえずワタシのウチの /etc/fstab はこんな感じになっている。

[root@Host tmp]# cat /etc/fstab
LABEL=/        /              ext3    defaults        1 1
LABEL=/boot    /boot          ext3    defaults        1 2
none           /dev/pts       devpts  gid=5,mode=620  0 0
none           /proc          proc    defaults        0 0
none           /dev/shm       tmpfs   defaults        0 0
/dev/hda8      swap           swap    defaults        0 0
/dev/cdrom     /mnt/cdrom     iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0       /mnt/floppy    auto    noauto,owner,kudzu 0 0
/dev/hda5      /mnt/win       vfat    noauto,user,codepage=932,iocharset=euc-jp  0 0
/dev/sda1      /mnt/tmp       vfat    noauto,user,codepage=932,iocharset=euc-jp  0 0

   

自分で追加したのが最後の2行。それぞれ Windows領域用、USBメモリ用である。 これらの行が他に比べ長いのは、日本語(Shift_JIS)のファイル名を表示させるためで ある。これについては、下記を参照。

(1/25追記) なお、USBデバイスを接続すると自動的に"fstab"が書き換えられ、 "/dev/sda /mnt/floppy ・・・"とか、"/dev/sda /mnt/diskonkey ・・・"が追加 されるようになっている事もある。うれしいような、不安なような・・・。 とりあえず、USBに接続する前後で "fstab" を見比べてみては?


オートマウント だか スーパーマウント だか

2004. 11. 24

 ワタシ自身 詳しいことは知らないのだが、オートマウントだかスーパーマウント だかというモノがあるらしく、新しめのディストリビューションにはデフォルトで 入っていたりするらしい。で、なにをしてくれるかというと、ドライブにCD-ROMを入れる とか、USBポートにメモリを挿すとかしたら、勝手に(自動的に)マウントしてくれる ということらしい。ということでUSBメモリで試してみると、SUSE Linuxの場合 「/media/usb-storage-xxxx...」というディレクトリに勝手にマウントされた(他の ディストリビューションだと「/mnt/usb....」な場合が多いのかもしれない)。

 まあ、勝手にマウントしてくれるのはいいのだが、問題はアンマウントのほうかと 思う。マウントはroot権限で行われているため、ユーザは「umount」コマンドでは アンマウントできないのである。どうすればいいのか。。。どうもしなくて良いという のが正解のようだ。つまり、使い終ったらそのままメモリをひっこ抜けばよいらしい。 ただし、メモリアクセス中でないことを確認しなければならない(EasyDiskの場合だと LEDランプの点減がゆっくりであることを確認する)。OSにとってはいつ引き抜いても 問題ないとしても、ユーザとしては結構心配だったりする。ということで、ワタシは 「eject」コマンドを使うことにしている。「eject /media/usb-storage-xxx....」と 実行すれば、アンマウントっぽいことをしてくれる。(設定によっては、ejectコマンド で上記のようにはできない場合がある)


Windowsの日本語ファイル名の表示

 Windowsで日本語のファイル名を付けたものの場合、これまでに説明した コマンドオプションのままでは文字化けする。日本語を表示する場合、例えば、 次のようにする。

# mount -t vfat -o codepage=932,iocharset=euc-jp /dev/sda1 /mnt/usb

 "codepage=932"は良くわからないが、"iocharset=euc-jp"で文字コードを変換 させているようだ。この件については @ITの「Windowsパーティションの日本語ファイル名を表示するには」を参考に した。これをしない場合、文字化けをする程度ならいいのだが、日本語文字が全て"?" となり、名前の文字数が同じファイル・ディレクトリは全て同じものとされてしまう。


もどる