想像する
LUKSで暗号化された外部デバイスを使用すると、接続時に自動的にインストールされ、起動時に外部デバイスがなくても問題は発生しません。
このトピックに関するほとんどの質問は、起動時にインストールに関するものです。これは私が望む仕事ではありません。
また、USBデバイスがないときに誤って書き込みが発生しないようにマウントポイントを保護する必要があります。chattr +i <mountpoint>
質問
外部デバイスがマウントされていない場合、マウントポイントにアクセスしようとすると、タイムアウトするまで中断されます。これによりシステムが不安定になる可能性があります。
デバイスが接続されると、パスワードの入力を求められ、デバイスのロックは解除されますが、インストールされません。その後、fstab設定を正しく使用しているように見える
mount /mnt/backup
デバイスを使用するか、手動でマウントする必要がありました。mount /dev/mapper/fit
構成
# /etc/crypttab
fit UUID=xxxxxxxx-xxxxx-xxxxxxxx-xxxxxxxxxx none luks,noauto
# /etc/fstab
/dev/mapper/fit /mnt/backup ext4 noatime,user,noauto,x-systemd.automount,x-systemd.device-timeout=5ms,x-systemd.mount-timeout=100ms 0 0
誰かが名前を知りたい場合に備えて、私は偶然にSamsung Fit USBフラッシュドライブを持っています。
外部機器がない場合にマウントポイントにアクセス
# Accessing the mountpoint when the drive is NOT plugged in
andy@pop-os:mnt$ ll
ls: cannot access 'backup': No such device
total 0
d????????? ? ? ? ? ? backup/
andy@pop-os:mnt$ mountpoint /mnt/backup
/mnt/backup is a mountpoint
# journalctl
Jan 21 16:33:34 pop-os systemd[1]: mnt-backup.automount: Got automount request for /mnt/backup, triggered by 5192 (ls)
Jan 21 16:33:34 pop-os systemd[1]: dev-mapper-fit.device: Job dev-mapper-fit.device/start timed out.
Jan 21 16:33:34 pop-os systemd[1]: Timed out waiting for device /dev/mapper/fit.
Jan 21 16:33:34 pop-os systemd[1]: Dependency failed for /mnt/backup.
Jan 21 16:33:34 pop-os systemd[1]: mnt-backup.mount: Job mnt-backup.mount/start failed with result 'dependency'.
Jan 21 16:33:34 pop-os systemd[1]: dev-mapper-fit.device: Job dev-mapper-fit.device/start failed with result 'timeout'.
正常な除去プロセス
# Absolute path is required if not using sudo (`user` was set in fstab)
andy@pop-os:mnt$ umount /mnt/backup
andy@pop-os:mnt$ sudo cryptsetup close fit
andy@pop-os:mnt$ sudo eject /dev/sdx
暫定的な解決
マウントポイントをアンマウントすると(マウントされたデバイスがない場合でも)、この問題を一時的に解決できますが、システムを再起動するか、デバイスを再マウント/マウント解除すると問題が再発生します。
andy@pop-os:mnt$ sudo umount backup
andy@pop-os:mnt$ ll
total 4.0K
drwxr-xr-x 2 root root 4.0K Jan 19 10:16 backup/
andy@pop-os:mnt$ lsattr
----i---------e------- ./backup
andy@pop-os:~$ mountpoint /mnt/backup
/mnt/backup is not a mountpoint
使用noauto
して含めないと、x-systemd.automount
デバイスが存在しないときに起動時にディレクトリがマウントポイントになるという問題を回避できますが、デバイスがロック解除されたままになっても自動マウントされません。
外部機器の取り付け
パスワードを入力して端末のロックを解除するように求められます。
andy@pop-os:mnt$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sdb crypto_LUKS 2 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
└─fit ext4 1.0 yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
andy@pop-os:mnt$ ll backup/
ls: cannot access 'backup/': No such device
MOUNTPOINTS は空です。
# journalctl -f
Jan 21 17:17:26 pop-os kernel: usb 6-2: new SuperSpeed USB device number 2 using xhci_hcd
Jan 21 17:17:26 pop-os kernel: usb 6-2: New USB device found, idVendor=090c, idProduct=1000, bcdDevice=11.00
Jan 21 17:17:26 pop-os kernel: usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan 21 17:17:26 pop-os kernel: usb 6-2: Product: Flash Drive FIT
Jan 21 17:17:26 pop-os kernel: usb 6-2: Manufacturer: Samsung
Jan 21 17:17:26 pop-os kernel: usb 6-2: SerialNumber: 0123456789123
Jan 21 17:17:26 pop-os kernel: usb-storage 6-2:1.0: USB Mass Storage device detected
Jan 21 17:17:26 pop-os kernel: scsi host7: usb-storage 6-2:1.0
Jan 21 17:17:26 pop-os mtp-probe[10452]: checking bus 6, device 2: "/sys/devices/pci0000:00/0000:00:08.1/0000:0b:00.4/usb6/6-2"
Jan 21 17:17:26 pop-os mtp-probe[10452]: bus: 6, device: 2 was not an MTP device
Jan 21 17:17:26 pop-os mtp-probe[10467]: checking bus 6, device 2: "/sys/devices/pci0000:00/0000:00:08.1/0000:0b:00.4/usb6/6-2"
Jan 21 17:17:26 pop-os mtp-probe[10467]: bus: 6, device: 2 was not an MTP device
Jan 21 17:17:29 pop-os kernel: scsi 7:0:0:0: Direct-Access Samsung Flash Drive FIT 1100 PQ: 0 ANSI: 6
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: Attached scsi generic sg1 type 0
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] 501253132 512-byte logical blocks: (257 GB/239 GiB)
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Write Protect is off
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Mode Sense: 43 00 00 00
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesnt support DPO or FUA
Jan 21 17:17:29 pop-os kernel: sdb: sdb1
Jan 21 17:17:29 pop-os kernel: sd 7:0:0:0: [sdb] Attached SCSI removable disk
Jan 21 17:17:41 pop-os systemd[1]: Starting Cryptography Setup for fit...
Jan 21 17:17:41 pop-os systemd-cryptsetup[10585]: Volume fit already active.
Jan 21 17:17:41 pop-os systemd[1]: Finished Cryptography Setup for fit.
Jan 21 17:17:41 pop-os systemd[1]: Reached target Block Device Preparation for /dev/mapper/fit.
Jan 21 17:17:41 pop-os gnome-shell[3744]: Unable to mount volume 257 GB Encrypted: Gio.IOErrorEnum: Operation was cancelled
Jan 21 17:17:41 pop-os udisksd[1382]: Unlocked device /dev/sdb1 as /dev/dm-4
udisksdが「デバイスのロック解除...」を報告する前に、2行目の「操作解除」が表示されます。
私は2つの異なるデバイス、つまりフルディスクブロック暗号化を使用するデバイスと暗号化パーティションを使用するデバイスでこれを試しましたが、違いはありません。
時々時間が経つと...
andy@pop-os:mnt$ mount /mnt/backup
mount: /mnt/backup: /dev/mapper/fit already mounted on /mnt/backup.
...しかし、通常、期待どおりにデバイスがインストールされます。
その他
- 設定しないと
x-systemd.device-timeout
デフォルトの90秒よりはるかに短いと、システムがゆっくり応答しなくなり、競合が発生します。systemd
パスワード入力を待っている間にタイムアウトがある可能性があると思いましたが、タイムアウトが長くても役に立たないようです。 - 以前のUbuntu 22.04システムの構成をPop!_OS 22.04にコピーしましたが、削除された状態のディレクトリを一覧表示すると疑問符が表示されることがありますが、サイレントインストールは正しく機能します。以前のシステムでは、マウントポイントに不変属性を設定していませんでした。
関連
- a-luks暗号化USBフラッシュドライブを自動的にマウントするときのインストールエラー- さまざまなエラーとインストール方法
- Debian の USB スティック自動マウント
nofail
- 代わりに少し異なるアプローチを使用しますnoauto
が、残念ながら私の質問には答えません。 - より多くの情報を得ることができますが、
systemctl show mnt-backup.mount
役に立ちません。 - マニュアルページシステムテーブル外部デバイスの処理方法について説明しますが、これらの設定によりデバイスが自動的にマウントされなくなり、起動プロセスが中断されます。
もしそうなら、マウントポイントにアクセスすると、??????????????????が発生するのはなぜですか?古いfstabと新しいsystemdの間に魔法変数が見つからないようです。
デバイスタイムアウトを設定しない場合は、システムがクラッシュする理由を知っておくと便利です。
2023年8月に更新
システムデバイスのマウントと自動マウント...説明? ? ? ?.automount
デバイスがアクセスのためにマウントポイントを開こうとした場合。
私はまだ私が望む動作を達成できず、何も構成されていないので、それが使用されているかどうか疑問に思いますudev
。その場合、唯一の質問は、マウントポイントとして使用されるディレクトリをカスタマイズできるかどうかです。fstab
項目が生成されると、システム/run/systemd/generator
単位が生成され、動作が変更されます。
plymouth
systemdがCPUを100%使用し、システムが停止したときにエラーが発生するため、新しいシステムにも問題があるようです。私の古いラップトップではこれは起こりません。
答え1
ただ早く考えてみると…
おそらくudev
スクリプト/アプリケーションを起動し、マウントポイントのディレクトリを作成してから、すべてのcryptsetup操作を実行している可能性があります。スクリプトはUSBドライブのキーを使用できます。
fstabを使用せずにすべての作業を完了してみてください。
(申し訳ありません。ご質問にはお答えできません。)
答え2
私は私が望むものをほとんど実行する解決策を思い出しました。
データが危険にさらされないように、バックアップデバイスで試してみることをお勧めします。
最初に理解する必要があるのはうまくいくsystemd-automount
方法です。デバイスが接続されているときにデバイスを開いてマウントするのではなく、アクセスするときにデバイスを開いてマウントします。これを理解すると、設定を理解しやすくなります。
2番目に注目すべき点は、ドキュメント(および一部のユーティリティ)がまだ更新されていないことですsystemd
。
これら2つのことを念頭に置いて、必要に応じてユニットをスキャンしてsystemd
生成する方法を知っておく必要があります。以下で見つけることができます。/etc/crypttab
/etc/fstab
mount
automount
service
/run/systemd/generator/
次のコマンドのほとんどにsudo
アクセス権が必要です。
準備する
自動マウントは、キーファイルを使用してLUKSコンテナのロックを解除するときに最適です。
この問題と直接関係はありませんが、LUKS暗号化USBドライブにパーティションを含める必要はありません。実際に生の暗号化デバイスを作成することをお勧めします(引用符が必要)。
現在のキーホームを見ることができ、ヘッダーをバックアップしておくことをお勧めします。
cryptsetup luksDump /dev/sdX
cryptsetup luksHeaderBackup --header-backup-file /root/<name>-header-backup /dev/sdX
次に、新しいキーファイルを作成して追加します。
dd if=/dev/urandom of=/root/<name>-keyfile bs=512 count=1
chmod 0400 /etc/cryptsetup-keys.d/crypt-backup.key
cryptsetup luksAddKey /dev/sdX /etc/cryptsetup-keys.d/crypt-backup.key
自宅でデバイスを自動化できるように、パスワードとキーファイルがありますが、キーファイルを共有したくない他のコンピュータは引き続きアクセスできます。
次に、私が本当に便利だと思ったのは、luksヘッダー(およびオプションでファイルシステム)にタグを追加することでした。これはluks v2で可能で、デバイスが開かれるまで(復号化されるまで)タグがsystemdに表示されます。
私はブルー/グリーンのバックアップ戦略を使用し、両方の外部ドライブに同じラベルを付けて同じ場所にマウントできます。の各エントリに対してインストール単位が作成されるため、fstab
エントリは一意である必要があります。 LUKSタイトルタグは、これを行うための唯一の場所です。
# cryptsetup config /dev/sdX --label <label>
cryptsetup config /dev/sda --label backup
# optional: also label the containing filesytem (must be open)
# e2label /dev/mapper/<label> <fs-label>
e2label /dev/mapper/backup fit
パーティショニングを使用しないときは、not になります/dev/sdX
。/dev/sdX1
設定
最初にリストしてから(使用する順序なので)/etc/crypttab
リストするのは合理的ですが、systemdは逆に機能します。/etc/fstab
マウントポイントにアクセスしようとすると、関連するfstab
ファイルシステムを見つけて見つけます。それが何かを見ると/dev/mapper/
、それは見えますcrypttab
。
LABEL
でドライブを識別する以外に他の方法を使用できますが、crypttab
ドライブを使用する以外にインストールを自動化する他の方法が見つかりません。/dev/mapper/
fstab
# /etc/crypttab
backup LABEL=backup /etc/cryptsetup-keys.d/crypt-backup.key luks,nofail
これは、ドライブの暗号化に使用する名前(この例では「backup」)で始まります。その後、デバイスを識別する必要があります。/dev/sdX
タイプ識別子は、システムに接続したり接続していない可能性がある他の項目によって変更される可能性があるため、使用しないでください。UUID
はデバイスを一意に識別する良い方法ですが、前述したように、複数のデバイスを同じ方法でマウントしたいので、使用しますLABEL
。次に、キーファイルの場所を指定するか、none
パスワードを使用したい場合。最後に、デバイスluks
をLuksデバイスとして識別するオプションがあります。nofail
求めるしかし、必須起動時に。
# /etc/fstab
/dev/mapper/backup /mnt/backup ext4 noatime,users,nofail,x-systemd.device-timeout=100ms,x-systemd.automount,x-systemd.idle-timeout=20min 0 0
/dev/mapper/backup
使用する必要性、/mnt/backup
存在する必要があるマウントポイント、ファイルシステムの種類について説明しました。今オプション...
まず、、noauto
そしてauto
労働組合とは何もしないでくださいx-systemd.automount
。私はnofail
あなたがそれを見つけることができなければ、文書のいくつかは古いと言うが、man fstab
それはあなたが使用したいものです。同様に、デバイスが存在しない場合に起動が失敗するのを防ぎます。システムにはデバイスが必要ですが、見つからない場合は90秒のタイムアウトがありますが、注意しない場合(可能であれば)、通常の起動プロセスを完全に台無しにしてディスクを回復する必要があります。
users
すべてのユーザーがデバイスをインストールおよび削除できるようにします。通常、user
これを設定します。mount
デバイスの場合はumount
使用できませんが、私たちが使用するインストールsudo
と同じです。これがお客様のユースケースに与える影響を考慮してください。systemd
users
今本当の危機が来るx-systemd.device-timeout=100ms
。マウントポイントの親ディレクトリに移動して操作を実行すると、そこに何かが必要であるというメッセージがシステムls -l
に????????
表示されますが、見つかりません。この方法では、デバイスが存在しないときにマウントポイントに何も記録されません。ただし、/mnt
接続されていないデバイスが複数ある場合(通常の場合)、そのデバイスが一覧表示されるまで一日待つことはありません。オプションですx-systemd.idle-timeout=20min
。
結果
lsblk
初めて本機を起動または接続しようとすると、本機が紛失することがあります。ただし、自動的にインストールされ、1〜2秒後にデバイスを使用できます。
lsblk
# NAME TYPE FSTYPE FSVER SIZE LABEL MOUNTPOINTS
# sda disk crypto_LUKS 2 117.2G backup
ls -l /mnt/backup
# ls: cannot access '/mnt/backup': No such device
ls -l /mnt/backup
total 24
# drwxrwxr-x 3 andy andy 4096 Sep 5 2023 desktop
# drwxrwxr-x 3 andy andy 4096 Sep 5 2023 desktop-backup
# drwx------ 2 root root 16384 Aug 4 2023 lost+found
lsblk
# NAME TYPE FSTYPE FSVER SIZE LABEL MOUNTPOINTS
# sda disk crypto_LUKS 2 117.2G backup
# └─backup crypt ext4 1.0 117.2G fit /mnt/backup
ls /run/systemd/generator
# mnt-backup.automount
# mnt-backup.mount
# [email protected]
systemctl daemon-reload
デバイスを作成するには、システムを実行および/または再起動する必要があるかもしれません。
結論として
この問題を特定するのに時間がかかりました。私が理解したことが正しいことを願っています。もっと学ぶ内容があると確信しています。編集が必要な場合は、編集/コメントを残してください。
答え3
udev
ちょうどorなしでこれを実装しましたfstab
。マシンはArch Linux、LTSカーネル、SwayWM、FWIWです。
- 外部デバイスにパスワードを保存するためにシステムにキーファイルを作成することから始めます。これらはすべて強力なArch Wikiから来ています。これらの操作をrootとして実行してください。
dd bs=512 count=4 if=/dev/urandom of=/my_keyfile.bin chmod 000 /my_keyfile.bin cryptsetup luksAddKey /dev/sdb1 /my_keyfile.bin
- あなたの
/etc/crypttab
コメント中:blah UUID=blah-blah-blah-blah /my_keyfile.bin noauto
- 今すぐインストールするかどうかをファイルマネージャに任せてください。
私が使用しているものには、pcmanfm-qt
起動時に自動的に起動できるデーモンモードがあります(Thunarにもこの機能があるようです)。そのため、ファイルマネージャの設定でリムーバブルドライブを自動的にマウントするかどうかを選択してください。
USB SSDドライブが起動時に存在するか後で挿入するかに関係なく、シームレスにマウントされ、パスワードは不要です。