我正在尝试在加密分区上安装具有原生 ZFS 根文件系统的 Ubuntu。设备设置如下:
- 物理磁盘被划分为较小的启动分区和其余部分。
- 磁盘的其余部分被完全加密,并划分为一个
/swap
和/root
用于实际系统的分区。 - 在该根分区上创建的 ZFS 池具有几个 ZFS 文件系统,用于诸如此类的内容
/home
。
这是我一直遵循的两个主要指南:
一切工作正常,除了最后一步——安装 grub。update-grub
说(在chroot
)
error: cannot find a device for / (is /dev mounted?)
/dev
已安装,并且我按照第二本指南中的附加建议进行设置/etc/default/grub
等等。
我似乎无法让 grub 识别设备,grub.cfg
并且menu.lst
无法创建。我可能错过了哪些步骤?如果相关的话,所有这些都在 VirtualBox 中运行。
我特别想知道启动这个系统的正确 grub 命令行是什么。
答案1
Grub 1.99(随 Ubuntu 一起提供)不支持加密 zfs,这就是 update-grub 失败的原因。
因此你的选择是:
- 安装 grub 2.00(它支持加密的 zfs)。
- 手动编写 grub.cfg,而不是使用 update-grub。
这两个选项与 Ubuntu 默认设置有很大差异,但与首先使用加密 ZFS 作为根文件系统相比,差异仍然要小得多 :)
对于#1,您需要从源代码编译 grub 2.00,因为我不知道 Ubuntu 有任何 grub 2.00 包。
对于 #2,您需要 dpkg-divert update-grub 并将其替换为指向 /bin/true 的符号链接,然后手动编写 grub.cfg(每当您获得内核升级时更新它)。
如果您需要有关如何执行任一选项的更多细节,我很乐意进行详细说明。
答案2
您可能需要绑定 LVM 根目录。退出 chroot,然后输入:
sudo mount --bind /dev /mnt/root/dev
然后重新 chroot,看看 ZFS-grub 更新是否有效。