我想做什麼?
使用 LVM 在外部硬碟 (sdb) 上的 LUKS 之上安裝具有完整系統加密(無啟動和媒體分割區)的 Arch,使用:http://suddenkernelpanic.blogspot.com/2013/03/arch-linux-lvm-on-top-of-luks-2013-style.html
我的問題是什麼:
系統啟動 grub,似乎對在哪裡找到 root 存在一些混亂
錯誤:找不到裝置「uuid=f7153c4b-e6ea-48a2-9ee1-bf38c037173d」。跳過 fsck
錯誤:無法找到根設備“uuid=f7153c4b-e6ea-48a2-9ee1-bf38c037173d”
我偏離本教程的地方
我按照教程建議使用了 Grub 而不是 Syslinux (這似乎是癥結所在),而且 Grub 的解決方案確實很模糊
我的分割區方案由一個額外的 FAT32 分割區組成,該分割區不參與加密(似乎與問題無關)
/etc/default/grub 上的問題:
(我感覺這就是問題所在)
根據我所讀到的內容,我需要特別更新此文件中的幾個位置:
GRUB_CMDLINE_LINUX="root=/dev/mapper/lvmpool-root cryptdevice=/dev/sdb2:crypt ro"
我應該取消註解:
GRUB_DISABLE_LINUX_UUID=true
問題/etc/mkinitcpio.conf
我應該如下方式添加掛鉤
HOOKS="... encrypt lvm2 ... filesystems ..."
這是我的 root 的 fstab 條目
<filesystem>
/dev/mapper/lvmpool-root
UUID=f7153c4b-e6ea-48a2-9ee1-bf38c037173d / ext4 rw,relatime,data=ordered 0 1
目前的解決方法
我仍然可以使用該系統,因為在出現錯誤後,它會讓我進入恢復 shell,在這種類型下我可以簡單地執行以下操作:
cryptsetup luksOpen /dev/sdb2 crypt
enter password
然後退出恢復 shell,它會讓我回到正常的 arch 登入提示字元。如果不是那麼耗時的話,這也不會那麼糟......(啟動時永遠出錯,例如 20 秒)
我嘗試過的其他資源
我也用過:
wiki.archlinux.org/index.php/Beginners%27_guide
wiki.archlinux.org/index.php/Gr … 加密
wiki.archlinux.org/index.php/Dm … oot_loader
wiki.archlinux.org/index.php/Dm … VM_on_LUKS
答案1
您的問題似乎在於:crypt
作為卷組/dev/sdb2
和使用lvmpool-
卷組名稱作為根參數的區別。
GRUB_CMDLINE_LINUX="root=/dev/mapper/lvmpool-root cryptdevice=/dev/sdb2:crypt ro"
這個例子這裡:
cryptdevice=/dev/partition:MyStorage root=/dev/mapper/MyStorage-rootvol
有匹配的:MyStorage
和MyStorage-
。那頁專門針對grub
(而不是 Syslinux),LVM 位於 LUKS 之上。所以我會遵循這個設定。
你有一個額外的、未加密的分割區並不重要。
答案2
感謝 Anthon 的上述回答,它對解決我的問題做出了很大貢獻。
看來我的問題的解決方案分為兩部分。
- /etc/default/grub 中的條目對我來說應該是:
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdb2:lvmpool root=/dev/mapper/lvmpool-root"
cryptdevice 也由您套用加密的分割區組成,在我的例子中是 /dev/sdb2 和 lvmpool (我的磁碟區組)
root 只是指向我的加密根 lvmpool 的位置(位於 sdb2 上)
- 輸入完成後(這對我來說是一個關鍵錯誤),你必須運行:
grub-mkconfig -o /boot/grub/grub.cfg
完成此操作後,系統直接啟動並提示解鎖根分區。
答案3
包括mkinitcpio.conf
MODULES="dm_mod dm_crypt ext4 aes_x86_64 sha256 sha512"
HOOKS="... encrypt lvm2 ..."
包括/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... quiet "
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdX:name"
GRUB_ENABLE_CRYPTODISK="y"
運行命令:
sudo mkinitcpio -p linux
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo grub-install --recheck --target=i386-pc /dev/sda
sudo pacman -S linux linux-headers