LVM 和 LUKS 手动分区,但 loader/init/grub 存在问题

LVM 和 LUKS 手动分区,但 loader/init/grub 存在问题

我在手动分区和安装 LVM 和 LUK 方面取得了一些成功。

已创建分区 - home、root、swap 和 boot,pv 和 vg 均已创建并正确设置。

我从 Live 进行安装,并将文件系统中的所有内容安装到正确的位置。

我 chroot 并安装并使用正确的 UUID 设置 /etc/crypttab,并且 /etc/fstab 指向正确的映射器和 UUID(基于 blkid 输出)。

此时,我尝试了几种方法,试图让引导加载程序和 grub 给我一个密码登录屏幕,以解密我在 /etc/crypttab 中引用的内容。

第一种方法 -

mount -t proc proc /proc 
mount -t sysfs sys /sys 
update-initramfs -u

运行这个告诉我

/usr/sbin/iucode_tool: cpuid kernel driver unavailable, cannot scan system processor signatures

第二种方法 -

检查 /etc/mkinitcpio.conf 以添加 lvm2 并加密,然后

mkinitcpio -p linux

这也不起作用,因为 mkinitcpio 不存在。

经过一些研究,我认为 /etc/crypttab 也许足以满足现有的 init 进程的需求?

第三种方法

编辑 /etc/default/grub 以添加

GRUB_ENABLE_CRYPTODISK=y 

然后运行

grub mkconfig -o /boot/grub/grub.cfg
grub-install /dev/sda1

我遇到的问题是

/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/ubuntu-rootvol'

我知道整理这个带密码的启动屏幕应该相当简单,但我没有其他选择。请告诉我让 Ubuntu 引用 /etc/crypttab 的正确方法

感谢您的帮助!

答案1

我找到了一种在手动分区的同时设置 LUKS 和 LVM 的方法!我在 Ubuntu 16.04.2 上测试了这种方法

从 Live OS 启动 Ubuntu,并选择无需安装即可试用 Ubuntu 的选项。请按照我下面列出的步骤操作。

  1. 使用您选择的工具对驱动器进行分区:我使用 fdisk 在 msdos 分区表上进行设置,如下所示:
    • sda1:/boot (1G)
    • sda2:LUKS 分区(磁盘的其余部分)
  2. 设置 LUKS
    • sudo cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sda2
    • sudo cryptsetup luksOpen /dev/sda2 CryptDisk
    • 虽然不是必需的,但最好用零填充 LUKS 分区,以便加密状态下的分区填充随机数据。sudo dd if=/dev/zero of=/dev/mapper/CryptDisk bs=4M 注意,这可能需要很长时间!
  3. 在 /dev/mapper/CryptDisk 上设置 LVM
    • sudo pvcreate /dev/mapper/CryptDisk
    • sudo vgcreate vg0 /dev/mapper/CryptDisk
    • sudo lvcreate -n swap -L 2G vg0
    • sudo lvcreate -n root -L 10G vg0
    • sudo lvcreate -n home -l +100%FREE vg0
  4. 现在您可以开始安装了。当您进入安装的“安装类型”部分时,选择“其他”选项。然后手动分配 /dev/mapper/vg0-* 分区,因为您希望对其进行配置。不要忘记将 /dev/sda1 设置为 /boot。/boot 分区不得加密。如果加密,我们将无法启动。将“引导加载程序安装设备”更改为 /dev/sda,然后继续安装。
  5. 安装完成后,不要重启! 选择“继续测试”选项。
  6. 在终端中,输入以下内容并查找 /dev/sda2 的 UUID。记下该 UUID 以备后用。
    • sudo blkid
    • 我的机器上的重要一行是/dev/sda2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
  7. 接下来让我们再次安装新安装的系统,以便我们可以进行更多更改。
    • sudo mount /dev/vg0/root /mnt
    • sudo mount /dev/vg0/home /mnt/home# 这可能没有必要
    • sudo mount /dev/sda1 /mnt/boot
    • 如果你有 EFI 分区,请将其挂载在/mnt/boot/efi
    • sudo mount --bind /dev /mnt/dev# 我不太确定这是否有必要
    • sudo mount --bind /run/lvm /mnt/run/lvm
  8. 现在运行sudo chroot /mnt以访问已安装的系统
  9. 从 chroot 安装更多东西
    • mount -t proc proc /proc
    • mount -t sysfs sys /sys
    • mount -t devpts devpts /dev/pts
  10. 设置 crypttab。使用您最喜欢的文本编辑器,创建文件 /etc/crypttab 并添加以下行,将 UUID 更改为磁盘的 UUID。
    • CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
  11. 最后,重建一些启动文件。
    • update-initramfs -k all -c
    • update-grub
  12. 重新启动,系统应该在启动时要求输入密码来解密!

特别感谢马丁·伊夫艾吉迪奥·多西尔以及博客.botux.fr他们发布的教程。通过从他们的帖子中提取一些内容并进行一些额外的故障排除,我终于能够解决这个问题。

我尝试了好几次,但都失败了。根据错误消息,我必须自己解决的是sudo mount --bind /run/lvm /mnt/run/lvm

答案2

非常感谢这篇指南。我最近尝试了 18.04,效果很好。为了修复 grub 安装并处理 EFI,我根据以下方法添加了更多步骤无法在 Acer Aspire ES1-533 上安装 Ubuntu。在“update-initramfs -k all -c”之后,我使用了以下步骤:

1- 通过以下方式加载 efivars:

sudo modprobe efivars

2-重新安装 64 位版本的 grub-install:

sudo apt-get install --reinstall grub-efi-amd64

sudo grub-install --no-nvram --root-directory=/mnt

3- 将 root 更改为 /mnt 并更新 grub

sudo chroot /mnt

update-grub

(就我而言,存在与 grub-prob 相关的问题(未在 sda1 中找到)。但它并不影响我的安装)

4-移动并重命名已安装的引导加载程序

cd /boot/efi/EFI

cp -R ubuntu/* BOOT/

cd BOOT

cp grubx64.efi bootx64.efi

最后,重启!

相关内容