Debian 12 (bookworm) では、autofs を介して USB ハードドライブをマウントできません。このリソース同様の質問がありますが、何も機能しないようです。 Debianの本虫(ターミナルで - GUIが実行されていない)からUSBドライブを自動的にマウントする現在の方法は何ですか?
私の/etc/auto.master:
+dir:/etc/auto.master.d
+auto.master
/media /etc/auto.ext-usb --timeout=2,sync,nodev,nosuid
私の/etc/auto.ext-usb:
usbbackup -fstype=auto UUID=7c26a13b-2f28-4fbd-a0dc-6ce6c8a63dad
(blkidでuuidを計算し、ドライブをext4としてフォーマットしました。たとえば、/mnt/usbに問題なく手動でマウントできます。)
答え1
私はDebianベースのLinux Mintを使用していますが、これはDebianの本虫でも動作します。
これは仕事です。udevサービス、systemdの拡張デバイスマネージャです。
一部のハードウェアが接続されていて、追加のモジュールをロードしたり、実行中の一部のタスクを開始したりできる場合は、カーネル通知が届きます。
ただし、udev実行操作ではbinフォルダの下位レベルのマウントコマンドを呼び出すことができず、機能せずに問題が発生します。
あなたはする必要がありますシステムマウント https://manpages.debian.org/bookworm/systemd/systemd-mount.1.en.html、udev が実行を完了すると、udev の外部の操作が完了します。
- udevデーモンが実行されていることを確認
systemctl list-units *udevd.service
し、systemd-mountを確認してください。ls /usr/bin/systemd-mount
- デバイスノード/パスのインポート - ファイルマネージャを使用して手動でUSBドライブをマウントし、USBスティック
オープンターミナルを使用し、USBドライブから出力されるファイルまたはディレクトリに対してdfコマンドを実行しました
df "filename|directory on your USB drive"
。
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdf1 3997696 2821980 1175716 71% ...
これでUSBドライブのデバイスノード/パスが作成されました。/dev/sdf1
- udev ルールに必要なデバイス属性と環境変数を udev データベースから取得します。
USBドライブを取り外して接続するたびに開発パスが変わるか、
udevadm info /dev/sdf1
最初のUSBドライブからの詳細な出力が表示されるため、udevルールを適用する必要があるデバイスを正確に識別する必要があります。
udevadm info --attribute-walk /dev/sdf1
P: /devices/pci0000:00/0000:00:09.0/0000:02:00.0/usb8/8-1/8-1:1.0/host6/target6:0:0/6:0:0:0/block/sdf/sdf1
N: sdf1
L: 0
S: disk/by-id/usb-SanDisk_U3_Cruzer_Micro_0000186F6A60343E-0:0-part1
S: disk/by-uuid/3CF6-EEA5
S: disk/by-path/pci-0000:02:00.0-usb-0:1:1.0-scsi-0:0:0:0-part1
S: disk/by-partuuid/e41c7c97-01
E: DEVPATH=/devices/pci0000:00/0000:00:09.0/0000:02:00.0/usb8/8-1/8-1:1.0/host6/target6:0:0/6:0:0:0/block/sdf/sdf1
E: DEVNAME=/dev/sdf1
E: DEVTYPE=partition
E: DISKSEQ=21
E: PARTN=1
E: MAJOR=8
E: MINOR=81
E: SUBSYSTEM=block
E: USEC_INITIALIZED=2220353618
E: ID_VENDOR=SanDisk
E: ID_VENDOR_ENC=SanDisk\x20
E: ID_VENDOR_ID=0781
E: ID_MODEL=U3_Cruzer_Micro
E: ID_MODEL_ENC=U3\x20Cruzer\x20Micro\x20
E: ID_MODEL_ID=5406
E: ID_REVISION=3.21
E: ID_SERIAL=SanDisk_U3_Cruzer_Micro_0000186F6A60343E-0:0
E: ID_SERIAL_SHORT=0000186F6A60343E
E: ID_TYPE=disk
E: ID_INSTANCE=0:0
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=usb-storage
E: ID_PATH=pci-0000:02:00.0-usb-0:1:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_02_00_0-usb-0_1_1_0-scsi-0_0_0_0
E: ID_PART_TABLE_UUID=e41c7c97
E: ID_PART_TABLE_TYPE=dos
E: ID_DRIVE_THUMB=1
E: ID_FS_UUID=3CF6-EEA5
E: ID_FS_UUID_ENC=3CF6-EEA5
E: ID_FS_VERSION=FAT32
E: ID_FS_TYPE=vfat
E: ID_FS_USAGE=filesystem
E: ID_PART_ENTRY_SCHEME=dos
E: ID_PART_ENTRY_UUID=e41c7c97-01
E: ID_PART_ENTRY_TYPE=0xc
E: ID_PART_ENTRY_NUMBER=1
E: ID_PART_ENTRY_OFFSET=2048
E: ID_PART_ENTRY_SIZE=8011776
E: ID_PART_ENTRY_DISK=8:80
E: DEVLINKS=/dev/disk/by-id/usb-SanDisk_U3_Cruzer_Micro_0000186F6A60343E-0:0-part1 /dev/disk/by-uuid/3CF6-EEA5 /dev/disk/by-path/pci-0000:02:00.0-usb-0:1:1.0-scsi-0:0:0:0-part1 /dev/disk/by-partuuid/e41c7c97-01
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
E:つまり、これは私のudevルールの環境変数です。
私はこの変数を使います。ID_FS_UUID=3CF6-EEA5私のデバイスの識別
これは私のUSBフラッシュドライブにあるファイルシステムのUUID番号です。
- udevルールを作成し、次の場所に保存します。/etc/udev/rules.dディレクトリ
ルールは拡張子を使用して保存する必要があります。.ルール
udevルールは辞書順に実行され、互いに上書きされる可能性があるため、名前の先頭に数字を使用します。
root権限の取得 - >ファイルを開く99_myrule.rules
udevルール:
ENV{ID_FS_UUID}=="3CF6-EEA5", ACTION=="add", RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /my/mount/directory/"
救う!
ENV{ID_FS_UUID}=="3CF6-EEA5" は、
デバイスの環境変数 ID_FS_UUID が 3CF6-EEA5 と等しいことを確認することを意味し、
ACTION=="add" はデバイス
が現在存在しているため udev イベントがトリガーされる理由を確認するを意味します。 (その他の状態は削除、変更されました)
条件が true の場合、デバイスが認識され、イベント: 追加 - > RUN systemd-mount
$devnode ... デバイスパスに展開され、udev はデバイス (/dev/...) に設定されます。
デバイスは次の場所に取り付けられます。/マイ/マウント/ディレクトリ/、確かに存在します!
udevルールの完全な構文は次のとおりです。https://www.linux.org/docs/man7/udev.html
udevルールの再ロード
sudo udevadm control --reload-rules
USBドライブを取り外して接続して動作することを確認する準備が整いました!
さらに、ベンダーIDと製品IDを使用してデバイスを識別できますが、udevデータベースで詳しく調べる必要があります。
udevadm info --attribute-walk /dev/sdf1
サブシステム=="usb"で見つかりました。
ATTRS{idProduct}=="5406"
ATTRS{idVendor}=="0781"
udevルール:
ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5406", ENV{ID_FS_UUID}=="3CF6-EEA5", ACTION=="add", RUN{program}+="/usr/bin/systemd-mount --no-block --collect $devnode /my/mount/directory/"