Linux(Debian)でUSBドライブを自動的にマウントする方法は?

Linux(Debian)でUSBドライブを自動的にマウントする方法は?

LinuxでUSBドライブが自動的にマウントされる方法は、新しいリリースごとに変わるようです(幸いにも私はDebianを使用しているので、2年ごとに数日間無駄になります)。 usbmount、udisks、udisks2、udisks-glue、pmount、カスタムudevルールがありましたが、おそらくもっと多くを忘れていました。 (一見すると、名前付きアイテムが1つ以上afuse存在するようですが、よく文書化されていません。)これらのどれももはや機能しません(少なくとも私にとっては)。

DebianでUSBドライブを自動マウントする「現在の」方法は何ですか?次のudevルールを使用しましたが、ストレッチからバスターへの更新後に動作が停止しました。

SUBSYSTEM=="usb", DRIVERS=="usb-storage", ACTION=="add", \
RUN+="mkdir /media/usb%n; mount -o gid=plugdev,umask=002,fmask=111,users /dev/%k%n /media/usb%n"

また、私が見逃したかもしれない新しいバージョンにアップデートした後でも安定して動作することができる安定したソリューションは何ですか?

答え1

あなたは作ることができますsystemd.mountそしてsystemd.automountユニットファイル。例は次のとおりです。

/dev/sdb1以下にインストールするにはファイルを作成し/mnt/mountpointますmnt-mountpoint.mount

sudo nano /etc/systemd/system/mnt-mountpoint.mount

注:ユニットファイルの名前はdir-sub-dir.mountマウントポイントから抽出されます/dir/sub-dir/media/mountpointこの名前のデバイスをマウントする必要がある場合media-mountpoint.mount)。

次に、次の行を貼り付けます。

[Unit]
Description=Mount sdb1

[Mount]
What=/dev/disk/by-uuid/UUID_here
Where=/mnt/mountpoint
Type=auto
Options=defaults

[Install]
WantedBy=multi-user.target

blkid置き換えるuuidです。UUID_here/dev/sdb1

mnt-mountpoint.automountファイルを生成します。

sudo nano /etc/systemd/system/mnt-mountpoint.automount

次の行が含まれます:

[Unit]
Description=Automount usb

[Automount]
Where=/mnt/mountpoint

[Install]
WantedBy=multi-user.target

USBを接続してデバイスを起動して起動します。

sudo systemctl daemon-reload
sudo systemctl enable --now  mnt-mountpoint.mount mnt-mountpoint.automount

答え2

アップデート[2022-03-06]:apt install udisks2USB自動マウント機能を提供する必要があります。

私はDebianのnautilus、udisks2、libglib2.0-bin(gioバイナリを含む)のパッケージ依存関係を調べました。これの上に建て、これの上にArchlinux USBディスクページ私は今信じています:

  • 実際にインストールを実行する最も先進的な技術はudisks2です。自動マウントの次善策はudisksctl unmount -b /dev/$DEVICE
  • 「標準」Debian Gnomeのインストールでは、Nautilusはデスクトップのアイコンを制御します。 USBドライブを挿入すると、ドライブアイコンが表示されますが、アイコンをクリックするまでドライブをマウントできません。
  • おそらく、USB自動マウント機能を備えた最小デスクトップ用の最良のオプションは次のとおりです。ウディスキー

udiskieを起動するためのユーザーsystemdサービスを追加しました。

[Unit]
Description=Udiskie automount daemon

[Install]
WantedBy=graphical-session.target

[Service]
ExecStart=/usr/bin/udiskie --verbose --use-udisks2 --automount --no-config --notify --tray --appindicator

答え3

StretchからBuster(ヘッドレスRaspberry Pi Zero W)にアップグレードした後も同じ問題が発生しました。私の場合は、/etc/fstabsystemdが自動的にインストール単位を生成する方法を使用しています。私のすべてのディスクはfstabで指定されており、Stretchのホットプラグに自動的にマウントされます。バスターで失敗したすべて。 (ただし、再起動時にディスクは正常にマウントされます。)

問題の原因は次のとおりです。変化新しいシステムバージョンでは:

    * The .device units generated by systemd-fstab-generator and other
      generators do not automatically pull in the corresponding .mount unit
      as a Wants= dependency. This means that simply plugging in the device
      will not cause the mount unit to be started automatically. But please
      note that the mount unit may be started for other reasons, in
      particular if it is part of local-fs.target, and any unit which
      (transitively) depends on local-fs.target is started.

次のコマンドで確認しましたsystemctl show my-mount.mount。デバイスがリストにありませんWantedBy=。 (local-fs.targetストレッチには対応local-fs.targetするデバイスがありますが、両方ともdev-sdaX.deviceリストされます。)結果として、ディスクを挿入するとmy-mount.mountデバイスの起動はトリガされません。

だから私に役立つ解決策は、local-fs.target新しいディスクが挿入されるたびにトリガーされる新しいudevルールを作成することでした。

$ cat /etc/udev/rules.d/98-usb-disk-mount.rules 
ACTION=="add", KERNEL=="sd?[0-9]", SUBSYSTEM=="block", RUN+="/bin/systemctl start local-fs.target"

(注:systemctl start local-fs.targetfstabディスクマウントをトリガするには、このコマンドを使用することをお勧めします。システムマニュアル.)

関連情報