LabExposed

BSD, Linux e software livre em geral.

ZFS Na Raiz Com FreeBSD 9

| Comments

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.

 

 

Consultoria Pfsense
(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

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.

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).

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.

zpool create zroot /dev/gpt/disk0

b) Para uma instalação em espelhamento.

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”)

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.

zpool export zroot
zpool import -o cachefile=/tmp/zpool.cache zroot

(7) Crie o sistema de arquivo apropriado (Seja livre para improvisar).

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.

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.

chmod 1777 /mnt/tmp
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/var/tmp

(10) Instale o FreeBSD.

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!!!)

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).

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.

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!!!

Comments