A página wiki do Arch Linux ZFS explica criação de conjuntos compatíveis com o grub , assim como esta página sobre como inicializar o Fedora , mas não consegui criar um conjunto legível pelo Grub. A página wiki do Arch Linux sobre Instalando o Arch Linux no ZFS destaca alguns bugs, mas não explica como superá-los .
As páginas vinculadas explicam que o Grub suporta um subconjunto de recursos zpool e não pode ler um pool que usa recursos que ele não suporta. Eles explicam como configurar um pool adequado, mas não consegui fazê-lo funcionar. O subconjunto de recursos suportados não parece estar documentado em lugar algum.
Estou usando uma máquina virtual para testar com o Grub 2.02 e Arch Linux kernel 4.16.13-1-ARCH, que é o mais recente e é compatível com a versão atual do pacote zfs-linux
( zfs-linux-0.7.9.4.16.13.1-1
). Eu não estou (ainda) tentando criar um sistema inicializável, apenas para provar que o Grub pode ler o zpool. Aqui está o que eu tentei:
Primeiro, como a página wiki em arco sugere, desabilitando recursos indesejados:
# zpool create \
-o feature@multi_vdev_crash_dump=disabled \
-o feature@large_dnode=disabled \
-o feature@sha512=disabled \
-o feature@skein=disabled \
-o feature@edonr=disabled \
testpool mirror \
/dev/disk/by-id/ata-VBOX_HARDDISK_VB{5f2d4170-647f16b7,f38966d8-57bff7df}
que resulta nesses recursos:
testpool feature@async_destroy enabled local
testpool feature@empty_bpobj active local
testpool feature@lz4_compress active local
testpool feature@multi_vdev_crash_dump disabled local
testpool feature@spacemap_histogram active local
testpool feature@enabled_txg active local
testpool feature@hole_birth active local
testpool feature@extensible_dataset active local
testpool feature@embedded_data active local
testpool feature@bookmarks enabled local
testpool feature@filesystem_limits enabled local
testpool feature@large_blocks enabled local
testpool feature@large_dnode disabled local
testpool feature@sha512 disabled local
testpool feature@skein disabled local
testpool feature@edonr disabled local
testpool feature@userobj_accounting active local
Depois, como o exemplo do fedora , ativando os recursos desejados:
zpool create -d \
-o feature@async_destroy=enabled \
-o feature@empty_bpobj=enabled \
-o feature@spacemap_histogram=enabled \
-o feature@enabled_txg=enabled \
-o feature@hole_birth=enabled \
-o feature@bookmarks=enabled \
-o feature@embedded_data=enabled \
-o feature@large_blocks=enabled \
testpool mirror \
/dev/disk/by-id/ata-VBOX_HARDDISK_VB{5f2d4170-647f16b7,f38966d8-57bff7df}
que resulta nesses recursos:
# zpool get all testpool | grep feature
testpool feature@async_destroy enabled local
testpool feature@empty_bpobj active local
testpool feature@lz4_compress disabled local
testpool feature@multi_vdev_crash_dump disabled local
testpool feature@spacemap_histogram active local
testpool feature@enabled_txg active local
testpool feature@hole_birth active local
testpool feature@extensible_dataset enabled local
testpool feature@embedded_data active local
testpool feature@bookmarks enabled local
testpool feature@filesystem_limits disabled local
testpool feature@large_blocks enabled local
testpool feature@large_dnode disabled local
testpool feature@sha512 disabled local
testpool feature@skein disabled local
testpool feature@edonr disabled local
testpool feature@userobj_accounting disabled local
Em cada caso, eu carreguei alguns conteúdos:
# cp -a /boot /testpool
E, em seguida, reinicie o Grub:
grub> search --set --label testpool
grub> ls /
@/
grub> ls /@
error: compression algorithm 80 not supported
.
grub> ls /@/
error: compression algorithm inherit not supported
.
Eu tentei ativar / desativar alguns recursos, principalmente lz4_compress
. Eu também tentei criar um conjunto de dados no pool. Nada que eu tentei funcionou dentro do Grub.
Eu esperava poder listar /boot
ou /@/boot
.
Erros encontrados incluem
-
compression algorithm inherit not supported
-
compression algorithm 66 not supported
-
compression algorithm 80 not supported
-
incorrect dnode type
Como um zpool ZFS deve ser criado para que seja legível pelo Grub?