Как то не везет мне с винтами последнее время. Уже умирает третий винт подряд, до этого мерли Seageate , а теперь приказал долго житьWD Переустановка, настройка доставляет достаточно мороки. Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. В интернетах описаны методы установки из образа диска. Ну во первых желания устанавливать из образа у меня нету, да и хотел сделать все по феншую. Что мы имеем, Freebsd 8.2-prerelease и флешку на 2 Гб. Форматируем флешкусоздаем метки
создаем файловую систему и создаем на ней UFS метку
newfs -U -L RootOnUSB /dev/da0s1a
Первая часть окончена, флешка подготовлена к развертыванию на ней системы. Монтируем ее
mount /dev/ufs/RootOnUSB /mnt/tmp
идем в /usr/src где мы собирали наш мир с ядром. устанавливаем мир на флешку
cd /usr/src
make installworld DESTDIR=/mnt/tmp
Мир установлен, осталось поставить ядро и конфигурационные файлы Ядро ставим, точнее копируем банально:
cp -rf /boot/kernel/* /mnt/tmp/boot/kernel/
я например скопировал только кастомное ядро и пару модулей, в частностиzfs.ko,opensolaris.ko Ставим конфигурационные файлы, я это сделаю дважды, для надежности
cd /usr/src/etc
make distrib-dirs DESTDIR=/mnt/tmp
make distribution DESTDIR=/mnt/tmp
а теперь копируем с живой системы
cd /etc
pax -p eme -X -rw . /mnt/tmp/etc/
можно считать что система у нас готова, хотя один момент, нам ведь надо поправить fstab и записать загрузчик я свой fstab довел до такого состояния
# Device Mountpoint FStype Options Dump Pass#
/dev/ufs/RootOnUSB / ufs rw,noatime 1 1
md /tmp mfs rw,-s16M,nosuid,noatime 0 0
md /var/run mfs rw,-s4M,nosuid,noatime 0 0
md /var/log mfs rw,-s16M,nosuid,noatime 0 0
/proc /proc procfs rw,noauto 0 0
Так как мы будем грузить с метки ufs/RootOnUSB то добавим в loader.conf следующее
echo 'geom_label_load="YES"' >> /boot/loader.conf
Имеется одна тонкость у материнских плат, не все сразу определяют umass , поэтом допишем еще ожидание загрузки для инициализации
echo 'kern.cam.boot_delay=10000 ' >> /boot/loader.conf
Для уменьшения числа операций записи на USB, мы создадим локальную базу данных и запретим еженедельное обновление:
# chroot /mnt /bin/sh
# mount_devfs devfs /dev
# /etc/periodic/weekly/310.locate
Rebuilding locate database:
# echo 'weekly_locate_enable="NO"' >> /etc/periodic.conf
# echo 'weekly_whatis_enable="NO"' >> /etc/periodic.conf
ctrl+^D
Поставим весь необходимый мне софт из имеющейся Freebsd на флешку. Маленьким скриптом создал пакеты из имеющихся в системе
#!/bin/sh
mkdir /home/pkg
cd /home/pkg
for i in `pkg_info | awk '{print $1} '`; do
pkg_create -b $i
done
монтируем папку с пакетами на флешку
mkdir /mnt/tmp/usr/pkg
mount_nullfs /home/pkg /mnt/tmp/usr/pkg
chroot /mnt/tmp /bin/sh
cd /usr/pkg
pkg_add .....(тут уж ставьте что хотите)
fstab поправили, пакеты поставили, осталось сделать флешку загрузочной. Отмонтируем ее
и запишем загрузчик
boot0cfg -v -B -o noupdate da0
В принципе все готово. Статья является симбиозом статей установки freebsd из образа и установки мира в jail Информация взята изhttp://www.opennet.ru/base/sys/freebsd_stick.txt.html и еще куска про jail , уже не помню где брал PS: Таким образом в принципе можно переносить и на новый жесткий диск, планах написать скрипт который бы делал копию имеющейся флешки