有谁知道如何配置 Grub,使其能够挂载安装在 ZFS 系统上的 Arch Linux?
我有/dev/sda1
(启动分区)和/dev/sda2
(根分区)。 ZFS 系统有一个 zpool main,其中包含以下数据容器:
main/root mountpoint=none
main/root/default mountpoint=legacy
main/home mountpoint=legacy
我还将 ZFS 添加到了mkinitcpio.conf
.
当我尝试启动系统时,它总是说无法安装根分区。
我需要更改 Grub 配置吗?老实说,我也不太关心Grub。如果syslinux
能做到这一点我会切换。
编辑:
我在启动时遇到的错误是:
starting version 238
no pools available to import
ERROR: Failed to mount the real root device.
Bailing out, you are on your own. Good luck.
答案1
给定一个根卷数据集 /ROOT/archlinux
在一个池池 mypool
并在/boot
Grub 中输入以下命令来启动数据集中的文件:
insmod part_gpt
search --set --label mypool
linux /ROOT/archlinux@/boot/vmlinuz-linux zfs=mypool rw
initrd /ROOT/archlinux@/boot/initramfs-linux.img
boot
您可以在grub>
提示符下输入这些命令(c
按 Grub 菜单)或使用它们作为更新/boot/grub/grub.cfg
.
- Grub 需要一个数据集;
- 根卷数据集的挂载点应该是
/
; - 您的启动文件位于
/boot
该数据集中; - 你的 initramfs 有
HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)
; - 您的 zpool 可以启用所有功能(默认);
- Grub 的位置(与 zpool 相同或不同的磁盘)无关紧要。
请注意,我遭受了明显的疼痛尝试从 Grub 提示符中列出(使用ls
)内容。/ROOT/archlinux@/boot
如果您尝试这样做并出现错误,那么只需执行我最终所做的操作即可:忽略它们并尝试启动!