Предлагаю вашему вниманию  мою методику создания загрузочной флешки... (в конце)

К ней хочу добавить что 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"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

inetd_enable="NO"

------------------------------------------------------------------------------------

Создаём periodic.conf

vi periodic.conf
daily_output="/var/log/daily.log"
daily_status_security_output="/var/log/daily.log"
weekly_output="/var/log/weekly.log"
monthly_output="/var/log/monthly.log"
daily_backup_pkgdb_enable="NO"
daily_status_network_enable="NO"
daily_clean_disks_verbose="NO"
daily_clean_tmps_verbose="NO"
daily_clean_preserve_enable="NO"
daily_clean_preserve_verbose="NO"
daily_clean_msgs_enable="NO"
daily_clean_rwho_enable="NO"
daily_clean_rwho_verbose="NO"
daily_clean_hoststat_enable="NO"
daily_backup_passwd_enable="NO"
daily_backup_aliases_enable="NO"
daily_accounting_enable="NO"
daily_news_expire_enable="NO"
daily_status_disks_enable="NO"
daily_status_mailq_enable="NO"
daily_status_include_submit_mailq="NO"
daily_status_mail_rejects_enable="NO"
daily_status_named_enable="NO"
daily_status_named_usedns="NO"
daily_queuerun_enable="NO"
daily_submit_queuerun="NO"
daily_status_security_chksetuid_enable="NO"
daily_status_security_chkmounts_enable="NO"
daily_status_security_chkuid0_enable="NO"
daily_status_security_passwdless_enable="NO"
daily_status_security_logincheck_enable="NO"
daily_status_security_ipfdenied_enable="NO"
daily_status_security_pfdenied_enable="NO"
daily_status_security_ipfwlimit_enable="NO"
daily_status_security_ipf6denied_enable="NO"
daily_status_security_loginfail_enable="NO"
weekly_show_success="NO"
weekly_show_info="NO"
weekly_locate_enable="NO"
weekly_whatis_enable="NO"
monthly_show_success="NO"
monthly_show_info="NO"
monthly_accounting_enable="NO"

-------------------------------------------------------------------
vi rc.local

echo " PREPARING SERVICES "

cd /var/db/pkg/
/usr/bin/tar xzvf /home/admin/conf/pkg.tar.gz >/dev/null 2>/dev/null

cd /var/named/
/usr/bin/tar xzvf /home/admin/conf/named.tar.gz >/dev/null 2>/dev/null

-------------------------------------------------------------------
vi /usr/local/sbin/save_pkg

#!/bin/sh
cd /var/db/pkg/

if [ -e /var/db/pkg/pkg.tar.gz ]; then
   rm -f /var/db/pkg/pkg.tar.gz
fi
   
tar czvf pkg.tar.gz ./*
   
#mount -rw /
cp -f pkg.tar.gz /home/admin/conf/pkg.tar.gz
#mount -r /
   
#mount

chmod +x /usr/local/sbin/save_pkg


-------------------------------------------------------------------
vi /usr/local/sbin/save_dns

#!/bin/sh
cd /var/named/

if [ -e /var/named/named.tar.gz ]; then
   rm -f /var/named/named.tar.gz
fi
   
tar czvf named.tar.gz ./*
   
#mount -rw /
cp -f named.tar.gz /home/admin/conf/named.tar.gz
#mount -r /
   
#mount


-------------------------------------------------------------------
# выходим из конфигурации
exit

------------------------------------------------------------------------------------

Сохранить флешку

dd if=/dev/da0 of=/home/sasha/test.bin bs=1m count=901


------------------------------------------------------------------------------------
------------------------------------------------------------------------------------

Установка портов.

make package-recursive clean для:

arpwatch
iftop
ifstat
mc
mysql51-client
p5-DBD-mysql51
p5-System2
mtr
trafshow
p5-NetAddr
bird
quagga
quagga-re
mpd5
arping
openvpn
ncftp3
screen
pcpustat

Сгребём в одно место:
#/usr/bin/find /usr/ports/ -name \*.tbz -exec mv {} /var/tmp/ \;
/usr/bin/find /usr/ports/ -name \*.tbz -exec mv {} /mnt/usr/home/admin/pkg/ \;

-------------------------------------------------------------------
------------------------------------------------------------------------------------

Кернел ADD

device          iicbus
device          iicbb
device          iicsmb

device          smbus
device          intpm
device          ichsmb
device          smb

options         MROUTING
options         IPSTEALTH

options         IPDIVERT
options         DUMMYNET
device          coretemp

nooptions       INET6
nooptions       SCTP

options         IPFIREWALL
options         IPFIREWALL_NAT
options         LIBALIAS


Отредактировать /sys/netinet/libalias/alias_local.h

#define LINK_TABLE_OUT_SIZE        65535
#define LINK_TABLE_IN_SIZE         65535

there is no sense to make 'in' table size slightly more than 64k

------------------------------------------------------------------------------------
из /usr/src:

установка нового кернела при сборке мира:
make buildkernel KERNCONF=SERVER
make installkernel KERNCONF=SERVER DESTDIR=/mnt

установка нового мира + скопировать etc (mergemaster):
make installworld DESTDIR=/mnt


# установка кернела на флешку
sh
cd /usr/src/sys/amd64/compile/SERVER
make install DESTDIR=/mnt


Ответить