Установка 9.0 RELEASE на MBR+ZFS

Цель: в этой небольшой заметке, которая не исключает официальную документацию постараюсь описать кратко, но не в ущерб качеству, как мне удалось поставить FreeBSD 9.0 на MBR разметкой и ZFS в качестве ФС. Не так давно я купил новый девайс Lenovo ThinkPad Edge E120 и мне очень захотелось поставить туда FreeBSD. На данный момент модно ставить GPT , а сверху ZFS. Однако у меня появились не малые траблы с этим. В списке TODO на сайте проекта FreeBSD выяснил что EFI booting еще в планах и не реализован. Это собственно и стало причиной почему я не стал применять GPT. Изначальлно все что ниже описано было опровано на 9.0 amd64 RC3, но оно также проверялось и на 9.0 RELEASE.

Задача: становить FreeBSD 9.0 с корнем и основной ФС на базе ZFS.


Hardware:

  • Процессор : 64-битный
  • Жесткий диск : 298 ГБ
  • Оперативка : 2ГБ

Терминология:

пул - под этим словом понимается пул устройств создаваемый командой "zfs create";
amd64zfs - используется в качестве имени ZFS пула;
ada0 - это имя устройства жесткого HITACHI SATA-диска, куда я ставлю систему;
ada0s1 - это имя устройства слайса в MBR на который размечаем BSD-разметку;
Fixit - Командная строка LiveCD. Нужно загрузиться с memstick или DVD образа.  Выбрать на старте опцию "LiveCD"

Дополнительная литература:

1. Размечаем диск в MBR и создаем слайс:

Fixit# gpart create -s MBR ada0
Fixit# gpart add -t freebsd ada0

2. Размечаем слайс в BSD и создаем партиции:

Fixit# gpart create -s BSD ada0s1
Fixit# gpart add -s 294G -t freebsd-zfs ada0s1
Fixit# gpart add -t freebsd-swap ada0s1

Note: swap должен быть после zfs-партиции.

3. Задаем активный слайс:

Fixit# gpart set -a active -i 1 ada0

4. Увеличиваем /tmp до 512МБ:

Fixit# umount /dev/md1
Fixit# mdmfs -s 512M md1 /tmp

5. Создаем zfs пул:

Fixit# zpool create amd64zfs /dev/ada0s1a
Fixit# zpool set bootfs=amd64zfs amd64zfs
Fixit# zfs set checksum=fletcher4 amd64zfs

6. Пишем загрузчик:

Fixit# gpart bootcode -b /boot/mbr ada0

7. Временно монтируем пул:

Fixit# zfs set mountpoint=/mnt amd64zfs

8. Устанавливаем ZFS-загрузчик:

* Экспортируем пул перед установкой буткода

Fixit# zpool export amd64zfs

* Сетапим буткод стадии №1

Fixit# dd if=/boot/zfsboot of=/dev/ad0s1 count=1

Note: Если появится сообщение "operation not permitted", то попробуй:

Fixit# sysctl kern.geom.debugflags=0x10

* Сетапим буткод Стадия №2

Fixit# dd if=/boot/zfsboot of=/dev/ad0s1a skip=1 seek=1024

Note: Важно понимать что этот буткод устанавливается в подходящую дыру на диске в ФС согласно формату ZFS это как раз после ZFS мета-данных, т.е. seek=1024

* Импортируем пул для продолжения установки

Fixit# zpool import -o cachefile=/tmp/zpool.cache amd64zfs

9. Создаем файловые схемы:

Fixit# zfs create amd64zfs/data
Fixit# zfs create amd64zfs/usr
Fixit# zfs create amd64zfs/usr/home
Fixit# zfs create -o quota=4G amd64zfs/tmp
Fixit# zfs create -o quota=4G amd64zfs/var
Fixit# zfs create -o quota=4G amd64zfs/var/tmp
Fixit# zfs create -o setuid=off amd64zfs/var/db
Fixit# zfs create -o setuid=off amd64zfs/usr/obj
Fixit# zfs create -o exec=off -o setuid=off amd64zfs/var/empty
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off amd64zfs/usr/src
Fixit# zfs create -o compression=off -o exec=on -o setuid=off amd64zfs/usr/ports
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off amd64zfs/var/crash
Fixit# zfs create -o compression=off -o exec=off -o setuid=off amd64zfs/usr/ports/distfiles
Fixit# zfs create -o compression=off -o exec=off -o setuid=off amd64zfs/usr/ports/packages

10. Задаем привычные права:

Fixit# chmod 1777 /mnt/tmp
Fixit# chmod 1777 /mnt/var/tmp
Fixit# cd /mnt ; ln -s usr/home home

11. Создадим под-шел:

Fixit# sh

Note: По умолчанию используется tsch.

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

Fixit# cd /usr/freebsd-dist
Fixit# export DESTDIR=/mnt
Fixit# for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
Fixit# do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

13. Задание настроек загрузчика:

Fixit# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
Fixit# echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
Fixit# echo 'vfs.root.mountfrom="zfs:amd64zfs"' >> /mnt/boot/loader.conf
Fixit# cat << EOF > /mnt/etc/fstab

Пишем следующее:

# Device Mountpoint FStype Options Dump Pass#
/dev/ada0s1b none swap sw 0 0
EOF(т.е. жмем Ctrl+D)

Note: Посмотри и убедись в назначении ada0s1b это точно своп?

14. Копирование кэша пула:

Fixit# cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache

15. Размонтировать все системы:

Fixit# zfs set readonly=on amd64zfs/var/empty
Fixit# umount -f /mnt
Fixit# zfs umount -a

16. Изменяем точки монтирования для пула:

Fixit# zfs set mountpoint=legacy amd64zfs
Fixit# zfs set mountpoint=/tmp amd64zfs/tmp
Fixit# zfs set mountpoint=/usr amd64zfs/usr
Fixit# zfs set mountpoint=/var amd64zfs/var

На этом процесс установки завершен.

ttys


3. Задаем активный слайс:

  1. Fixit# gpart set -a active -i 1 ada0

зачем эта процедура? разве gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 не делает это?

вообще для себя я делал скрипт )) http://www.dtulyakov.org.ua/content/zfs-gpt

и по моему проще zfs без gpt юзать http://www.dtulyakov.org.ua/content/zfs-without-gpt

sys_dev

>>зачем эта процедура? разве gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 не делает это?



Затем что Вы прочитали статью по диагонали!

Вы предлагаете установить GPT ZFS Boot , а статья про  MBR !!! Ога?


>>вообще для себя я делал скрипт )) http://www.dtulyakov.org.ua/content/zfs-gpt
>>и по моему проще zfs без gpt юзать http://www.dtulyakov.org.ua/content/zfs-without-gpt
Второй раз говорю:

Статья про MBR , а не GPT !!!



Перечитать статью и высказать имхо по существу,а не поверхностные ошметки мыслев

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика