Установка 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 и создаем слайс:
  1. Fixit# gpart create -s MBR ada0<br />
  2. Fixit# gpart add -t freebsd ada0

2. Размечаем слайс в BSD и создаем партиции:
  1. Fixit# gpart create -s BSD ada0s1<br />
  2. Fixit# gpart add -s 294G -t freebsd-zfs ada0s1<br />
  3. Fixit# gpart add -t freebsd-swap ada0s1

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

3. Задаем активный слайс:
  1. Fixit# gpart set -a active -i 1 ada0<br />


4. Увеличиваем /tmp до 512МБ:
  1. Fixit# umount /dev/md1<br />
  2. Fixit# mdmfs -s 512M md1 /tmp


5. Создаем zfs пул:
  1. Fixit# zpool create amd64zfs /dev/ada0s1a<br />
  2. Fixit# zpool set bootfs=amd64zfs amd64zfs<br />
  3. Fixit# zfs set checksum=fletcher4 amd64zfs


6. Пишем загрузчик:
  1. Fixit# gpart bootcode -b /boot/mbr ada0<br />


7. Временно монтируем пул:
  1. Fixit# zfs set mountpoint=/mnt amd64zfs<br />


8. Устанавливаем ZFS-загрузчик:
* Экспортируем пул перед установкой буткода
  1. Fixit# zpool export amd64zfs<br />

* Сетапим буткод стадии №1
  1. Fixit# dd if=/boot/zfsboot of=/dev/ad0s1 count=1<br />

Note: Если появится сообщение "operation not permitted", то попробуй:
  1. Fixit# sysctl kern.geom.debugflags=0x10<br />

* Сетапим буткод Стадия №2
  1. Fixit# dd if=/boot/zfsboot of=/dev/ad0s1a skip=1 seek=1024<br />

Note: Важно понимать что этот буткод устанавливается в подходящую дыру на диске в ФС согласно формату ZFS это как раз после ZFS мета-данных, т.е. seek=1024
* Импортируем пул для продолжения установки
  1. Fixit# zpool import -o cachefile=/tmp/zpool.cache amd64zfs<br />


9. Создаем файловые схемы:
  1. Fixit# zfs create amd64zfs/data<br />
  2. Fixit# zfs create amd64zfs/usr<br />
  3. Fixit# zfs create amd64zfs/usr/home<br />
  4. Fixit# zfs create -o quota=4G amd64zfs/tmp<br />
  5. Fixit# zfs create -o quota=4G amd64zfs/var<br />
  6. Fixit# zfs create -o quota=4G amd64zfs/var/tmp<br />
  7. Fixit# zfs create -o setuid=off amd64zfs/var/db<br />
  8. Fixit# zfs create -o setuid=off amd64zfs/usr/obj<br />
  9. Fixit# zfs create -o exec=off -o setuid=off amd64zfs/var/empty<br />
  10. Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off amd64zfs/usr/src<br />
  11. Fixit# zfs create -o compression=off -o exec=on -o setuid=off amd64zfs/usr/ports<br />
  12. Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off amd64zfs/var/crash<br />
  13. Fixit# zfs create -o compression=off -o exec=off -o setuid=off amd64zfs/usr/ports/distfiles<br />
  14. Fixit# zfs create -o compression=off -o exec=off -o setuid=off amd64zfs/usr/ports/packages


10. Задаем привычные права:
  1. Fixit# chmod 1777 /mnt/tmp<br />
  2. Fixit# chmod 1777 /mnt/var/tmp<br />
  3. Fixit# cd /mnt ; ln -s usr/home home


11. Создадим под-шел:
  1. Fixit# sh<br />

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

12. Установка системы:
  1. Fixit# cd /usr/freebsd-dist<br />
  2. Fixit# export DESTDIR=/mnt<br />
  3. Fixit# for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;<br />
  4. Fixit# do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done


13. Задание настроек загрузчика:
  1. Fixit# echo 'zfs_enable="YES"' &gt;&gt; /mnt/etc/rc.conf<br />
  2. Fixit# echo 'zfs_load="YES"' &gt;&gt; /mnt/boot/loader.conf<br />
  3. Fixit# echo 'vfs.root.mountfrom="zfs:amd64zfs"' &gt;&gt; /mnt/boot/loader.conf<br />
  4. Fixit# cat &lt;&lt; EOF &gt; /mnt/etc/fstab

Пишем следующее:
  1. # Device Mountpoint FStype Options Dump Pass#<br />
  2. /dev/ada0s1b none swap sw 0 0<br />
  3. EOF(т.е. жмем Ctrl+D)

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

14. Копирование кэша пула:
  1. Fixit# cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache<br />


15. Размонтировать все системы:
  1. Fixit# zfs set readonly=on amd64zfs/var/empty<br />
  2. Fixit# umount -f /mnt<br />
  3. Fixit# zfs umount -a


16. Изменяем точки монтирования для пула:
  1. Fixit# zfs set mountpoint=legacy amd64zfs<br />
  2. Fixit# zfs set mountpoint=/tmp amd64zfs/tmp<br />
  3. Fixit# zfs set mountpoint=/usr amd64zfs/usr<br />
  4. Fixit# zfs set mountpoint=/var amd64zfs/var


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

Комментарии

Аватар пользователя ttys
ttys
пн, 2012-04-16 00:58

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
sys_dev
пт, 2012-05-04 22:48

>>зачем эта процедура? разве 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 !!!

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

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

Filtered text

CAPTCHA
Этот вопрос предназначен для предотвращения автоматизированной обработки форм.
Fill in the blank.