Предлагаю вашему вниманию мою методику создания загрузочной флешки... (в конце)
К ней хочу добавить что GPT разбитие диска чревато тем что резервная копия
раздела лежит в последнем секторе диска... Из-за этого если флешку скопировать
на винчестер или на другую флешку - при загрузке будет ругань что резервная
копия битая, посему предпочитаю MBR.
С восстановлением резервной копии заморачиваться не стал...
Если вносить изменения - обязательно нужно чтобы в конечном итоге флешка была в
режиме ro, так как при перезагрузке (power down) системы большая вероятность
того что флешка не прочекается... только ручками...
Приношу свои извинения в случае нахождения ошибок в методике... всё уже
автоматом
Но вот одна проблема появилась с 9.1: после перевода из режима rw в режим ro -
mount -r / система подвисает на некоторое время разной продолжительности...
т.е. всё что не требует диска - работает: туннели, роутинг, демоны... но в тоже
время зайти на неё нельзя... Максимум через 2-3 минуты всё приходит в норму, но
в этом промежутке gstat показывает 100% утилизацию da0...
До 9.1 такой проблемы нет. 8.4 не пробовал. Пробовал и последний стейбл 9.1,
разные разметки MBR или GPT доходило до того что беру машину, вставляю флешку,
загружаюсь (машина от сети отключена), с консоли ввожу mount -rw / потом через
секунду другую mount -r / и курю бамбук...
Первое время пугала необходимость при внесении каких-либо изменений
перемонтировать root из ro в rw, а потом обратно, потому что в одном из
давних
мануалов прочитал, что, мол, ходили слухи, что это чревато развалом UFS, но
пока что подтверждения этих слухов не встречал.
Полная чушь тот мануал, никакими развалами это не чревато.
---
Монтируем образ диска
mkdir -p /dist
mdconfig -a -f ./FreeBSD-9.1-RELEASE-amd64-disc1.iso
mount -t cd9660 /dev/md0 /dist
Подгатовка флешки
gpart show
gpart delete -i 1 da0
...
gpart destroy da0
размечаем GPT
gpart create -s GPT da0
boot раздел
gpart add -s 64k -t freebsd-boot da0
рабочий раздел
gpart add -s 900M -t freebsd-ufs -l flash0 da0
ставим загрузчик
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0
формат
newfs -n -L FreeBSDonFLASH /dev/da0p2
--
4k винты
Чё там рассчитывать, запомнить одну константу - 504=63*8.
Первый раздел в MBR создаём с -b 504, и дальше всё получается
автоматически.
Установка системы
mount /dev/da0p2 /mnt
sh
cd /dist/usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz doc.txz kernel.txz lib32.txz;
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
Также нужно собрать новый кернел со всем что надо (см. в конце)
Тюнинг
chroot /mnt
mkdir home
# пароль для рута
passwd root
vipw
quagga:*:101:101::0:0:Quagga Daemon:/usr/local/etc/quagga:/sbin/nologin
# создаём аккаут
adduser admin
Тюним .profile
echo 'PS1=`hostname -s`: '/home/admin/.profile
echo 'clear'/home/admin/.profile
echo 'echo save_pkg - sohranenie /var/db/pkg'/home/admin/.profile
echo 'echo save_dns - sohranenie /var/named'/home/admin/.profile
echo 'echo'/home/admin/.profile
---
mkdir /home/admin/conf
mkdir /mnt/usr/home/admin/pkg
mkdir /usr/local/sbin
rm sys
rmdir tmp
ln -s /var/tmp
echo autoboot_delay=3 /boot/loader.conf
echo 'loader_logo=beastie' /boot/loader.conf
echo Welcom to FreeBSD! /etc/motd
echo ALL : ALL : allow /etc/hosts.allow
Редактируем
vi /etc/mtree/BSD.var.dist
после
ppp gname=network mode=0770
..
вставляем
quagga uname=quagga gname=quagga mode=0700
...
Создаем файл fstab
cd /etc
vi fstab
/dev/gpt/flash0 / ufs rw 0 0
Потом поставить ro
Создаём rc.conf
vi rc.conf
keyrate=fast
hostname=TEST
varmfs=YES
varsize=256m
populate_var=YES
fsck_y_enable=NO
background_fsck=NO
gateway_enable=YES
update_motd=NO
dumpdev=NO
icmp_drop_redirect=YES
icmp_log_redirect=NO
firewall_enable=YES
firewall_quiet=YES
firewall_type=OPEN
named_enable=NO
usbd_enable=NO
sshd_enable=YES
sendmail_enable=NO