Luks

複製的驅動器無法啟動。(這是一個 LUKS 加密驅動器)

  • January 16, 2017

我有一個從系統中移除的 SSD。它通過 LUKS進行了全盤加密(不使用 LVM)。

我想將此驅動器重新用於不同的目的(在不同的系統中)。我複製(使用 dd)一個未加密的 Arch Linux 系統(已知它很好並且可以啟動)到這個先前加密的驅動器。但是,複製的驅動器不會啟動。

我使用的 dd 命令是:

dd if=/dev/sda of=/dev/sdb bs=1M status=progress

(我的輸入和輸出設備也正確。)我從中複製的磁碟恢復到原來的硬體,它啟動並執行良好。新的(複製的)磁碟具有相同的硬體。

新複製的磁碟具有相同的分區結構,並且 UUID 相同(如預期的那樣)。此外,當我掛載新磁碟並瀏覽目錄時,所有文件似乎都符合預期。新複製的磁碟在檢查時看起來完全相同,並且沒有明顯損壞。例如,我可以打開並讀取 UEFI 載入程序配置文件以檢查 UUID 編號。我還可以執行blkid以驗證 UUID 是否正確(它們是正確的)。

兩個系統都使用 UEFI 引導。vfat EFI 分區在新複製的驅動器上,看起來很正常。如前所述,預設載入程序配置具有適當的 UUID(因為複製的驅動器沒有任何更改)。

嘗試從複製磁碟啟動時的錯誤是:

:: running early hook udev
starting version 231
:: running hook [udev]
Waiting 10 seconds for device /dev.. (it lists the partition ID)
ERROR: device [partition UUID] not found. Skipping fsck.
ERROR: unable to find root device [partition UUID]
You are being dropped into a rescue shell

然後 Arch 掉進了一個救援外殼。

編輯:

複製的驅動器通過 USB 連接到系統。當我將連接更改為 SATA 時,問題就消失了。驅動器正常工作,系統按預期啟動。

我希望複製的驅動器在通過 USB 掛載時能夠工作,因為該系統已經過測試,可以從駐留在 USB 驅動器上的 btrfs 快照啟動,並且沒有任何問題。

您的系統啟動到它試圖找到根文件系統的位置,並在該位置失敗。這通常表明核心缺少必要的驅動程序。由於您的系統與大多數非嵌入式系統一樣使用 initramfs,因此此處的“核心”表示在核心映像中編譯的驅動程序集(/boot/bzImage或它所在的任何地方)加上 initramfs 上存在的一組驅動程序。必要的驅動程序包括訪問文件系統所需的一切:匯流排控制器、磁碟控制器、磁碟類型、分區、軟體 RAID 層、加密層、LVM、文件系統……在你的情況下,顯然存在更高的層,但如果你連接了磁碟到不同的介面(比如 USB 而不是 SATA,或不同控制器上的不同 SATA 埠等),那麼可能缺少該介面的驅動程序。您可能需要重新生成 initramfs

正如Arch wiki上所說:

引導在一台機器上成功,在另一台機器上失敗

(…) 如果您將/boot目錄轉移到另一台機器並且在早期使用者空間期間啟動順序失敗,可能是由於缺少核心模組而未檢測到新硬體。(…) 嘗試手動將模組添加到 initramfs。

引用自:https://unix.stackexchange.com/questions/337280