Este guia irá mostrar como você pode instalar um ambiente completo e funcional com ZFS usando o esquema de particionamento GPT no FreeBSD 9, nós também iremos usar SWAP em ZFS.
Você pode usar este guia como referencia para uma instalação simples ou em espelhamento (mirror).
Este guia é uma tradução do excelente artigo do blog aisecure.net, você pode visualiza-lo na integra neste link.

(1) Inicialize o FreeBSD9 através do DVD de instalação ou pelo o “memstick” e selecione a opção “Live CD”.
(2) Crie um /tmp gravavél
|
1 2 |
umount /dev/md1 mdmfs -s 512M md1 /tmp |
(3) Crie as partições necessárias no(s) disco(s) e adcione o ambiente de boot do ZFS.
a) Para uma instalação de disco simples.
|
1 2 3 4 |
gpart create -s gpt ada0 gpart add -b 34 -s 64k -t freebsd-boot ada0 gpart add -t freebsd-zfs -l disk0 ada0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 |
b) Repita o procedimento para o segundo disco se você for usar uma instalação em espelhamento (mirror).
|
1 2 3 4 |
gpart create -s gpt ada1 gpart add -b 34 -s 64k -t freebsd-boot ada1 gpart add -t freebsd-zfs -l disk1 ada1 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1 |
(4) Crie o pool do ZFS.
a) Para uma instalação simples.
|
1 |
zpool create zroot /dev/gpt/disk0 |
b) Para uma instalação em espelhamento.
|
1 |
zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1 |
(5) Configure corretamente o bootfs, checksums e os pontos de montagem. (ignore qualquer mensagem de erro relacionada a somente leitura “read only”)
|
1 2 3 |
zpool set bootfs=zroot zroot zfs set checksum=fletcher4 zroot zfs set mountpoint=/mnt zroot |
(6)) Neste ponto, iremos exportar e importar o pool do ZFS enquanto estamos preservando o zroot.cache no /tmp.
|
1 2 |
zpool export zroot zpool import -o cachefile=/tmp/zpool.cache zroot |
(7) Crie o sistema de arquivo apropriado (Seja livre para improvisar).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
zfs create zroot/usr zfs create zroot/usr/home zfs create zroot/var zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp zfs create -o compression=lzjb -o setuid=off zroot/usr/ports zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash zfs create -o exec=off -o setuid=off zroot/var/db zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg zfs create -o exec=off -o setuid=off zroot/var/empty zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail zfs create -o exec=off -o setuid=off zroot/var/run zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp |
(8) Adicione um espaço de SWAP e desabilite a opção de checksums. Neste caso eu adicionei 4GB de SWAP.
|
1 2 3 |
zfs create -V 4G zroot/swap zfs set org.freebsd:swap=on zroot/swap zfs set checksum=off zroot/swap |
(9) Crie um link simbólico para o /home e corrija algumas permissões.
|
1 2 3 |
chmod 1777 /mnt/tmp cd /mnt ; ln -s usr/home home chmod 1777 /mnt/var/tmp |
(10) Instale o FreeBSD.
|
1 2 3 4 5 |
sh cd /usr/freebsd-dist export DESTDIR=/mnt for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz; do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done |
(11) Copie o zpool.cache (MUITO IMPORTANTE!!!)
|
1 |
cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache |
(12) Crie o arquivo rc.conf, loader.conf e um arquivo vazio do fstab (Caso contrário, o sistema irá reclamar).
|
1 2 3 4 |
echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf echo 'zfs_load="YES"' >> /mnt/boot/loader.conf echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf touch /mnt/etc/fstab |
(13) Desmonte tudo e corrija os pontos de montagem para a inicialização do sistema.
|
1 2 3 4 5 6 |
zfs set readonly=on zroot/var/empty zfs umount -a zfs set mountpoint=legacy zroot zfs set mountpoint=/tmp zroot/tmp zfs set mountpoint=/usr zroot/usr zfs set mountpoint=/var zroot/var |
Reinicie, ajuste a informação de fuso horário (tzsetup), configure uma senha para o usuário root, adicione um usuário comum no sistema e divirta-se!!!

[...] Você pode usar este guia como referencia para uma instalação simples ou em espelhamento (mirror).” [referência: luizgustavo.pro.br] [...]
O ZFS é um realmente um FS excelente! O FreeBDSD tem muito a ganhar com isso. Espero que outros BSDs comecem a adotá-lo também. Ele vai fazer falta no Linux.
Com o /etc/fstab vazio(deve ser por isso) não estou conseguindo rodar o flash player
no meu firefox. Vc achou uma solução para isso?
Porque ainda não colocaram o zfs como uma opção de filesystem no menu de instalação do freebsd ?
@Guilherme
Problema resolvido..