Для установки FreeBSD на ZFS нам понадобится либо DVD образ либо
USB Memstick. У меня почему то возникли проблемы с USB Memstick — как то странно обрабатывались сигналы с клавиатуры в Fixit консоли, а вот с DVD все заработало нормально.
1) У нас есть DVD диск с FreeBSD (На момент написания была FreeBSD 8.1)
2) Загружаемся с диска, в sysinstsll’e выбираем Fixit консоль, выбираем носитель в данном случае (DVD).
3) Нужно создать GPT разметку дисков(список дисков можно посмотреть atacontrol list)
Fixit# atacontrol list
ATA channel 0:
Master: ad4 <ST31000528AS/CC38> SATA revision 2.x Slave: no device present ATA channel 1: Master: ad6 <ST31032552AD/CC42> SATA revision 2.x Slave: no device present
Fixit# gpart create -s gpt ad4
Fixit# gpart create -s gpt ad6
4) Создание boot,swap и zfs разделов.
Под swap выделяем 4GB. Под zfs все оставшееся место.
Fixit# gpart add -b 34 -s 64k -t freebsd-boot ad4 #создание boot раздела
Fixit# gpart add -s 4G -t freebsd-swap -l swap0 ad4 #swap
Fixit# gpart add -t freebsd-zfs -l disk0 ad4 #zfs
Fixit# gpart add -b 34 -s 64k -t freebsd-boot ad6
Fixit# gpart add -s 4G -t freebsd-swap -l swap1 ad6
Fixit# gpart add -t freebsd-zfs -l disk1 ad6
5) Установка загрузчика на оба раздела
Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad6
Если возникал ошибка «operation not permitted» попробуйте это (я не столкнулся с такой ошибкой)
Fixit# sysctl kern.geom.debugflags=0x10
6) Загрузка ZFS модулей
Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko
7) Создание ZFS пула «zroot» в зеркале — можно назвать как угодно
Fixit# mkdir /boot/zfs
Fixit# zpool create zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
Fixit# zpool set bootfs=zroot zroot
8) Установка FreeBSD
8.1) Создание каталогов
Fixit# zfs set checksum=fletcher4 zroot
Fixit# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
Fixit# chmod 1777 /zroot/tmp
Fixit# zfs create zroot/usr
Fixit# zfs create zroot/usr/home
Fixit# cd /zroot ; ln -s /usr/home home
Fixit# zfs create zroot/var
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
Fixit# chmod 1777 /zroot/var/tmp
8.2) Установка FreeBSD в zroot
Fixit# cd /dist/8.0-*
Fixit# export DESTDIR=/zroot
Fixit# for dir in base catpages dict doc games info lib32 manpages ports; \
do (cd $dir ; ./install.sh) ; done
Fixit# cd src ; ./install.sh all
Fixit# cd ../kernels ; ./install.sh generic
Fixit# cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/
#некоторые настройка
Fixit# chroot /zroot
Fixit# echo ‘zfs_enable=»YES»‘ > /etc/rc.conf
Fixit# echo ‘hostname=»mehost»‘ >> /etc/rc.conf
Fixit# echo ‘zfs_load=»YES»‘ > /boot/loader.conf
Fixit# echo ‘vfs.root.mountfrom=»zfs:zroot»‘ >> /boot/loader.conf
Fixit# echo ‘LOADER_ZFS_SUPPORT=YES’ > /etc/src.conf
Fixit# mount -t devfs devfs /dev
Fixit# export DESTDIR=»»
Fixit# cd /usr/src/sys/boot/
Fixit# make obj
Fixit# make depend
Fixit# make
Fixit# cd i386/loader
Fixit# make install
Fixit# passwd #установка пароля root
Fixit# tzsetup #установка временной зоны
Fixit# cd /etc/mail
Fixit# make aliases #создание /etc/mail/aliases.db
Fixit# umount /dev
Fixit# exit
Fixit# cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache
8.3) Swap то же объединим в зеркало через gmirror
Fixit# kldload /mnt2/boot/kernel/geom_mirror.ko
Fixit# gmirror label -b prefer swap gpt/swap0 gpt/swap1
Fixit# ee /zroot/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/swap none swap sw 0 0
Fixit# echo ‘geom_mirror_load=»YES»‘ >> /zroot/boot/loader.conf
Fixit# export LD_LIBRARY_PATH=/mnt2/lib
Fixit# zfs unmount -a
#Установим точки монтирования для пула
Fixit# zfs set mountpoint=legacy zroot
Fixit# zfs set mountpoint=/tmp zroot/tmp
Fixit# zfs set mountpoint=/usr zroot/usr
Fixit# zfs set mountpoint=/var zroot/var
Fixit# exit
Взято с http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot/Mirror