Установка FreeBSD с корнем на ZFS
Включаем в BIOS поддержку AHCI и грузимся с установочной флешки или CDROM.
На шаге Partitioning выбираем shell.
Смотрим имена доступных дисковых устройств:
sysctl kern.disks
Заново размечаем диски:
gpart destroy -F ada0; gpart create -s gpt ada0
gpart destroy -F ada1; gpart create -s gpt ada1
gpart destroy -F ada2; gpart create -s gpt ada2
gpart destroy -F ada3; gpart create -s gpt ada3
Если эти команды обламываются с operation not permitted, то выполняем:
sysctl kern.geom.debugflags=16
На каждом диске создаем загрузочный раздел, swap и основной (который войдет в zpool):
gpart add -a 4k -s 512k -t freebsd-boot ada0
gpart add -a 4k -s 512k -t freebsd-boot ada1
gpart add -a 4k -s 512k -t freebsd-boot ada2
gpart add -a 4k -s 512k -t freebsd-boot ada3
gpart add -a 1m -s 4g -t freebsd-swap ada0
gpart add -a 1m -s 4g -t freebsd-swap ada1
gpart add -a 1m -s 4g -t freebsd-swap ada2
gpart add -a 1m -s 4g -t freebsd-swap ada3
gpart add -a 1m -t freebsd-zfs ada0
gpart add -a 1m -t freebsd-zfs ada1
gpart add -a 1m -t freebsd-zfs ada2
gpart add -a 1m -t freebsd-zfs ada3
Устанавливаем загрузчик на каждый диск:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada3
Подгружаем модуль ядра:
kldload zfs
Создаем доступный на запись каталог, чтобы сохранить кэш zpool:
mkdir /tmp/zfs
mount -t nullfs /tmp/zfs /boot/zfs
Создаем zpool с нужными свойствами:
zpool create -O mountpoint=legacy -O atime=off -O compression=lz4 tank mirror /dev/ada0p3 /dev/ada1p3 mirror /dev/ada2p3 /dev/ada3p3
Cоздаем необходимые файловые системы:
zfs create tank/root
zfs create -o mountpoint=/usr tank/usr && umount tank/usr
zfs create -o mountpoint=/var tank/var && umount tank/var
zfs create -o mountpoint=/tmp tank/tmp && umount tank/tmp
zfs create -o mountpoint=/home tank/home && umount tank/home
Устанавливаем загрузочную файловую систему:
zpool set bootfs=tank/root tank
На время установки монтируем иерархию файловых систем в /mnt:
mount -t zfs tank/root /mnt
mkdir /mnt/var /mnt/tmp /mnt/usr /mnt/home
mount -t zfs tank/usr /mnt/usr
mount -t zfs tank/var /mnt/var
mount -t zfs tank/tmp /mnt/tmp
mount -t zfs tank/home /mnt/home
Выходим из shell (<Ctrl-D>), происходит возврат в bsdinstall и сразу
начинается распаковка системы.
После окончания установки выбираем пункт Live CD вместо Reboot.
Перемещаем кеш zpool в каталог /boot установленной системы:
mv /boot/zfs/zpool.cache /mnt/boot/zfs/
Делаем chroot в корень свежеустановленной системы:
chroot /mnt
Активируем автоматическое монтирование разделов файловых систем на старте:
echo 'zfs_load="YES"' >> /boot/loader.conf
echo 'zfs_enable="YES"' >> /etc/rc.conf
Создаем пустой fstab:
touch /etc/fstab
Создаем необходимых пользователей:
pw useradd vasya -s /bin/csh -G wheel -m -h0
Конфигурируем сеть и resolver:
echo 'ifconfig_bge0="inet 192.168.0.2/24"' >> /etc/rc.conf
echo 'defaultrouter="192.168.0.1"' >> /etc/rc.conf
echo 'nameserver 192.168.0.1' >> /etc/resolv.conf
Выходим из chroot (<Ctrl-D>), reboot, выдергиваем флешку.