Настройка базовой системы FreeBSD 5.4
freebsd install Alexey Tsvetnov
🕛 21.09.2006, 11:35
From: Alexey Tsvetnov <vorakl@ukr.net.>Newsgroups: email
Date: Mon, 13 Feb 2006 13:01:37 +0000 (UTC)
Subject: Настройка базовой системы FreeBSD 5.4
Version: 2.8.12 Copyright (c) 2005 Alexey Tsvetnov <vorakl@ukr.net.>
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