我在手动分区和安装 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 的选项。请按照我下面列出的步骤操作。
- 使用您选择的工具对驱动器进行分区:我使用 fdisk 在 msdos 分区表上进行设置,如下所示:
- sda1:/boot (1G)
- sda2:LUKS 分区(磁盘的其余部分)
- 设置 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
注意,这可能需要很长时间!
- 在 /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
- 现在您可以开始安装了。当您进入安装的“安装类型”部分时,选择“其他”选项。然后手动分配 /dev/mapper/vg0-* 分区,因为您希望对其进行配置。不要忘记将 /dev/sda1 设置为 /boot。/boot 分区不得加密。如果加密,我们将无法启动。将“引导加载程序安装设备”更改为 /dev/sda,然后继续安装。
- 安装完成后,不要重启! 选择“继续测试”选项。
- 在终端中,输入以下内容并查找 /dev/sda2 的 UUID。记下该 UUID 以备后用。
sudo blkid
- 我的机器上的重要一行是
/dev/sda2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
- 接下来让我们再次安装新安装的系统,以便我们可以进行更多更改。
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
- 现在运行
sudo chroot /mnt
以访问已安装的系统 - 从 chroot 安装更多东西
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts
- 设置 crypttab。使用您最喜欢的文本编辑器,创建文件 /etc/crypttab 并添加以下行,将 UUID 更改为磁盘的 UUID。
CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
- 最后,重建一些启动文件。
update-initramfs -k all -c
update-grub
- 重新启动,系统应该在启动时要求输入密码来解密!
特别感谢马丁·伊夫,艾吉迪奥·多西尔以及博客.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
最后,重启!