Страница 1 из 1

Сборка World c учетом ZFS

Добавлено: 2009-11-30 14:18:17
Джузеппе
Добрый день друзья. Прошу сразу извинить за возможно простые и элементарные вопросы, но я новичок во Фре, но так как ужасно интересно, то обучение мое проходит быстро.))
Суть моей проблемы такова. Решив изучить и поставить себе на стационарный компьютер FreeBSD 8.0 RC3 + ZFS после выхода STABLE стал думать о пересборке мира и ядра.
Действия свои опишу для наглядности - так как брал из разных русских и забугорных формумов..Просто иначе трудно будет определить мою проблему ( возможно ). Еще раз покорнейше прошу извинить за столь подробное описание. Вопрос будет в самом конце..
Стаавил FreeBSD 8.0 RC3 с поддрежкой ZFS следующим образом.
1.Зашел через Fixit выбрал CD/DVD:

Код: Выделить всё

Fixit# gpart create -s GPT ad0
ad0 created
2.Cоздал партицию для загрузчика:

Код: Выделить всё

Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad0
ad0p1 added
3. Создал партицию для ZFS

Код: Выделить всё

Fixit# gpart show ad0
=>       34  156301421  ad0  GPT  (75G)
         34        128    1  freebsd-boot  (64K)
        162  156301293       - free -   (75G)
Fixit# gpart add -b 162 -s 156301293 -t freebsd-zfs ad0
ad0p2 added
4. Вставил код загрузчика

Код: Выделить всё

Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0
ad0 has bootcode
Fixit# gpart show ad0
=>       34  156301421  ad0  GPT  (75G)
         34        128    1  freebsd-boot  (64K)
        162  156301293    2  freebsd-zfs  (75G)
5. Включил поддержку модуля ZFS

Код: Выделить всё

Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko
6. Создал пул RPOOL на всю свободную партицию и сделал загрузочным
Fixit# zpool create rpool /dev/ad0p2
Fixit# zpool set bootfs=rpool rpool
7. Сделал 3 фаловых системы

Код: Выделить всё

Fixit# zfs create rpool/tmp
Fixit# zfs create rpool/usr
Fixit# zfs create rpool/var
8. Создал СВАП на ZFS

Код: Выделить всё

Fixit# zfs create -V 2gb rpool/swap
Fixit# zfs set org.freebsd:swap=on rpool/swap
Fixit# zfs set checksum=off rpool/swap
9. Проинсталлил

Код: Выделить всё

Fixit# cd /dist/8.0-BETA2/base
Fixit# export DESTDIR=/rpool
Fixit# ./install.sh
You are about to extract the base distribution into /rpool - are you SURE
you want to do this over your installed system (y/n)? y
Fixit# cd ../kernels
Fixit# ./install.sh generic
Fixit# cd /rpool/boot
Fixit# cp -Rp GENERIC/* kernel/
Fixit# cd /dist/8.0-BETA2/src
Fixit# ./install.sh all
Extracting sources into /usr/src...
  Extracting source component: base
  Extracting source component: bin
  Extracting source component: cddl
  Extracting source component: contrib
  Extracting source component: crypto
  Extracting source component: etc
  Extracting source component: games
  Extracting source component: gnu
  Extracting source component: include
  Extracting source component: krb5
  Extracting source component: lib
  Extracting source component: libexec
  Extracting source component: release
  Extracting source component: rescue
  Extracting source component: sbin
  Extracting source component: secure
  Extracting source component: share
  Extracting source component: sys
  Extracting source component: tools
  Extracting source component: ubin
  Extracting source component: usbin
Done extracting sources.
Done extracting sources.
Fixit# cd ../manpages
Fixit# ./install.sh
10. Поставил поддержку в rc.conf и в loader.conf и в src.conf для загрузки

Код: Выделить всё

Fixit# echo 'zfs_enable="YES"' > /rpool/etc/rc.conf
Fixit# echo 'LOADER_ZFS_SUPPORT="YES"' > /rpool/etc/src.conf
Fixit# echo 'zfs_load="YES"' > /rpool/boot/loader.conf
Fixit# echo 'vfs.root.mountfrom="zfs:rpool"' >> /rpool/boot/loader.conf
11. Включил rpool.cache ( Сам не знаю нахрена - чесно признаю до мануала по ZFS руки не дошли - хотя и чесно распечатал на работе=)) )

Код: Выделить всё

Fixit# mkdir /boot/zfs
Fixit# zpool export rpool && zpool import rpool
Fixit# cp /boot/zfs/zpool.cache /rpool/boot/zfs/
12. Было написано что нужно оставить пустой fstabt, чтобы при загрузке не было ошибок:

Код: Выделить всё

Fixit# chroot /rpool
Fixit# mount -t devfs devfs /dev
Fixit# unset DESTDIR
Fixit# cd /usr/src/sys/boot/
Fixit# make obj
Fixit# make depend
Fixit# make
Fixit# cd i386/loader
Fixit# make install
Fixit# umount /dev
Fixit# touch /etc/fstab
Fixit# exit
12. Напоследок для динамически линкованных программ добавил переменную.

Код: Выделить всё

Fixit# export LD_LIBRARY_PATH=/mnt2/lib
Fixit# zfs set mountpoint=legacy rpool
Fixit# zfs set mountpoint=/tmp rpool/tmp
Fixit# zfs set mountpoint=/var rpool/var
Fixit# zfs set mountpoint=/usr rpool/usr
------------------
Братцы вот и все что я сделал для поддержки и загруки с ZFS - все работало...Установил необходимые утилиты из портов самостоятельно, добавил для изучения X11 и Gnome...поколдовал с WPA_SUPPLICANT и ее настройками..вообщем все начинало нравиться...НО
Решил обновить свою Rc3 до STABLE с учетом данных настроек.

Для обновления мира использовал статью с этого замечательного сайта (Обновление мира ("world")) PS. Спасибо lissyara & serg.
1. Создал МИР.
2. Создал ЯДРО. со своими настройками
3. Проинсталлил ЯДРО.
_--------------------------------------------------------
И вот пошла головомойка
Перезагрузился как полагается в SINGLE USER MODE.
1. Сделал 2. Примонтировал

Код: Выделить всё

zfs mount -a
Но файловая система так и осталась read-only. Признаю заметил сам не сразу а при выполнении mergemaster -p не дало на определенном шаге изменить файл.+((
При попытке zfs unmount rpool - пишет что пользовался umount(1M)
Пробую через umount пишет что не найден rpool.
Подумал и решил сделать слепок rpool'а и подмонтировать сверху тоже на /

Код: Выделить всё

zfs snapshot rpool@102030
zfs clone rpool@060614 rpool/main
zfs set mountpoint=/ rpool/main
и виснет все...=)))
Братцы подскажите как все такие сделать мой rpool rw, а не readonly????
Пробывал так же вот так

Код: Выделить всё

mkdir /tmp/z
zpool import -R /tmp/z rpool
cannot import 'rpool' no usch poool aviable
Хотя все так же...

Код: Выделить всё

mount
rpool on  / (zfs,local,read-only)
devfs on /dev (devfs,lcal,multilabel)
zpool ist 
rpool 298Gb use 7,8 avil 291 cap 2% heath ONLINE altroot -
Воощем братцы буду благодарен за ответ..Заранее спасибо за помощь..

Re: Сборка World c учетом ZFS

Добавлено: 2010-02-28 14:44:17
Alex Keda
нифига не понял...

Re: Сборка World c учетом ZFS

Добавлено: 2010-04-09 1:16:58
vds
Сам недавно с таким столкнулся, препарировал FreeBSD на виртуалке перед тем как начинать работу с новым винтом.
Решение проблемы есть, оно описано в статье http://www.xaero.org/index.php/archive/ ... freebsd-8/
На случай, если вдруг страница, куда я отсылаю потеряется, то нужно после перезагрузки в single user mode вместо команды

Код: Выделить всё

mount -a -t ufs
использовать пару команд

Код: Выделить всё

mount -uw /
zfs mount -a
Плюс не забыть после окончания установки мира и работы с mergemaster выполнить вот эту команду до перезагрузки

Код: Выделить всё

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0
Кстати, может кто сможет помочь? у меня вот эта последняя команда для gpart вываливается с сообщением

Код: Выделить всё

gpart: /dev/ad0s1: Operation not permitted

Re: Сборка World c учетом ZFS

Добавлено: 2010-04-10 17:23:58
iZEN

Код: Выделить всё

# zfs set readonly=off /