Настройка базовой системы FreeBSD 5.4 (freebsd install)
1. Разбивка по разделам
2. Модификация файловой системы
3. Установка локального часового пояса (отклонение от UTC)
4. Синхронизация времени с NTP-сервером
5. Модификация пользовательской среды и добавление пользователей
6. Установка доменного имени и IP-адреса системы
7. Установка параметров ядра
8. Настройка запуска системы
9. Настройка syslog и newsyslog
10. Настройка Cron и at
11. Настройка периодических процессов
12. Установка прав доступа к системе
13. Конфигурирование ядра
14. Подключение модулей ядра и первоначальное конфигурирование системы
15. Установка специфических параметров сборки
16. Работа через proxy, mirror
17. Пересборка базовой системы и ядра
18. Установка базовой системы и ядра1. Разбивка по разделам
150M - /
RAM * 1.5 - swap
3G - /var/tmp
2-4G * N - /var/cache # (squid, frox) ТОЛЬКО ЕСЛИ БУДУТ proxy servers!
сколько надо - /var/ftp # (vsftpd, samba) ТОЛЬКО ЕСЛИ БУДЕТ file server !
сколько надо - /var/mail # (sendmail) ТОЛЬКО ЕСЛИ БУДЕТ mail server !
сколько надо - /var/db # (mysql) ТОЛЬКО ЕСЛИ БУДЕТ database server !
10-20G - /usr
1G или более - /home
остальное - /var
2. Модификация файловой системы
а) Удалить каталог /tmp и создать символическую ссылку /tmp на /var/tmp
'rm -rf /tmp && ln -s /var/tmp /tmp'. Это сделает единое хранилище
временных файлов в отдельном разделе.
б) Переместить все каталоги /cdrom* в /mnt: 'mv -f /cdrom* /mnt/', создав тем
самым логическую структуру для присоединённых файловых систем (всё
монтируем в /mnt).
в) Создать в /mnt каталоги flash, floppy: 'cd /mnt && mkdir flash floppy'
Подготавливаем точки монтирования для внешних устройств.
г) Выносим из /usr хранилище пакетов. Создать каталог /var/pkgs и символическую ссылку /usr/ports/packages,
которая ссылается на него 'mkdir /var/pkgs && ln -s /var/pkgs /usr/ports/packages'.
В последствии в /var/pkgs можно будет подмонтировать по SMB внешний репозитарий
пакетов либо создавать в нём свои. Недостающие данные для монтирования файловый
системы по SMB (например пароль, IP), указываем в файле /etc/nsmb.conf:
[POMOJKA]
addr=10.10.10.113
retry_count=3
timeout=30
[POMOJKA:PKGMAN:PKGS]
password=Packages
д) Если предполагается наличие каталога /var/ftp (для file-сервера),
необходимо создать группу ftp (pw groupadd ftp) и пользователя ftp
'pw useradd ftp -c ftp -d /nonexistent -g ftp -s /usr/sbin/nologin'.
Установить на каталог /var/ftp владельца и группу ftp:ftp
'chown -Rf ftp:ftp /var/ftp' и права 'chmod 4755 /var/ftp'. В совокупности
с опцией ядра SUIDDIR это позволит создавать файлы внутри /var/ftp только
с владельцем и группой как у /var/ftp.
е) В результате файл /etc/fstab должен быть похож на:
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw,nodev 1 1
/dev/ad0s1h /var ufs rw,nodev 2 2
/dev/ad0s1d /var/tmp ufs rw,nosuid,noatime,nodev 2 2
/dev/ad0s1e /var/cache ufs rw,noexec,noatime,nodev 2 2
/dev/ad0s2d /var/ftp ufs rw,suiddir,noexec,noatime,nodev 2 2
/dev/ad1s1d /var/mail ufs rw,noexec,noatime,nodev 2 2
/dev/ad1s1e /var/db ufs rw,noexec,noatime,nodev 2 2
/dev/ad0s1f /usr ufs rw,noatime,nodev 2 2
/dev/ad0s1g /home ufs rw,noexec,noatime,nodev 2 2
#
# если ядро скомпилировано с atapicam для CD-R/CD-RW, DVD-R/DVD-RW
#/dev/cd0 /mnt/cdrom cd9660 ro,-C=KOI8-U,extatt,noauto,noexec,nodev 0 0
#
/dev/acd0 /mnt/cdrom cd9660 ro,-C=KOI8-U,extatt,noauto,noexec,nodev 0 0
/dev/da0s1 /mnt/flash msdosfs rw,-u=0,-g=0,-m=0644,-M=0755,-L=uk_UA.KOI8-U,-D=CP866,longnames,noauto,noexec,nodev 0 0
/dev/fd0 /mnt/floppy msdosfs rw,-u=0,-g=0,-m=0644,-M=0755,-L=uk_UA.KOI8-U,-D=CP866,longnames,sync,noauto,noexec,nodev 0 0
//pkgman@pomojka/pkgs /var/pkgs smbfs rw,-u=0,-g=0,-f=0644,-d=0755,-E=KOI8-U:CP866,noauto,noexec,nodev 0 0
3. Установка локального часового пояса (отклонение от UTC)
Запустить /usr/sbin/tzsetup. Определиться со временем в CMOS: UTC или локальное.
Если в CMOS установлено локальное время, то на вопрос надо ответить 'NO',
что приведёт к созданию пустого файла /etc/wall_cmos_clock и установке
запуска через cron программы 'adjkerntz -a' для выравнивания времени ядра
до UTC. Далее выбрать нужную временную зону, что приведёт к копированию
соответствующего файла из /usr/share/zoneinfo/ в /etc/localtime. Список
всех временных зон лежит в /usr/share/zoneinfo/zone.tab
Пример ручной настройки для Киева (Украина):
а) создать символическую ссылку /etc/localtime на /usr/share/zoneinfo/Europe/Kiev
ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime
б) Если в CMOS локальное время, то создать файл /etc/wall_cmos_clock
touch /etc/wall_cmos_clock && chmod 0444 /etc/wall_cmos_clock
в) Запустить
adjkerntz -a
4. Синхронизация времени с NTP-сервером
В файл /etc/rc.conf добавляем строки, для синхронизации времени при старте системы:
ntpdate_enable="YES"
ntpdate_flags="-b _NTP_SERVER_IP_"
Обязательно синхронизировать таким образом перед запуском NTP-сервера (если таковой
используется конечно) для предотвращения аварийного завершения ntpd из-за большой разницы
во времени.
Для периодического обновления времени добавить от имени root в Cron задание 'crontab -u root -e':
*/10 * * * * /usr/sbin/ntpdate -B _NTP_SERVER_IP_ > /dev/null 2>&1
5. Модификация пользовательской среды и добавление пользователей
а) Для создания украинизированной консоли в файл /etc/login.conf добавить
новую секцию:
ukrainian:\
:charset=KOI8-U:\
:lang=uk_UA.KOI8-U:\
:tc=default:
б) Отредактировать секцию default файла /etc/login.conf:
# Устанавливает алгоритм криптования паролей Blowfish
:passwd_format=blf:\
# предупреждать пользователей о том что пароли должны содержать
# разные символы (mixed-case passwords)
:mixpasswordcase=true:\
# минимальная длина пароля 8 символов
:minpasswordlen=8:
в) После каких-либо изменений login.conf запустить 'cap_mkdb /etc/login.conf'
г) Отредактировать файл /etc/auth.conf:
crypt_default=blf
д) Создание пользователей разных типов:
* для администратора:
pw useradd user_name -c Admin_User -d /home/user_name -g wheel -s /bin/tcsh \
-m -L ukrainian -h 0 && chmod 700 /home/user_name
* для непривилегированного пользователя:
pw groupadd user_name && \
pw useradd user_name -c Unpriv_User -d /home/user_name -g user_name -s /bin/tcsh -m \
-L ukrainian -h 0 && chmod 700 /home/user_name
* для сервиса:
pw groupadd service_name && \
pw useradd service_name -c Service_Name -d /nonexistent -g service_name -s /usr/sbin/nologin
е) Отредактировать файл .cshrc (для csh и tcsh) в домашних каталогах пользователей:
alias ll /bin/ls -AlFG
alias ls /bin/ls -FG
setenv EDITOR /usr/bin/ee
setenv PAGER /usr/bin/less
set prompt = '[%n@%B%m%b] %~%# '
6. Установка доменного имени и IP-адреса системы
В случае статического конфигурирования:
а) Прописать доменное имя системы в /etc/rc.conf:
hostname="your-hostname.your-domain"
б) Установить доменное имя системы:
hostname your-hostname.your-domain
в) Отредактировать файл /etc/hosts:
127.0.0.1 localhost.localdomain localhost
_IP_Address_ your-hostname.your-domain your-hostname
г) Сконфигурировать сетевой интерфейс на _IP_Address_ в /etc/rc.conf:
ifconfig_NET_IF="inet _IP_Address_ netmask _Net_Mask_"
д) Сконфигурировать шлюз в /etc/rc.conf:
defaultrouter="_Default_Router_"
е) Установить шлюз:
route add default _Default_Router_
ж) Отредактировать /etc/resolv.conf:
domain your-domain
search your-domain
nameserver _DNS_Server_1_
nameserver _DNS_Server_2_
з) Добавить в файл /etc/rc.conf блокировку "серых" сетей (ТОЛЬКО НА СЕРВЕРЕ).
#
# Static routes
#
static_routes="0 1 2 3 4 5 6"
route_0="-net 10.0.0.0/8 -iface lo0 -blackhole"
route_1="-net 172.16.0.0/12 -iface lo0 -blackhole"
route_2="-net 192.168.0.0/16 -iface lo0 -blackhole"
route_3="-net 169.254.0.0/16 -iface lo0 -blackhole"
route_4="-net 192.0.2.0/24 -iface lo0 -blackhole"
route_5="-net 224.0.0.0/4 -iface lo0 -blackhole"
route_6="-net 240.0.0.0/4 -iface lo0 -blackhole"
и) Добавить аналогично ваши маршруты к "серым" сетям для перекрытия блокировки.
В случае динамического конфигурирования интерфейса:
а) В файл /etc/rc.conf прописать:
ifconfig_NET_IF="DHCP"
б) В файле /etc/rc.conf закомментировать:
hostname=""
defaultrouter=""
в) Оставить в файле /etc/hosts только:
127.0.0.1 localhost.localdomain localhost
7. Установка параметров ядра
Добавить в файл /etc/sysctl.conf следующие строки:
# Блокировка видимости процессов, запущенных от других UID,GID
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
# Изменяет стандартное значение TTL для Unix (маскируемся под Windows)
net.inet.ip.ttl=128
# Отправляем в Blackhole (без RST или icmp-сообщений) все сегменты, пришедшие
# на порты без слушающих сокетов
# 2 - блокируем все сегменты, 1 - блокируем только SYN-сегменты
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
# Протоколировать обращения к портам без слушающих сокетов
# ВНИМАНИЕ! Возможен очень большой поток сообщений
#net.inet.tcp.log_in_vain=1
#net.inet.udp.log_in_vain=1
# Предупреждение SYN flood
kern.ipc.somaxconn=1024
# Протоколировать arp перемещения
net.link.ether.inet.log_arp_movements=1
# Время жизни записей в ARP таблице
net.link.ether.inet.max_age=600
# Блокируем и протоколируем входящие icmp редиректы
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
# Блокируем ip редиректы
net.inet.ip.redirect=0
# Блокируем все icmp broadcasts
net.inet.icmp.bmcastecho=0
# Устанавливаем размер TCP окна
net.inet.tcp.sendspace=32768
net.inet.tcp.recvspace=65536
# Якобы для корректной работы ipsec
net.key.preferred_oldsa=0
# Polling
#kern.polling.enable=1
#kern.polling.user_frac=50
# -- 150 (100 Mbit, HZ=1000)
#kern.polling.burst_max=150
# Включает фильтрацию ipfw по MAC-адресам
# ВНИМАНИЕ! Требуются дополнительные разрешающие правила для MAC !
#net.link.ether.ipfw=1
# После выхода из трубы продолжить просмотр правил фаерволом (ipfw)
#net.inet.ip.fw.one_pass=0
# Не сбрасывать TCP сессию пакетом "ICMP unreachable"
net.inet.tcp.icmp_may_rst=0
#
security.bsd.conservative_signals=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_get_quota=0
# Создавать жёсткие ссылки только на его файлы
security.bsd.hardlink_check_uid=1
security.bsd.hardlink_check_gid=1
# Синхронизировать диски во время kernel panic
kern.sync_on_panic=1
# Не создавать coredump
kern.coredump=0
8. Настройка запуска системы
Отредактировать файл /etc/rc.conf в соответствии:
#
# Common
#
fsck_y_enable="yes"
background_fsck="NO" # На сервера ОБЯЗАТЕЛЬНО!
local_startup="/usr/local/etc/rc.d" # Только для сервера!
virecover_enable="NO"
accounting_enable="YES" # Полезно на сервере
kern_securelevel_enable="YES" # Для рабочей станции отключить ("NO")
kern_securelevel="1"
#
# Console
#
moused_enable="YES" # Если используется USB mouse - отключить ("NO")
mousechar_start="3"
font8x8="cp866u-8x8"
font8x14="cp866u-8x14"
font8x16="cp866u-8x16"
scrnmap="koi8-u2cp866u"
keyrate="fast"
keymap="ua.koi8-u.shift.alt"
allscreens_flags="-m on -r yellow green -g 100x37 VESA_800x600 green black"
# изменение видеорежима всех консолей
# необходимо наличие в ядре параметров
# SC_PIXEL_MODE, VESA
#
# Services
#
syslogd_flags="-ss -cc" # Отключает возможность работы по сети и группировку
# однотипных сообщений
#sendmail_enable="NONE" # Для полного отключения Sendmail
sendmail_enable="NO" # Оставляет Sendmail только на локальном интерфейсе
sshd_enable="YES"
usbd_enable="YES"
#
# Network
#
hostname="your-hostname.your-domain"
defaultrouter="_Default_Router_"
gateway_enable="YES" # Только для маршрутизатора
#
# TCP/IP options
#
tcp_extensions="NO"
tcp_drop_synfin="YES"
tcp_restrict_rst="YES"
#
# Interfaces
#
cloned_interfaces="vlan0"
ifconfig_fxp0="inet 2.2.2.2/30"
ifconfig_em0="inet 10.1.0.1/30"
ifconfig_vlan0="inet 10.1.0.10/29 vlan 7 vlandev em0"
#
# Firewall
#
firewall_enable="YES"
firewall_type="OPEN" # Для сервера ОБЯЗАТЕЛЬНО усилить защиту!
firewall_quiet="YES"
firewall_logging="YES"
9. Настройка syslog и newsyslog
а) Установить на все файлы в каталоге /var/log право на чтение/запись только
для владельца 'find /var/log -type f -exec chmod 600 {} \;'
б) Закомментировать в файле /etc/syslog.conf все неиспользуемые в системе
протоколы (например slip.log, lpd-errs, xferlog). Удалить файлы
неиспользуемых протоколов.
в) Переделать активные facilities в файле /etc/syslog.conf примерно так:
*.err;*.crit;kern.debug;auth.notice /dev/console
*.emerg *
*.alert root,vorakl
*.notice /var/log/messages
*.=debug /var/log/debug.log
*.* /var/log/all.log
security.* /var/log/security
auth.*;authpriv.* /var/log/auth.log
mail.* /var/log/maillog
kern.* /var/log/kern.log
cron.* /var/log/cron.log
console.* /var/log/console.log
daemon.* /var/log/daemon.log
г) Убедиться, что все файлы протоколов существуют и на всех установлено право
на чтение/запись только для владельца, а владелец root.
д) Передёрнуть syslog:
killall -1 syslogd
е) В файле /etc/crontab изменить строку запуска newsyslog, чтобы все
запакованные файлы складывались в отдельном каталоге:
# Rotate log files every hour, if necessary and put it in rotate/
0 * * * * root newsyslog -a rotate
ж) Файл /etc/newsyslog.conf переделываем таким образом, чтобы логи паковались
каждые сутки:
/var/log/all.log 600 31 * $D0 J
/var/log/auth.log 600 7 * $D0 J
/var/log/console.log 600 7 * $D0 J
/var/log/cron.log 600 7 * $D0 J
/var/log/daemon.log 600 7 * $D0 J
/var/log/debug.log 600 7 * $D0 J
/var/log/kern.log 600 7 * $D0 J
/var/log/maillog 600 7 * $D0 J
/var/log/messages 600 7 * $D0 J
/var/log/security 600 7 * $D0 J
/var/log/sendmail.st 600 7 * 168 B
/var/log/wtmp 600 12 * $M1D5 B
/var/log/daily.log 600 7 * $D0 JN
/var/log/weekly.log 600 5 * $W6D0 JN
/var/log/monthly.log 600 12 * $M1D0 JN
10. Настройка Cron и at
a) Создать файл allow, блокируя всем непривилегированным пользователям возможность добавлять
свои собственные задания в Cron: 'touch /var/cron/allow && chmod 600 /var/cron/allow'
б) Создать файл at.allow, блокируя всем непривилегированным пользователям возможность добавлять
свои собственные задания в at: 'touch /var/at/at.allow && chmod 600 /var/at/at.allow'
в) Перечислить в файле /var/cron/allow тех пользователей, кому разрешено пользоваться Cron,
по одному на строку (не забываем про пользователя root)
г) Перечислить в файле /var/at/at.allow тех пользователей, кому разрешено пользоваться at,
по одному на строку (не забываем про пользователя root)
д) После добавления всех требуемых заданий в Cron от имени пользователя, сохранить их копию
в домашнем каталоге пользователя: 'crontab -u USER -l > ~USER/USER.cron'
е) Для восстановления списка заданий Cron, запустить: 'crontab -u USER ~USER/USER.cron'
11. Настройка периодических процессов
a) Скопировать файл /etc/defaults/periodic.conf в /etc
cp -f /etc/defaults/periodic.conf /etc/
б) Отредактировать файл, оставив только те строки, которые изменялись.
В результате может получиться примерно так:
daily_show_badconfig="YES"
weekly_show_badconfig="YES"
monthly_show_badconfig="YES"
#
daily_clean_disks_enable="YES"
daily_clean_disks_files="[#,]* .#* a.out *.core *.CKP .emacs_[0-9]*"
daily_clean_disks_days=3
#
daily_clean_tmps_enable="YES"
daily_clean_tmps_dirs="/tmp"
daily_clean_tmps_days="1"
daily_clean_tmps_ignore=".X*-lock quota.user quota.group .snap screens"
#
daily_status_disks_enable="YES"
daily_status_disks_df_flags="-hit nonfs"
#
weekly_noid_enable="YES"
weekly_noid_dirs="/"
#
weekly_status_pkg_enable="YES"
pkg_version="portversion -v"
в) Убедиться, что в файле /etc/crontab переменная PATH содержит необходимые каталоги,
иначе могут не запускаться некоторые команды с относительным путём:
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
г) Создать файлы, в которые можно в последствии добавлять свои скрипты,
по одному на строку: 'cd /etc/periodic && touch daily.local weekly.local monthly.local'
и добавить в /etc/periodic.conf:
daily_local="/etc/periodic/daily.local"
weekly_local="/etc/periodic/weekly.local"
monthly_local="/etc/periodic/monthly.local"
д) Если нет желания получать отчёты на почту root'у, их можно перенаправить в файлы.
Для этого необходимо создать файлы для протоколирования:
'cd /var/log && touch daily.log weekly.log monthly.log', убедиться в присутствии
соответствующих записей для данных файлов в /etc/newsyslog.conf
и добавить в /etc/periodic.conf:
daily_output="/var/log/daily.log"
weekly_output="/var/log/weekly.log"
monthly_output="/var/log/monthly.log"
е) Добавить в /etc/periodic.conf
log_rotate_dir="/var/log/rotate" # в случае запуска newsyslog с параметром '-a rotate'
и поменять строку в файле /etc/periodic/monthly/200.accounting:
W=/var/log/wtmp
на
W=${log_rotate_dir}/wtmp
12. Установка прав доступа к системе
а) Установить sudo из пакета 'pkg_add -r sudo'
б) Отредактировать файл /usr/local/etc/sudoers:
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL
в) Запустить 'vipw':
* Удалить строку с пользователем "toor"
* Поменять пароль пользователя root на звёздочку "*"
* Поменять shell для пользователя "uucp" на /usr/sbin/nologin
* Поменять идентификатор группы на 0 для админских логинов
* Поменять все домашние каталоги "/" у всех записей на "/nonexistent"
В определении местоположения каждого поля может поможет 'chsh'
г) Отредактировать /etc/login.access:
# Если установлен Squid
+:nobody squid mysql:local
# Для привилегированных пользователей. Блокируем вход root
-:ALL EXCEPT _user_1_ _user_2_:ALL
д) 'chmod 0400 /etc/login.access'
е) В /etc/ttys установить на всех консолях, кроме "console", тип insecure
в место secure
ж) Отключить 0-ю консоль, переключив ttyv0 из режима on перевести в off
з) 'kill -1 1'
13. Конфигурирование ядра
а) cd /sys/{your_arch}/conf/
б) Скопировать GENERIC в _YOUR_KERN_
в) Переименовать параметр 'ident' в файле ядра с GENERIC на _YOUR_KERN_
г) Установить корректное значение параметра 'cpu'
д) Закомментировать следующие параметры:
options INET6
options UFS_ACL
options NFSSERVER
options faith
options plip
е) Закомментировать параметры, относящиеся к USB. Если USB используется,
подключать при старте модулем (/boot/loader.conf)
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface
device usb # USB Bus (required)
device ugen # Generic
device uhid # "Human Interface Devices"
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
ж) Закомментировать следующие параметры, если не используется SCSI:
# SCSI Controllers
device ahb
device ahc
device ahd
device amd
device isp
device mpt
device ncr
device sym
device trm
device adv
device adw
device aha
device aic
device bt
device ncv
з) Добавить по желанию следующие параметры ядра (описание в /usr/src/sys/conf/NOTES и
/usr/src/sys/_ARCH_/conf/NOTES):
#
options HZ=1000
# Автоматическая перезагрузка через 16 сек после kernel panic
options PANIC_REBOOT_WAIT_TIME=16
# Не перезагружаться при нажатии Ctrl+Alt+Del
options SC_DISABLE_REBOOT
# Установка цветов консоли в "зелёный на чёрном", а ядра в "жёлтый на чёрном"
options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options SC_KERNEL_CONS_ATTR=(FG_YELLOW|BG_BLACK)
# Добавляет поддержку растрового текстового режима (не стандартные режимы)
options SC_PIXEL_MODE
options VESA
# Включает вставку содержимого буффера мышки по нажатию правой кнопки
options SC_TWOBUTTON_MOUSE
# Включает поддержку SUIDDIR для mount(8)
options SUIDDIR
# Эмулирует ATAPI устройства как SCSI (необходимо для поддержки CR-RW, DVD-RW)
device atapicam
# Поддержка многопроцессорности (необходимо для Hyper Threading)
options SMP
device apic
# Необходимо для специфических параметров монтирования для mount(8)
options LIBICONV
options LIBMCHAIN
options CD9660_ICONV
options MSDOSFS_ICONV
options MSDOSFS_LARGE
options NTFS
options NTFS_ICONV
options UDF
options UDF_ICONV
# Для включения SSE/MMX2
options CPU_ENABLE_SSE
# Включение SSE, если BIOS сам не включает (AMD only)
options CPU_ATHLON_SSE_HACK
# Сетевые параметры
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED
options IPDIVERT
options IPSTEALTH
options DUMMYNET
options TCP_DROP_SYNFIN
# Polling (НЕ РАБОТАЕТ С SMP)
options DEVICE_POLLING
# IPSec
options IPSEC
options IPSEC_ESP
options IPSEC_DEBUG
options IPSEC_FILTERGIF
# vlan (802.1Q)
device vlan
# Если есть PCI COM multiport
device puc
# Если есть ISA COM multiport
options COM_MULTIPORT
14. Подключение модулей ядра и первоначальное конфигурирование системы
а) Описываем необходимые модули и параметры ядра, добавляя их в
файл /boot/loader.conf. Например такие:
#
# Common
#
linux_load="YES" # Linux emulation
autoboot_delay="5"
smbfs_load="YES"
#
# ACPI/APM
#
acpi_video_load="YES"
#
# HyperThreading (требуется SMP в ядре)
#
#machdep.hyperthreading_allowed="1"
#
# ATA
#
hw.ata.ata_dma="1" # Enable DMA access for ATA devices
hw.ata.atapi_dma="1" # Enable DMA access for ATAPI devices
#
# Sound
#
speaker_load="YES"
snd_driver_load="YES"
#
# Screen saver at startup
#
bitmap_load="YES"
bitmap_name="/boot/fbsd-boot.pcx"
splash_pcx_load="YES"
#
# USB
#
usb_load="YES" # USB subsystem
ugen_load="YES" # USB generic device, if all else fails ...
uhid_load="YES" # Human Interface Devices
ums_load="YES" # Mouse
umass_load="YES" # Mass Storage Devices
15. Установка специфических параметров сборки
Отредактировать файл /etc/make.conf в соответствии
с /usr/share/examples/etc/make.conf. У меня он выглядит примерно так:
#
# Compile
#
CPUTYPE?= pentium2
CFLAGS= -O -pipe
COPTFLAGS= -O2 -pipe
#
# Common
#
KERNCONF=_YOUR_KERN_ # kernel по-умолчанию
MTREE_FOLLOWS_SYMLINKS= -L
#NO_DYNAMICROOT= true # Собирать статически /bin /sbin
NO_FORTRAN= true
NO_IPFILTER= true
NO_PF= true
NOATM= true
NOGAMES= true
NOINET6= true # если пересобрали "мир" с этим параметром, то
# то обязательно закомментировать строку
# "O DaemonPortOptions=Name=IPv6, Family=inet6, Modifiers=O"
# в /etc/mail/sendmail.cf и запустить 'cd /etc/mail && make all restart'
WITHOUT_X11=yes # Cтроить порты без поддержки X
DOC_LANG= en_US.ISO8859-1 ru_RU.KOI8-R
#
# Update
#
# Список зеркал для поиска distfiles программ из портов
MASTER_SITE_OVERRIDE=http://ftp2.ua.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
SUP_UPDATE= true # Производить обновление через 'make update'
NO_PORTSUPDATE= true
#NO_DOCUPDATE= true
#
SUP= /usr/local/bin/cvsup # установить из /usr/ports/net/cvsup-without-gui
SUPFLAGS= -g -L 3
SUPFILE= /usr/local/etc/cvsup.src
PORTSSUPFILE= /usr/local/etc/cvsup.ports
DOCSUPFILE= /usr/local/etc/cvsup.doc
16. Работа через proxy, mirror
По-умолчанию ОС использует утилиту fetch для загрузки файлов по протоколу
HTTP и FTP во время установки/обновления (pkg_add, pkg_fetch, portupgrade)
программ из портов. Для того, чтобы fetch устанавливал соединения через PROXY-сервер,
необходимо установить аналогичные значения переменных окружения:
http_proxy http://proxy.org:3128
ftp_proxy http://proxy.org:3128
В данном случае, http proxy-сервер должен поддерживать ftp проксирование.
Если данные переменные окружения записывать в нижнем регистре, то сохраняется
совместимость с альтернативным менеджером закачек wget для работы через proxy.
Если в качестве shell используется csh/tcsh, то для определения указанных
переменных окружения необходимо добавить в файл /etc/csh.cshrc такие строки
(обязательно перелогиниться!):
setenv http_proxy http://proxy.org:3128
setenv ftp_proxy http://proxy.org:3128
При вызове процессов через Cron, по-умолчанию используется sh в качестве Shell. Поэтому
необходимо добавить и в /etc/crontab строки:
http_proxy=http://proxy.org:3128
ftp_proxy=http://proxy.org:3128
Для установки зеркала пакетов по-умолчанию (pkg_add -r, pkg_fetch, portupgrade -PP, portinstall -PP)
аналогично в файл /etc/csh.cshrc дописываем:
setenv PACKAGEROOT http://package-mirror.org
Данный сайт должен содержать каталог /pub/FreeBSD/ports/$arch/packages-$release/
В противном случае переопределить сайт и каталог в переменной окружения PKG_SITES,
добавляя в файл /etc/csh.cshrc запись:
setenv PKG_SITES http://package-mirror1.org/packages/ \
http://package-mirror2.org/packages/ \
http://package-mirror3.org/packages/ \
Поиск пакетов происходит в каталоге All при указании полного имени пакета (с версией).
Иначе - в каталоге Latest, в котором должны содержаться символические ссылки с именами
без версий, ссылающиеся на полные имена пакетов в каталоге All.
Чтобы поиск distfiles (исходников) программ из портов изначально осуществлялся
на альтернативных зеркалах, необходимо в файле /etc/make.conf определить значение
переменной MASTER_SITE_OVERRIDE:
MASTER_SITE_OVERRIDE=http://ftp7.ua.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp2.ua.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
17. Пересборка базовой системы и ядра
а) cd /usr/src
б) rm -rf /usr/obj/*
в) make buildworld
г) make buildkernel KERNCONF=_YOUR_KERN_
18. Установка базовой системы и ядра
а) Перезагрузиться в однопользовательский режим
б) /sbin/fsck -p
в) /sbin/mount -u /
г) /sbin/mount -a
д) cd /usr/src/
е) make installkernel KERNCONF=_YOUR_KERN_
ж) /usr/sbin/mergemaster -p
з) make installworld
и) /usr/sbin/mergemaster
к) /sbin/reboot