Задача установить FreeBSD 9.0 RELEASE используя в качестве корневой файловой системы ZFS.
Грузимся с загрузочного CD или DVD — в программе установки выбираем выход в shell.
Создаем необходимые разделы, записываем загрузчик.
gpart create -s gpt da0 gpart add -b 34 -s 94 -t freebsd-boot da0 gpart add -t freebsd-zfs -l disk0 da0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
Создаем пул с оптимизацией под размер сектора 4К.
gnop create -S 4096 /dev/gpt/disk0 zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot /dev/gpt/disk0.nop zpool export zroot gnop destroy /dev/gpt/disk0.nop zpool import -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot
Установка дополнительных параметров.
zpool set bootfs=zroot zroot zfs set checksum=fletcher4 zroot
Создаем файловые системы на свой вкус и цвет.
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
Создаем swap раздел в 4 Гб.
zfs create -V 4G zroot/swap zfs set org.freebsd:swap=on zroot/swap zfs set checksum=off zroot/swap
Создаем линк на /home, исправляем разрешения.
chmod 1777 /mnt/tmp cd /mnt ; ln -s usr/home home chmod 1777 /mnt/var/tmp
Собственно установка 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
Копируем zpool.cache. Ключевой момент.
cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
Устанавливаем дополнительные параметры в файл loader.conf и создаем пустой файл fstab.
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 echo '#vm.kmem_size="512M"' >> /mnt/boot/loader.conf touch /mnt/etc/fstab
Перезагружаемся.
reboot
Дабы не ошибиться в наборе команд, можно сделать следующее — создать скрипт. Разместить его на любой машине куда имеется доступ оп ssh.
Настраиваем сетевой интерфейс.
ifconfig em0 inet 192.168.0.2 netmask 255.255.255.0 up
Выполняем скрипт:
ssh user@192.168.0.1 'cat zfs.sh' | sh