ここに私が最近やった方法がありますが、私はこのアプローチにとても満足しています。これはUbuntu 12.04 + gentoo用ですが、udevのインストールを可能にするディストリビューションとautofsは動作するはずです。
前提条件:udev + autofsをインストールする必要があります。
ステップ1)
次の「/etc/udev/rules.d/90-usbsd-auto.rules」ファイルを作成します(もちろん、「。rules」で終わる限り、任意の名前を使用できます)。:
# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9]
# if partition has a label
# Add symlink /media/usb/<label> to /media/autousb/<label>
# for automounter support
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}", \
RUN+="/bin/ln -sf /media/autousb/$env{ID_FS_LABEL_ENC} /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has a NO label, use kernel name (sd[a-z][1-9])
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660", \
RUN+="/bin/rm /media/usb/%k", \
RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"
# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660"
# Fallback: If partition has NO label, use kernel name
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660"
# When device is removed, also remove /media/usb/<label>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has no label, remove /media/usb/%k
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
RUN+="/bin/rm /media/usb/%k"
これが行うこと:2つのシンボリックリンクを作成します。1つは「/ dev / usbdisks / <...>」の下にあるUSBストレージデバイスパーティション用です。ラベルがない場合は、USBストレージパーティションのラベルまたはカーネル名を使用します。2番目のシンボリックリンクは「/ media / usb / <...>」から「/ media / autousb / <...>」にリンクします。これは自動マウンターサポートのために行われます(ステップ2を参照)。
注:私は当初、ID_FS_LABEL_ENC変数を使用したルールを使用しませんでした。これは私の意見では危険です。同じラベルを使用する2つのUSBスティックを接続するとどうなりますか?
しかし、ポスターは特にUSBディスクのラベルを使用したかったので、それに応じてルールを変更しました。
udevがこれらのルールを確実に読み取るようにするには
sudo udevadm control --reload-rules
このudevルールファイルを使用すると、USBストレージデバイスパーティションを自動マウントするためのすべてがセットアップされます。ただし、現時点では、デバイスは(意図的に)自動マウントされないことに注意してください。使用すると自動マウントされます
ステップ2)
autofsをセットアップして/ media / autousb / <...>を自動マウントします。「/ etc / auto.master」ファイルに次の行を追加しました(Ubuntu 12.04の場合):
/media/autousb /etc/auto.usb --timeout=60
これは、AutoFSが60秒間非アクティブになった後にデバイスをマウント解除することを意味します。好みに応じて、使用量を減らしたり増やしたりすることもできます。
Gentooでは、「/ etc / autofs / auto.master」を変更する必要があるため、使用するのが理にかなっています
/media/autousb /etc/autofs/auto.usb --timeout=60
ここで、次のコンテンツを含む「auto.usb」を作成しました。
#!/bin/bash
key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
exit 0
fi
exit 1
このauto.usbは実行可能にする必要があり、autofsはこれを(bash)スクリプトとして使用します。例えば
sudo chmod 0755 /etc/auto.usb
これが行うこと:このスクリプトは、USBストレージデバイスパーティションをマウントする方法をAutoFS(/ usr / sbin / automount)に指示します。
スクリプトは、最初に「/ sbin / blkid」を使用して、パーティション上にあるファイルシステムの種類を確認します。
スクリプトは、デバイスパーティションに応じて適切なマウントオプションを提供します。
注:「vfat」(おそらくUSBスティックで最も一般的)、「ntfs」および「xfs」ファイルシステムのサンプルコードを含めました。もちろん、これを拡張してより多くのファイルシステムをサポートすることは非常に簡単です。
ステップ3)オプション...「取り出し」== usbスティック(またはusbスティックのパーティション)をアンマウントするには、/ sbin / usbejectの下にスクリプトを作成します。
#!/bin/bash
killall -s SIGUSR1 /usr/sbin/automount
このスクリプトでは、「sudo usbeject」を使用して、マウントされたすべてのUSBデバイスパーティションをアンマウントします(自動マウントにアンマウントするように指示することにより)。
もちろん、パーティションがどこでも使用されていないことを簡単に確認できます。オートマウンタは、60秒のタイムアウト後にパーティションをアンマウントします...
ここでの本当のトリックは、「/ media / usb」から「/ media / autousb」へのシンボリックリンクを使用することです。
- 「/ media / usb」シンボリックリンクはudevによって作成され、ユーザーにそこにあるusbストレージデバイスパーティションの簡単な概要を提供します
- AutoFSは、/ media / usbを介して使用する場合、必要に応じてパーティションを自動マウントします
- スクリプト化された「auto.usb」ファイルを使用すると、あらゆる種類のファイルシステムをサポートでき、さらに、あらゆる種類の命名スキームもサポートできます。
- このアプローチは、これらのパーティションが異なるファイルシステムタイプを使用している場合でも、複数のパーティションを持つUSBスティックをサポートします。