Инструменты пользователя

Инструменты сайта


freebsd:install:mfsbsd_zroot_install

Ручная установка FreeBSD на ZFS mirror с использованием mfsbsd


Введение

Установка FreeBSD это довольно таки простая задача, и ее можно выполнить разными способами. В данной статье мы рассмотрим возможность удаленной установки при помощи ssh. Этот вариант я предпочитаю потому что, при установки системы на ZFS обычно приходится вводить очень много длинный команд и это гораздо проще сделать при помощи copy/paste.

Устанавливать будем на ZFS mirror. За основу взята статья Installing FreeBSD Root on ZFS using GPT.

Так же потребуется загрузочная флешка с mfsbsd

Установка

Загружаемся с mfsbsd, настраиваем сетевое подключение и логинемся по ssh

Разметка диска

Создаем схему GPT на обоих дисках:

gpart create -s gpt ada0
gpart create -s gpt ada1

Теперь необходимо сделать диски загрузочными:

  • UEFI boot:
gpart add -a 4k -s 800K -t efi ada0
gpart add -a 4k -s 800K -t efi ada1

gpart bootcode -p /boot/boot1.efifat -i 1 ada0
gpart bootcode -p /boot/boot1.efifat -i 1 ada1
  • Legacy boot:
gpart add -b 40 -s 512k -t freebsd-boot ada0
gpart add -b 40 -s 512k -t freebsd-boot ada1

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

Создаем два раздела на каждом из дисков. Первый раздел размером в 4Gb под swap, а все оставшееся место отдаем под ZFS.

gpart add -a 1m -s 4G -t freebsd-swap -l swap0 ada0
gpart add -a 1m -t freebsd-zfs -l disk0 ada0

gpart add -a 1m -s 4G -t freebsd-swap -l swap1 ada1
gpart add -a 1m -t freebsd-zfs -l disk1 ada1

Если на свервере установлено мало оперативной памяти, то можно подключить один из только что созданых swap разделов.

swapon /dev/gpt/swap0

Создание ZFS пула

Создаем пул из двух дисков

zpool create -o cachefile=/boot/zfs/zpool.cache -o altroot=/mnt zroot /dev/gpt/disk0 /dev/gpt/disk1

При желании можно включить lz4 компрессию пула:

zfs set compress=on zroot

Руутовую фс ограничиваем в 1Gb, помечаем ее как загрузочную и монтируем в /mnt:

zfs create -o mountpoint=none zroot/ROOT
zfs create -o mountpoint=/ -o canmount=noauto -o quota=1G zroot/ROOT/default
mount -t zfs zroot/ROOT/default /mnt
zpool set bootfs=zroot/ROOT/default zroot
zfs set checksum=fletcher4 zroot

ФС для временных файлов размером в 5Gb:

zfs create -o compression=on -o exec=on -o setuid=off -o mountpoint=/tmp -o quota=5G zroot/tmp

/usr ограничиваем 30Gb, но фс для домашних директорий создаем без ограничений по размеру:

zfs create -o mountpoint=/usr -o quota=30G zroot/usr
zfs create -o mountpoint=/usr/home zroot/home

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

/var

zfs create -o mountpoint=/var -o quota=10G zroot/var
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

Настройка разрешений для директорий с временными файлами и cсылка на домашнюю директорию пользователей.

ln -s /usr/home /mnt/home
chmod 1777 /mnt/tmp
chmod 1777 /mnt/var/tmp

Установка системы

Для установки нам необходимо скачать два файла base.txz и kernel.txz

cd /tmp/
fetch http://ftp.ru.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/base.txz
fetch http://ftp.ru.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/kernel.txz

Разархивируем содержимое файлов в руутовую фс:

cd /mnt
tar xvJf /tmp/base.txz
tar xvJf /tmp/kernel.txz
rm /tmp/*.txz

Заключительная настройка

Включаем поддержку ZFS:

echo 'zfs_load="YES" \
vfs.root.mountfrom="zfs:zroot/ROOT/default"' >> boot/loader.conf

echo 'zfs_enable="YES"' >> etc/rc.conf

Настройка сети и включение ssh:

echo 'hostname="test"\
ifconfig_em0="DHCP"\
sshd_enable="YES"' >> etc/rc.conf

Подключаем разделы для swap:

cat > etc/fstab <<EOF
/dev/gpt/swap0                 none                    swap    sw              0       0
/dev/gpt/swap1                 none                    swap    sw              0       0
EOF

Задаем пароль для root-а и создаем дополнительного пользователя:

chroot /mnt
passwd

pw useradd -n admin -g wheel -d /usr/home/admin -m -s /bin/sh
passwd admin

exit

Последний штрих:

cp /boot/zfs/zpool.cache boot/zfs/
cd ~
zpool export zroot

Теперь система готова к загрузке:

reboot
freebsd/install/mfsbsd_zroot_install.txt · Последнее изменение: andrei