Commentaires fermés

Installation de FreeBSD sur un pool ZFS

2012
30.01
#!/bin/sh
 
# création de la table GPT sur le disque ada0 (1er disque sata de la machine, à adapter chez vous)
#gpart -s gpt ada0
# création d'une partition de boot, début au secteur 34, taille 512 secteurs
#gpart add -s 34 -b 512 -t freebsd-boot ada0
# création de la partition système, début au secteur 2048 (4k ready), sur tout le disque restant, label "ssd-intel"
#gpart add -s 2048 -t freebsd-zfs -l ssd-intel ada0
 
# utile ...
mkdir /boot/zfs
# on crée un dataset ZFS nomée sys_tank sur la partition gpt/ssd-intel
zpool create sys_tank /dev/gpt/ssd-intel
# on change le checksum
zfs set checksum=fletcher4 sys_tank
# on active la deduplication
zfs set dedup=on sys_tank
# on desactive la compression par défaut
zfs set compression=off sys_tank
 
# on export et réimporte le pool dans /mnt, en préservant zroot.cache dans /tmp
zpool export sys_tank
zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt sys_tank
 
# on crée l'arboréscence ZFS
# on installe le système dans sys_tank/root, ça permet de changer le /root si besoin (upgrade ...)
zfs create                                                      sys_tank/root
zfs create                                                      sys_tank/usr
zfs create -o compression=lzjb                  -o setuid=off   sys_tank/usr/ports
zfs create -o compression=off   -o exec=off     -o setuid=off   sys_tank/usr/ports/distfiles
zfs create -o compression=off   -o exec=off     -o setuid=off   sys_tank/usr/ports/packages
zfs create -o compression=lzjb  -o exec=off     -o setuid=off   sys_tank/usr/src
zfs create                                                      sys_tank/var
zfs create -o compression=lzjb  -o exec=off     -o setuid=off   sys_tank/var/crash
zfs create                      -o exec=off     -o setuid=off   sys_tank/var/db
zfs create -o compression=lzjb  -o exec=on      -o setuid=off   sys_tank/var/db/pkg
zfs create                      -o exec=off     -o setuid=off   sys_tank/var/empty
zfs create -o compression=lzjb  -o exec=off     -o setuid=off   sys_tank/var/log
zfs create -o compression=gzip  -o exec=off     -o setuid=off   sys_tank/var/mail
zfs create                      -o exec=off     -o setuid=off   sys_tank/var/run
zfs create -o compression=lzjb  -o exec=on      -o setuid=off   sys_tank/var/tmp
zfs create -o compression=on    -o exec=on      -o setuid=off   sys_tank/tmp
 
# on définit l'emplacement de la racine pour le boot
zpool set bootfs=sys_tank/root sys_tank
 
# /var/empty en lecture seule
zfs set readonly=on sys_tank/var/empty
 
# swap de 10Go, sans dedup ni checksum
zfs create -V 10G sys_tank/swap
zfs set org.freebsd:swap=on sys_tank/swap
zfs set checksum=off sys_tank/swap
zfs set dedup=off sys_tank/swap
 
# on umount le tout et on refait les points de montage propres
zfs umount -a
zfs set mountpoint=none sys_tank
zfs set mountpoint=/ sys_tank/root
zfs set mountpoint=/tmp sys_tank/tmp
zfs set mountpoint=/usr sys_tank/usr
zfs set mountpoint=/var sys_tank/var
 
# on export et importe le pool
zpool export sys_tank
zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt sys_tank
 
chmod 1777 /mnt/tmp
chmod 1777 /mnt/var/tmp
 
# Install de FreeBSD dans sys_tank/root, monté sur /mnt
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 -xpvJf - -C ${DESTDIR:-/}); done
 
# on remet le cache zfs
cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache
 
# Installe fstab, rc.conf sysctl.conf, make.conf et loader.conf
cd /mnt/etc/ ; fetch http://192.168.1.96/zurp_fs/sys_conf/rc.conf
cd /mnt/etc/ ; fetch http://192.168.1.96/zurp_fs/sys_conf/sysctl.conf
cd /mnt/etc/ ; fetch http://192.168.1.96/zurp_fs/sys_conf/make.conf
cd /mnt/boot/ ; fetch http://192.168.1.96/zurp_fs/sys_conf/loader.conf
touch /mnt/etc/fstab
 
# Install du script post_install
mkdir /mnt/usr/scripts
mkdir /mnt/usr/scripts/userland
cd /mnt/usr/scripts
fetch http://192.168.1.96/zurp_fs/scripts/update_scripts.sh
chmod +x update_script.sh
 
shutdown -r now

Les commentaires sont fermés.