我想要實現的目標:

我想要實現的目標:

我想要實現的目標:

  • 在啟動期間僅被要求輸入一次密碼;
  • 其他(非根)分割區使用/root/目錄內的金鑰檔案。

到目前為止我所取得的成就:

  • (A)系統啟動,但要求輸入密碼兩次(一次為/,一次為/usr)。
  • 或者:(二)系統無法啟動,要求輸入密碼一次,但隨後拒絕掛載/usr,表示無法找到 LVM 群組/磁碟區。我被扔到 shell 中,發現它/root/.keyfile不可用。/尚未安裝。

配置

文件:/etc/crypttab

案例A

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 none luks

案例B

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 /root/.keyfile luks

什麼完全不起作用

  • 建立腳本檔案以手動開啟所需的磁碟機:在可用/etc/initramfs-tools/scripts/local-premount之前呼叫的那些,但在要開啟之後調用的(因此為時已晚)。//etc/initramfs-tools/scripts/local-bottom/usr

答案1

這個維基頁面(在德語中,遺憾的是我沒有找到對應的英語)建議您使用腳本/lib/cryptsetup/scripts/decrypt_derived從打開的根設備生成密鑰。我會嘗試翻譯重要的部分,但我已經不是嘗試了該程式。

若要新增金鑰,您必須執行(以 root 身分)

mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram 

其中是(可能)<root_name>中顯示的根設備的名稱,以及打開的設備(可能)。/dev/mappersdc3_crypt<usr_dev>/usr/dev/md0

crypttab 的行是

  <usr_name>         UUID=<UUID>          <root_name>           luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

記得跑

update-initramfs -u -k all 

更改 crypttab 後。

您應該為您的 usr 裝置保留一個「普通」密碼,否則萬一您的根裝置損壞,您將無法開啟它。

相關內容