Установка FreeBSD на ZFS

Вступление

Задача: установить ОС FreeBSD-9.2RC3.

Проводим подготовительный этап: загружаем образ флэшки с сайта и выполняем команду:

delta# dd if=имя_образа of=/dev/da0 bs=1M

После чего устройство /dev/da0 становится загрузочной флэшкой с нашей системой. Грузимся с нее и выбираем режим LiveCD.

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

Установку будем выполнять на жесткий диск — устройство ada1.

Первый этап - проверим, что диск пуст командой

root@# gpart show

Далее создадим разметку:

root@# gpart create -s GPT ada1

Теперь можно создавать разделы. У нас их будет три: первый — это efi-раздел, второй — swap, а на третьем будет размещена собственно система.

root@# gpart add -t efi -s 100M -b 40 ada1

Опция -s определяет размер раздела. Размер efi-раздела должен быть не более 2G.

Опция -b задает смещение от начала разметки диска.

root@# gpart add -t freebsd-swap -s 2G ada1

Под swap обычно выделяют место, равное 1.5 размерам оперативной памяти, но нам столько не нужно — ограничиваемся аппендиксом в 2G.

root@# gpart add -t freebsd-zfs ada1

Все остальное отводим под пул zfs.

В результате получаем следующее:

root@# gpart show ada1
=>       34  351651821  ada1  GPT  (167G)
         34       1024    1  freebsd-boot  (512K)
       1058    4194304    2  freebsd-swap  (2.0G)
    4195362  347456493    3  freebsd-zfs   (165G)

Следующий этап — записать загрузчик efi.

root@# newfs_msdos -F 32 -c 1 /dev/ada1p1
root@# mount -t msdosfs /dev/ada1p1 /mnt
root@# mkdir -p /mnt/EFI/BOOT
root@# cp /boot/boot1.efi /mnt/EFI/BOOT/BOOTX64.efi
root@# umount /mnt

Чтобы это работало, в BIOS необходимо отключить SecureBoot. Подробнее про efi-раздел можно узнать в справке по efi1), особенно если есть необходимость использовать загрузчики для других систем.

На этом работа с утилитой gpart заканчивается.

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

Перемонтируем корневой раздел текущей системы в режим rw2):

root@# mount -o rw /dev/ufs/FreeBSD_Install /

Это нужно для того, чтобы при создании нового пула zfs кэш-файл с информацией о пуле мог быть записан в файл /boot/zfs/zpool.cache.

Далее загружаем модуль zfs:

root@# kldload zfs

Теперь собственно создаем наш пул. Назовем его system.

root@# zpool create -o failmode=continue -O checksum=sha256 -m /mnt system /dev/ada1p3
root@# zpool set bootfs=system system

В качестве устройства для пула мы используем /dev/ada1p3 - раздел freebsd-zfs. Последняя команда делает раздел загрузочным.

Теперь создаем разделы пула:

root@# zfs create system/var
root@# zfs create system/tmp
root@# zfs create system/usr
root@# zfs create system/var/db
root@# zfs create system/var/cache
root@# zfs create system/var/empty
root@# zfs create system/var/log
root@# zfs create system/var/mail
root@# zfs create system/var/tmp
root@# zfs create system/usr/ports
root@# zfs create system/usr/ports/distfiles
root@# zfs create system/usr/src
root@# zfs set compression=gzip system/usr/src

Не забываем изменить права доступа к tmp:

root@# chmod 1777 /mnt/tmp /mnt/var/tmp

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

Теперь можно переходить собственно к установке системы в созданный zfs-пул. Делаем это командой bsdinstall.

root@# setenv DISTRIBUTIONS "base.txz doc.txz kernel.txz lib32.txz src.txz"

Это мы задали набор, который будем устанавливать. Полный список лежит в /usr/freebsd-dist. Теперь установка:

root@# bsdinstall distextract

Затем сразу выполняем некоторые настройки, например имя машины:

root@# bsdinstall hostname

сетевые настройки:

root@# bsdinstall netconfig

устанавливаем пароль суперпользователя:

root@# bsdinstall rootpass

добавляем пользователей:

root@# bsdinstall adduser

и так далее. В принципе, все это можно сделать потом, загрузившись в свежеустановленную систему.

Еще 3 момента по настройке:

Создаем, например, утилитой ee, файл /mnt/boot/loader.conf минимально следующего содержания:

root@# cat /mnt/boot/loader.conf
zfs_load="YES"
vfs.root.mountfrom="zfs:system"

Здесь system — это имя нашего пула zfs.

Добавляем в /mnt/etc/rc.conf строчку zfs_enable=«YES»:

root@# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf

Наконец, настраиваем монтирование swap-раздела. Сначала узнаем его метку из вывода команды

root@# glabel list ada1p2

В нашем случае — это gptid/e3ff6420-1263-11e3-8849-14dae9b34088. Теперь создаем файл /mnt/etc/fstab:

root@# echo '/dev/gptid/e3ff6420-1263-11e3-8849-14dae9b34088 none swap sw 0 0' >> /mnt/etc/fstab

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

Изменяем точки монтирования файловых систем:

root@# zfs set mountpoint=legacy system
root@# zfs set mountpoint=/usr system/usr
root@# zfs set mountpoint=/tmp system/tmp
root@# zfs set mountpoint=/var system/var

Убеждаемся, что ничего не забыли, посмотрев на вывод команды

root@# zfs list

Напоследок, сделаем еще так:

root@# zfs set readonly=on system/var/empty

Копируем кэш пула в нашу систему:

root@# zpool export system && zpool import system
root@# cp /boot/zfs/zpool.cache /mnt/boot/zfs/

Все, можно загружаться в нашу только что установленную систему!

1)
man efi
2)
Если установка системы производится с cd, то потребуется больше телодвижений:
root@# mdconfig -a -t swap -s 1g -u md2
root@# newfs -U /dev/md2
root@# mount /dev/md2 /media
root@# mount_unionfs /media /boot
freebsd/install.txt · Последние изменения: 10.07.2020 16:02:18 — Ладилова Анна
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0