середу, 4 квітня 2012 р.

ROOT ON ZFS FREEBSD 9 live cd on dvd

К сожалению в 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 и настроить сеть.
Наслаждайтесь.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments