Grub не может надежно выполнить список каталогов zpool из-за ошибки, подтвержденной в списке рассылки:
listing directory contents in Grub is broken, I have a patch lying around that fixes that specific issue. if you get strange error messages (e.g., something like invalid BP type or compression algorithm), it's likely this issue.
Эта проблема присутствует в Grub, установленном из ArchLinux, а также в Fedora 28. Ubuntu, однако, похоже, исправил свой Grub, чтобы исправить это (, подтвержденное в Ubuntu 16.10 ).
Однако Grub может читать файлы, необходимые для загрузки. Вы можете создать zpool, который будет загружаться Grub следующим образом:
zpool create -m none "$ZPOOL" "$RAIDZ" "${DISKS[@]}"
где переменные определяют имя пула, например mypool
, уровень рейда, например. mirror
и диски, например/dev/disk/by-id/...
(два диска требуются для зеркала ).
Вам необходимо создать набор данных
zfs create -p "$ZPOOL"/ROOT/archlinux
И вам нужно установить точку монтирования набора данных:
zfs set mountpoint=/ "$ZPOOL"/ROOT/archlinux
Затем вы можете загрузить его с помощью 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
Я написал этот сценарий , чтобы протестировать его на машине VirtualBox. Я установил Arch из ISO на обычный корень ext4, а затем использовал его для установки нового корня ZFS на два зеркальных виртуальных диска. Вышеприведенное является кратким описанием -, см. сценарий для получения полной информации.