マウント
関連記事
mount はファイルシステムやパーティションテーブル、共有フォルダにアクセスするのに使われるアプリケーションです。Linux カーネルによってサポートされているファイルシステムをマウントできるだけでなく、他のドライバーやアプリケーションを使って拡張することが可能です。例えば ntfs-3g を使えば NTFS ファイルシステムがマウントできるようになります。
目次
サポートされているファイルシステム
使用しているカーネルと、カーネルの設定によってサポートされているファイルシステムを表示するには:
$ zgrep -e 'FS_' -e _FS -e 'CONFIG_ISO' -e '_NLS=' -e CONFIG_NLS_ISO /proc/config.gz
サポートされるファイルシステムについては mount コマンドのマニュアルで読めます: man mount
。
ファイルシステムのマウント
/etc/fstab (fstab(5) を参照) ファイルには、どこにどのオプションを使ってデバイスをマウントするかを各行に記述します。/etc/fstab
で指定したファイルシステムは起動時にマウントされます。これには例外があり、例えば noauto
オプションが指定されたデバイスはマウントされません。他の OS のパーティションなどで使うと有用です。外付けデバイスは nofail
オプションを付けることで、存在する場合はマウントされ、存在しない場合は無視されます。詳しくは Fstab#外部デバイス を参照してください。
fstab や mtab に書かれているファイルシステムをマウントする際は、デバイスまたはマウントポイントを指定するだけで十分です:
# mount /dev/sdXY
デバイス (またはラベル/UUID) とディレクトリ (マウントポイント) が指定されている場合、mount プログラムは /etc/fstab
ファイルを読み込みません。例えば:
# mount /dev/foo /dir
マウントポイントが存在しない場合、まず作成する必要があります。MYDIR1 にマウントするには:
# mkdir /mnt/mydir1 # mount /dev/sdXY /mnt/mydir1
詳しくは /etc/fstab, man fstab
, man mount
を見てください。
何がマウントされているか確認
/etc/mtab
と /proc/mounts
ファイルを見ることで何がマウントされているか確認することができます。
mtab
/etc/mtab はシステムによって生成されるファイルであり、ファイルシステムをマウントしたりアンマウントしたときに mount アプリケーションによって作成・更新されます。
このファイルにはデバイスノードとマウントポイント、使用されるマウントオプションが記述されています。何も引数を付けないで mount
プログラムを実行したときに、このファイルが出力されます。
mtab ファイル定義
ファイルの各行は現在マウントされているファイルシステムに対応しており、以下の情報が示されています:
- ファイルシステム。
- マウントポイント。
- ファイルシステムのタイプ。
- ファイルシステムのマウント中に使用されるマウントオプション。
既定のオプションを変更するのに使える方法
以下はマウント機能を拡張したりデフォルトのオプションを変更する方法の例です。カーネルのデフォルト設定を変更したいときは自分でカーネルをコンパイルする必要があります。スクリプトが存在しない場合、デフォルトのオプションが使われます。
- 自分でカーネルをコンパイル
- スクリプトを使う
- fstab を編集する
- udev / udisks ルールを作成する - Linux カーネルのデバイスマネージャ。
- 上で書いているように手動でマウント
サポートされているファイルシステムなら大抵は mount.X スクリプトまたはシンボリックリンクを使うことでデフォルトの mount のオプションを変更できます (X はファイルシステムの名前に置き換えてください)。mount.X スクリプトを無視するには -i
オプションを使います: mount -i -t reiserfs /dev/sdXY /mnt/sdXY
。変更された設定を見る方法は2つあります:
- mount と書いて
Tab
キーを押す。 ls /usr/bin/mount.*
を実行。
他のファイルシステム
VFAT, FAT, DOS
カーネルのデフォルトの mount 設定の例:
$ zgrep -e FAT -e DOS /proc/config.gz | sort -r
# DOS/FAT/NT Filesystems CONFIG_FAT_FS=m CONFIG_MSDOS_PARTITION=y CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_NCPFS_SMALLDOS=y
オプションの簡単な説明:
- 言語設定: CONFIG_FAT_DEFAULT_CODEPAGE, CONFIG_FAT_DEFAULT_IOCHARSET
- FAT パーティションの全てのファイル名を小文字に (有効化されている場合): CONFIG_NCPFS_SMALLDOS
- FAT ファイルシステムのサポートの有効化: CONFIG_FAT_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS
- 86x PC における FAT でパーティションされたハードディスクのサポートの有効化: CONFIG_MSDOS_PARTITION
mount によって検知されたパーティションタイプが VFAT の場合、/usr/bin/mount.vfat
スクリプトが実行されます。
/usr/bin/mount.vfat
#!/bin/bash #mount VFAT with full rw (read-write) permissions for all users #/usr/bin/mount -i -t vfat -oumask=0000,iocharset=utf8 "$@" #The above is the same as mount -i -t vfat -oiocharset=utf8,fmask=0000,dmask=0000 "$@"
NTFS
デフォルト設定:
$ zgrep ^CONFIG_NTFS /proc/config.gz
CONFIG_NTFS_FS=m CONFIG_NTFS_RW=y
カーネルコンフィグオプション CONFIG_NTFS_RW=y
は NTFS ファイルシステムの読み書きサポートを有効化します。また、読み書きモードで ntfs-3g ドライバーが使われるようにカーネルを定義します。オプションによって読み書きモードも有効にできますが、カーネルに組み込まれている NTFS ファイルシステムのサポートは読み取りのみです。
mount.ntfs
を実行するときのデフォルトのマウントオプションは /usr/bin/mount.ntfs
シンボリックリンクの名前を変更して、そこに適当なオプションを記述したスクリプトを作成することで変更できます。もしくは、-i オプションを使えば mount.X ファイルを全て無視することができ、カーネルによってネイティブにサポートされている機能が使われます。以下は NTFS を読み取り専用でマウントする例です:
/usr/bin/mount.ntfs
#!/bin/bash #mount -i -oro "$@" #mount with a read-only rights ntfs-3g -oro "$@" & disown
ntfs-3g ドライバーに関する詳細は man 8 ntfs-3g
を見て下さい。
スクリプトを使うことで、USB ドライブやイメージファイル (ISO, img, dd) がマウントされたときのアクションを追加できます。
参照
- カーネルによってサポートされているファイルシステムのドキュメント: kernel.org
- mount コマンドのマニュアル: linux.die.net
- Wikipedia:ja:mount (UNIX)
- Creating and using disk images mini-howto: darkdust.net