FreeBSD — использование ZFS в качестве корневой файловой системы.

Грузимся с загрузочного диска FreeBSD 9.0 RELEASE — выбираем 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

Создаем ZFS пул игнорируя предупреждения.

zpool create zroot /dev/gpt/disk0

Устанавливаем дополнительные параметры, указываем временную точку монтирования.

zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot
zfs set mountpoint=/mnt zroot

Экспортируем и импортируем пул.

zpool export zroot
zpool import -o cachefile=/var/tmp/zpool.cache 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 раздел.

zfs create -V 4G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap

Создаем линк, исправляем разрешения.

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

Создание 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
touch /mnt/etc/fstab

Установка точек монтирования.

zfs set readonly=on zroot/var/empty
zfs umount -af
zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

Перезагружаемся.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.