Предлагаю вашему вниманию мою методику создания загрузочной флешки... (в конце)
К ней хочу добавить что 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