К сожалению в FreeBSD 9 CURRENT так и не сделали нормальную установку на ZFS раздел но успели изменить стуктуру установочных файлов и в рещультате старые методы не работают.
Для установки на ZFS ROOT нам понадобится загрузиться с Live-CD диска FreeBSD 9 CURRENT (user root) и выполнить следующие шаги:
1. Первое что нужно сделать, так это организовать место для хранения zpool.cache файла и для этого нам придётся перемонтировать /tmp
umount /dev/md1 mdmfs -s 1024M md1 /tmpТеперь необходимо создать разделы диска. Мы будем использовать схему GPT - где 4 Gb отдадим на swap а остальное используем под ZFS (предполагается что устанавливаем на один диск, но данный метод может быть, легко использован и для RAID)
Создаём разделы и загрузочную запись
gpart create -s gpt ada0 gpart add -b 34 -s 64k -t freebsd-boot ada0 gpart add -s 4G -t freebsd-swap -l swap0 ada0 gpart add -t freebsd-zfs -l disk0 ada0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0Теперь диск готов и следующим шагом мы создадим пул и смонтируем его в /mnt.
Во время данной операции могут появляться ошибки о монтировании, но вы можете спокойно их игнорировать - они возникают из-за того что / доступен только для записи но это никак нам не помешает.
zpool create -f zroot /dev/gpt/disk0 zpool set bootfs=zroot zroot zfs set checksum=fletcher4 zrootТеперь создадим файл образа системы. Снова игнорируем ошибки о монтировании.
zfs set mountpoint=/mnt zroot zfs create zroot/usr zfs create zroot/tmp zfs create zroot/varКвоту диска можно задать опцией -o quote :
zfs create -o quota=4G zroot/usr>Для дальнейшей работы, нам, нужно экспортировать созданный пул в /tmp/zpool.cache
zpool export zroot zpool import -o cachefile=/tmp/zpool.cache zrootВ данный момент, пул смонтирован в /mnt и можно приступать к заключительным шагам установки
chmod 1777 /mnt/tmp cd /mnt ; ln -s usr/home homeДалее нам нужно установить саму FreeBSD и для этого нам понадобится распаковать архивы с установочного диска.
Для минимальной установки понадобится, только три архива base.txz lib32.txz kernel.txz но мы ставим всё.
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 в /mnt/boot/zfs/zpool.cache
cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cacheНа этом, можно считать систему установленной. Осталось только отредактировать rc.conf, 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 cat << EOF > /mnt/etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/gpt/swap0 none swap sw 0 0 EOFИ финальный аккорд
zfs umount -aЕсли вы получаете сообщение "device busy", попробуйте umount -f /mnt
zfs set mountpoint=legacy zroot zfs set mountpoint=/tmp zroot/tmp zfs set mountpoint=/usr zroot/usr zfs set mountpoint=/var zroot/varПосле, можете перезагрузиться, сменить пароль root и настроить сеть.
Наслаждайтесь.
Немає коментарів:
Дописати коментар