ここに私が最近それをした方法があります、そして私は今このアプローチに非常に満足しています。これは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をautomount / media / autousb / <...>に設定します。「/ etc / auto.master」ファイルに次の行を追加しました(Ubuntu 12.04の場合):
/media/autousb /etc/auto.usb --timeout=60
これは、60秒間何も操作しないとAutoFSがデバイスをマウント解除することを意味します。あなたの好みに応じて、多かれ少なかれ使用したいかもしれません。
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
これは何をしますか:このスクリプトはAutoFS(/ usr / sbin / automount)にusbストレージデバイスパーティションをマウントする方法を伝えます。
スクリプトは、最初に「/ sbin / blkid」を使用して、パーティションにどのようなファイルシステムがあるかを調べます。
スクリプトは、デバイスパーティションに応じて適切なマウントオプションを提供します。
注:「vfat」(おそらくUSBスティックで最も一般的)、「ntfs」、および「xfs」ファイルシステムのサンプルコードを含めました。もちろん、これを拡張してより多くのファイルシステムをサポートするのは非常に簡単です。
ステップ3)オプション...「排出」== USBスティック(またはUSBスティック上のパーティション)をアンマウントするには、/ sbin / usbejectの下にスクリプトを作成します。
#!/bin/bash
killall -s SIGUSR1 /usr/sbin/automount
このスクリプトでは、「sudo usbeject」を使用して、マウントされたすべてのUSBデバイスパーティションをマウント解除します(automountにマウント解除を指示することにより)。
もちろん、パーティションがどこでも使用されていないことを確認するだけです。その後、オートマウンタは60秒のタイムアウト後にパーティションをアンマウントします...
ここでの本当のトリックは、「/ media / usb」から「/ media / autousb」へのシンボリックリンクを使用することです。
- "/ media / usb"シンボリックリンクはudevによって作成され、ユーザーにUSBストレージデバイスパーティションが存在する簡単な概要を示します。
- AutoFSは、/ media / usbを介してパーティションを使用する場合、オンデマンドでパーティションを自動マウントします
- スクリプト化された「auto.usb」ファイルを使用すると、あらゆる種類のファイルシステムをサポートでき、さらにあらゆる種類の命名スキームもサポートできます。
- このアプローチは、複数のパーティションが異なるファイルシステムタイプを使用している場合でも、複数のパーティションを持つUSBスティックをサポートします。