"file"コマンドは私のLUKSデバイスを正しく識別しますが、カーネルではそれを見ることができません。

最近、基本的な4MiB LUKS2デバイスを作成しました--offset。このfileコマンドはデバイスを正しく識別し、対応するUUIDを一覧表示しますが、起動時に自動的に開いたり表示されたりしません/dev/disk/by-uuid/...(その後もupdate-initramfs)。

手動で実行すると期待cryptsetup openどおりに動作しますが、cryptdisks_start開くことはできません。私の他の機器UUID=と同様に指定されます。/etc/crypttabUUIDの代わりに「親」ブロックデバイスパスを使用することが有効です。

確認すると、xxd正しいマジック番号(オフセット0の「LUKS」)が表示され、ヘッダーは他のLUKS2デバイスと同じオフセットで始まります(ここではい正しく検出されました)。デバイスが検出されないのはなぜですか? UUIDで開くにはどうすればよいですか?

ベストアンサー1

技術的には、ここではカーネルに問題はありません。これに関連する唯一のカーネルは、dmcryptデバイスによって構成されたデバイスマッパーですcryptsetup

cryptsetupブロックデバイスに保存されているメタデータに基づいてデバイスマッパーデバイスを設定できるため、エラーもありません。

実際、/dev/disk/by-uuidLUKSudevデバイスを指す項目やLUKSデバイスの検索を担当する項目は保存されていません(出力を参照udevadm info /dev/the-block-device)。

udevこれについては、使用してくださいblkid(たとえば、/lib/udev/rules.d/60-persistent-storage.rules組み込みバージョンのDebianのルールを参照)。

あなたの場合はblkid報告してください。TYPE="jmicron_raid_member"。 RAIDアレイメンバーの場合は、直接アクセスしないでください。blkid内部に何が保存されているかを報告しないことが正しいです。

これでなければjmicron_raid_member、たぶん、いくつかのRAID構成の署名がまだ含まれている可能性があります。たとえば、SSDが一度PCに接続され、ATAモードがBIOSでAHCIの代わりにRAIDに設定されたためです(そして、blkdiscard使用する前に実行するのを忘れました)。あるいは、最後の512バイトが正確にJ511番目のバイトである可能性がありますM

blkid 検出を中止するにはjmicron_raid_member意図的なものではなく、最後の512バイト単位が何も使用されていないことが確実な場合は、RAID署名を消去する必要があります。これは明らかにjmraidの場合です。ブロックデバイスの最後の512バイト単位で見つかりました、または次のようなものを手動で使用する:

size=$(blockdev --getsize -- "$dev") &&
  dd if=/dev/zero of="$dev" seek="$((size - 1))" count=1

またはutil-linux' wipefs:

wipefs -t jmicron_raid_member -- "$dev"

署名をリストします。

wipefs -a -t jmicron_raid_member -n -- "$dev"

削除する項目を表示します。

wipefs -a -t jmicron_raid_member -- "$dev"

ワイプ。

おすすめ記事