file
命令正確辨識了我的 LUKS 設備,但核心看不到它
我最近創建了一個具有 4MiB 本機的 LUKS2 設備
--offset
。該file
命令正確辨識設備並列出其 UUID,但它既不會在啟動時自動打開,也不會在/dev/disk/by-uuid/...
(甚至在 之後update-initramfs
)可見。手動執行
cryptsetup open
按預期工作,但cryptdisks_start
無法打開它。與我的其他設備一樣,它是用UUID=
in指定的。/etc/crypttab
使用“父”塊設備路徑而不是其 UUID 有效。檢查顯示正確的幻數(偏移量 0 處的“LUKS”),並且標頭從與我的其他 LUKS2設備(正確檢測到)
xxd
相同的偏移量開始。為什麼無法檢測到此設備?我該怎麼做才能讓我通過它的 UUID 打開它?
從技術上講,這裡的核心沒有錯。這裡唯一涉及核心的是
dmcrypt
由cryptsetup
.
cryptsetup
能夠基於儲存在塊設備上的元數據配置設備映射器設備,因此也沒有故障。LUKS 設備沒有條目儲存在那裡的事實
/dev/disk/by-uuid
指向udev
或負責發現 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 曾經連接到 ATA 模式設置為 RAID 而不是 BIOS 中的 AHCI 的 PC(並且您
blkdiscard
在重用它之前忘記執行)。或者也許第 512 個最後一個字節恰好是J
第 511個字節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"
擦掉。