Jessie LiteでさまざまなUSBスティックファイルシステムを自動マウントする


18

Raspberry Pi 2を再起動せずにホットプラグするなど、USBスティックfat32およびntfsをオンザフライで自動マウントできるようにしたいのですが、jessie-litentfs-3gをインストールしています。

fstabすべてのデバイスのUUIDを見つける必要があるため、UUIDを入力することはオプションではありません。さまざまなファイル形式のさまざまなUSBデバイスを接続して、自動的にマウントできるようにしたいと考えています。これは可能ですか?

また、usbmountプログラムで動作するようになったことがあります。エラーが発生する前に、しばらくドライブにアクセスできましたtransport endpoint is not connected。プログラムを再インストールしましたが、エラーが発生した場合でも、その時点に到達することはありませんでした。

回答:


15

多くの調査の後、usbmountで問題を修正できました。

NTFSをusbmountに追加する

  1. でusbmountをインストールしsudo apt-get install usbmountます。
  2. NTFSドライバパッケージntfs-3gをインストールしますsudo apt-get install ntfs-3g

  3. でusbmountファイルを開いて、指定したファイルシステムをマウントするようにusbmountを構成しますsudo nano /etc/usbmount/usbmount.conf

ここには、という行がありFILESYSTEMS=""ます。この行で指定されたファイルシステムのみがusbmountを介してマウントされるため、次のように変更します。FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

usbmountでNTFSファイルシステムをマウントする場合は、ntfsfuseblkを必ず行に追加 してください。NTFSデバイスは、ntfs-3gパッケージによってfusblkとしてリストされることがあるため、これら2つは同じです。でも、なぜだか分かりません。

また、構成にfuseblkを追加しない場合、接続されていないNTFSデバイスは自動的にマウント解除されません。彼らは、マウント滞在し、彼らは、デバイスを手動でアンマウントされるまでに取り付けられているフォルダ続けるunmount /dev/sda1 - > sda1には、別の変数可能性がどこに

次の重要な行はFS_MOUNTOPTIONS=""です。ここで、マウントするファイルシステムとマウント方法を指定します。

次のように変更します。 FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

これにより、ファイルシステムvfat(fat32)ntfs-3g(NTFS)、および fuseblk(再びNTFS)がマウントされます。ほとんどのパラメーターは同じままにできると思います。ここでも、ntfs-3g(ntfsではなくntfs-3gを追加)とfuseblkを追加して、すべてのNTFSファイルをマウントできるようにします。ファイルシステムを増やすには、で始まる行を追加し-fstype=ます。

デバイスが取り外されるまでNTFSをマウントしたままにする

マウントされたNTFSドライブが数秒間しかアクセスできない場合の問題の解決策を次に示します。この修正は、Christian Weinbergerによるものです。

  1. ファイルの作成usbmount.rulesをして/etc/udev/rules.d/に持ちますsudo nano /etc/udev/rules.d/usbmount.rules

これはコンテンツです:

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. ファイル作成usbmount @ .serviceのに/ etc / systemdに/システム/sudo nano /etc/systemd/system/usbmount@.service

これはコンテンツです:

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

ここで再起動しcat /etc/mtab、USBデバイスがマウントされているフォルダーを確認します。デフォルトでは、それらは/ media / usbstick0へのマウントです。

ソース:

クリスチャン修正

なぜfusblkですか?


このソリューションにはさらに2、3の手順が必要です。私の答えをご覧ください。
AbiusX

2

Untermoserによる答えは正しいですが、usbmount機能の一部を破壊します。

彼はSystemdユニットを使用して(NTFSを有効にするために)マウントするプロセスを生成しているため、環境変数$DEVPATHusbmount addコマンドに送信されなくなり、シンボリックリンクの作成に失敗します。

これを修正するには、次を実行します。

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

上記のコマンドが$DEVPATH利用できない場合は再作成します。

に関しては、usbmountにも別のバグがありusbmount removeます。マウントポイントをループし、usmount configで定義されているものがアンマウントされます。ただし、一致が見つかったがそのリストにない場合は、ブレークを削除して何もしません。1つのUSBに複数のマウントポイントを作成する場合、usbmountは最初のマウントポイントを認識し、何もしないため、これは特に重要です。

修正するには、次の変更が必要です。

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

これにより、ブレークが内側のループ内に移動します(成功が保証され、2ステップがブレークします)。


1

同じものを新しいStretch(Lite)で動作させようとしていて、UntermoserとAlbiusXの答えがvfatドライブをアンマウントしないことに気付いている場合は、提供された答えに加えて、これらの追加手順に従う必要があります:

ターミナルで次のコマンドを実行します。

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

これにより、必要なフォルダーが作成されます。次に、ここでconfファイルを作成します。例:

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

このファイル内に次の行を追加します。

[Service] MountFlags=shared

これにより、systemd-udevdのプライベートファイルシステム名前空間のデフォルトの動作が変更され、共有された名前空間が使用されます。これは、jessieのudevの動作と同等です。

/unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156から入手


だから、これはずっと問題でした-私は時代遅れのドキュメントを見ていました。実行していますLinux raspberrypi 4.14.79-v7+参考のために、パイの上に
ctietze
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.