今天我决定使用 lvm 将根分区移动到加密的 luks 分区,但遇到了一些麻烦。
这是我的初始设置
-- sda
- sda1 (debian)
- sda2 (secondary)
- sda5 (swap)
- sda6 (home)
- sda7 (voidlinux)
我将 sda1 分割成 512M 的引导分区(sda1),其余部分用于 voidlinux(sda3)。它变成了
-- sda
- sda1 (boot)
- sda2 (secondary)
- sda5 (swap)
- sda6 (home)
- sda7 (void)
- sda3 (for void)
然后我加密了sda3,创建了一个名为“vg”的lvm vg,创建了lv“root”。
-- sda
- sda1 (boot)
- sda2 (secondary)
- sda5 (swap)
- sda6 (home)
- sda7 (void)
- sda3
- enc
- vg-root
在 上创建了一个 ext4 文件系统/dev/vg/root
,安装了它,然后将我之前创建的备份 tar 存档解压到其中。 tar 档案包含/boot
/usr
/etc
来自/var
我的虚空/
。
安装/dev/vg/root
在/mnt
,创建目录/mnt/{proc,dev,sys,tmp}
然后运行for i in proc dev sys tmp ;do mount --rbind /$i /mnt/$i ;done
。
跑了mv /mnt/boot/*6.1* /mnt/tmp
然后mount /dev/sda1 /mnt/boot
终于mv /mnt/tmp/*6.1* /mnt/boot
。
在,下创建了这些符号链接/mnt
。[bin->/usr/bin, lib->/usr/lib, lib32->/usr/lib32, lib64->/usr/lib, sbin->/usr/bin]
然后chroot到/mnt
.
我尝试运行几个程序,一切正常。接下来我编辑了/etc/default/grub
,GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 rd.auto cryptdevice=/dev/sda3:enc"
.
安装了 grub grub-install /dev/sda
。 grub.cfg grub-mkconfig -o /boot/grub/grub.cfg
。
重建 initramfs,dracut -f
添加了条目/dev/vg/root / ext4 defaults 0 1
和/dev/sda1 /boot ext2 defaults 0 0
到/etc/fstab
。
当我重新启动时,我输入了密码,然后我得到了这个...Cannot find init! Please check to make sure you passed a valid root filesystem!
我被困在这里,不知道下一步该做什么,请帮助我。
这是我从 dracutrescue shell 获得的完整日志。帕斯特宾
答案1
解决了。符号链接 [bin,lib*,sbin] 应该是相对的,即 bin->usr/bin...这init
shell脚本中的代码片段initramfs
帮助我弄清楚了。