Цель: в этой небольшой заметке, которая не исключает официальную документацию постараюсь описать кратко, но не в ущерб качеству, как мне удалось поставить 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"
Дополнительная литература:
- Root on ZFS FreeBSD9(Updated)
- Installing FreeBSD Root on ZFS using FreeBSD-ZFS portition in a FreeBSD MBR Slice
1. Размечаем диск в MBR и создаем слайс:
Fixit# gpart create -s MBR ada0
Fixit# gpart add -t freebsd ada02. Размечаем слайс в BSD и создаем партиции:
Fixit# gpart create -s BSD ada0s1
Fixit# gpart add -s 294G -t freebsd-zfs ada0s1
Fixit# gpart add -t freebsd-swap ada0s1Note: swap должен быть после zfs-партиции.
3. Задаем активный слайс:
Fixit# gpart set -a active -i 1 ada04. Увеличиваем /tmp до 512МБ:
Fixit# umount /dev/md1
Fixit# mdmfs -s 512M md1 /tmp5. Создаем zfs пул:
Fixit# zpool create amd64zfs /dev/ada0s1a
Fixit# zpool set bootfs=amd64zfs amd64zfs
Fixit# zfs set checksum=fletcher4 amd64zfs6. Пишем загрузчик:
Fixit# gpart bootcode -b /boot/mbr ada07. Временно монтируем пул:
Fixit# zfs set mountpoint=/mnt amd64zfs8. Устанавливаем ZFS-загрузчик:
* Экспортируем пул перед установкой буткода
Fixit# zpool export amd64zfs* Сетапим буткод стадии №1
Fixit# dd if=/boot/zfsboot of=/dev/ad0s1 count=1Note: Если появится сообщение "operation not permitted", то попробуй:
Fixit# sysctl kern.geom.debugflags=0x10* Сетапим буткод Стадия №2
Fixit# dd if=/boot/zfsboot of=/dev/ad0s1a skip=1 seek=1024Note: Важно понимать что этот буткод устанавливается в подходящую дыру на диске в ФС согласно формату ZFS это как раз после ZFS мета-данных, т.е. seek=1024
* Импортируем пул для продолжения установки
Fixit# zpool import -o cachefile=/tmp/zpool.cache amd64zfs9. Создаем файловые схемы:
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/packages10. Задаем привычные права:
Fixit# chmod 1777 /mnt/tmp
Fixit# chmod 1777 /mnt/var/tmp
Fixit# cd /mnt ; ln -s usr/home home11. Создадим под-шел:
Fixit# shNote: По умолчанию используется 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:-/}); done13. Задание настроек загрузчика:
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.cache15. Размонтировать все системы:
Fixit# zfs set readonly=on amd64zfs/var/empty
Fixit# umount -f /mnt
Fixit# zfs umount -a16. Изменяем точки монтирования для пула:
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На этом процесс установки завершен.
пн, 16/04/2012 - 02:58
зачем эта процедура? разве 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
сб, 05/05/2012 - 00: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 !!!
Перечитать статью и высказать имхо по существу,а не поверхностные ошметки мыслев
вт, 28/10/2025 - 00:22
Can't get enough of good vintage wine. Doesn’t matter if it’s dry or sweet, wine always makes the moment better.
Anyone ellse here love wine?
Also visit my site ... ร้านขายไวน์
вт, 28/10/2025 - 04:15
Can't get enough of good vintzge wine. Doesn’t matter if it’s dry or
sweet, it’s the perfect way to relax. Anyone else here love wine?
#WineTasting
my web site :: ไวน์
Добавить комментарий