- Готовим флешку
Качаем нужный образ с сайта FreeBSD. Я выбрал архитектуру amd64, образы лежат тут. Образ для флешки: FreeBSD-10.1-RELEASE-amd64-memstick.img
Запиливаем флешку. Под FreeBSD это можно сделать программой dd. У меня флешка определилась как da0. Не забываем, что флешку предварительно монтировать не надо.# dd bs=64k if=FreeBSD-10.1-RELEASE-amd64-memstick.img of=/dev/da0 11175+0 records in 11175+0 records out 732364800 bytes transferred in 203.900636 secs (3591773 bytes/sec)
Про запиливание инсталлянта более подробно можно прочитать в официальном руководстве.
- Установка
Загружаемся с флешки и устанавливаем. Замечания по установке:
- Keymap Selection - оставляем default. Из русских в списке есть только CP866, ISO-8859-5, koi8-r, но это прошлый век, после установки руками настроим UTF.
- Distribution Select - я выбрал lib32 (32-х разрядные библиотеки), ports (порты, обязательно) и src (исходники ОС, не обязательно, но они все равно потом понадобятся)
- Partitioning - тут решать вам. Есть древний гид по разбивке, где советуют разбивать отдельно на /usr /usr/local /var /home и приводятся рекомендуемые размеры, в качестве основного аргумента говорится, что если вдруг будет полностью забит один из разделов, то это никоим образом не повлияет на остальные и система не повиснет. Также, последний писк файловых систем - это zfs, но прирост по скорости присутствует только если у вас два диска в райде. У меня есть два диска, но делать из них райд нет смысла (все таки домашний сервер), поэтому я выбрал Auto (UFS), на загрузочном (300GB) автоматически был сделал swap-раздел (по размеру ОЗУ), загрузочный раздел и корневой раздел где будет жить операционка. Второй диск (1TB) не трогал, на нем все осталось от старого сервера, примонтирую его позже в качестве /home. На нем будут жить все сервисы (домики пользователей, файлопомойка и т.д.). При таком варианте приходящие файлы не смогут положить систему, если они и забьют диск, то только второй.
- Select local or UTC ... clock - я выбрал [No], потому что мой сервер использует локальное время. После этого появятся окна для выбора часового пояса, выбирайте какой вам нужно.
- System Configuration - оставил только sshd
- Add User Accounts - пользовательские аккаунты добавлять не стал, так как ещё не примонтирован второй диск. Добавлю позже.
- Обновление
Обновляем коллекцию портов
Обновляем исходный код
- Компилируем своё ядро, устанавливаем ядро и мир
Для чего нужно компилировать своё ядро? Во-первых, ядро по умолчанию содержит кучу ненужных драйверов для устройств. Мы их выкинем, что уменьшит размер файла ядра и сэкономит память. Во-вторых, в ядре по умолчанию нет нужных нам опций для брандмауера, nat-а, UTF и прочих радостей как, например, возможности получать температуру процессора. Ядро будем писать не с нуля, а изменим GENERIC.
Всё делаем по проверенной несколькими поколениями FreeBSD схеме. Чтобы случайно не прибить свой конфиг (поверьте, у меня такое было), копируем GENERIC в директорую root-а, переименовываем файл (например, в SERVER) и делаем на него ссылку в директорию с конфигурациями ядра.# cp /usr/src/sys/amd64/conf/GENERIC /root/kernel/SERVER # ln -s /root/kernel/SERVER /usr/src/sys/amd64/conf/SERVER
Редактируем /root/kernel/SERVER
Ищем строчкуident GENERIC
и меняем её наident SERVER
Закомментируйте все устройства (строка device), которых нет на вашем сервере, например, всяческие контроллеры SCSI, RAID-контроллеры, PCMCIA, ISA, беспроводные карты, флоппи. Только не отключите сетевые карты, которые установлены в сервере, список можно посмотреть командой:# ifconfig ale0: flags=8843 metric 0 mtu 1500 options=c319a ether XX:XX:XX:XX:XX:XX inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.XXX media: Ethernet autoselect (100baseTX ) status: active rl0: flags=8802 metric 0 mtu 1500 options=3808 ether XX:XX:XX:XX:XX:XX media: Ethernet autoselect status: no carrier ipfw0: flags=8801 metric 0 mtu 65536 lo0: flags=8049 metric 0 mtu 16384 options=3 inet 127.0.0.1 netmask 0xff000000 tun0: flags=8051 metric 0 mtu 1500 options=80000 inet XXX.XXX.XXX.XXX --> 10.0.0.2 netmask 0xffffff00 Opened by PID XXXX
В этом примере на сервере установлены две карты ale0 и rl0, следовательно в файле конфигурации ядра не стоит трогать строчкиdevice ale device rl
Список поддерживаемого оборудования можно посмотреть в Hardware Notes на страничке релизов.
После строкиoptions SMP
добавляем нужное нам:##UTF8 options TEKEN_UTF8 ##FIREWALL options IPFIREWALL options IPFIREWALL_VERBOSE # разрешает запись информации о пакетах в syslog options IPFIREWALL_VERBOSE_LIMIT=50 options IPFIREWALL_DEFAULT_TO_ACCEPT # задает последней строкой правил "разрешить всё", иначе после перезагрузки брандмауер заблокирует сеть options DUMMYNET # для регулирования полосы пропускания в ipfw ##NAT options IPDIVERT # для использования nat на уровне ядра options IPFIREWALL_NAT # используем NAT встроенный в ядро options LIBALIAS # обязательная опция для "ядерного" NAT options HZ="1000" ##VPN options NETGRAPH options NETGRAPH_PPP # поддержка ppp options NETGRAPH_PPTPGRE # поддержка gre-туннелирования ##ACCEPT_FILTER FOR NGINX ##можно почитать в статье про установку nginx options ACCEPT_FILTER_HTTP options ACCEPT_FILTER_DATA ##CPU TEMPERATURE device coretemp # устройство для получения температуры процессора
Редактируем /etc/make.conf (если его нет, то создаем). Образец файла можно посмотреть тут: /usr/share/examples/etc/make.conf
Добавляем свой процессорCPUTYPE?=pentium3
Узнать тип своего процессора можно командой# cat /var/log/messages | grep CPU:
или командой# sysctl -a | grep hw.model
Теперь приступаем к компиляции и установке
Чистим директории# cd /usr/obj && chflags -R noschg * # cd /usr/obj && rm -rf * # cd /usr/src && make cleandir && make cleandir && make cleandir
Компилируем мир# cd /usr/src && make -j2 buildworld
-j2 указывает компилировать в два потока, если процессор многоядерный, то можно вместо -j2 задать -j6
Компилируем ядро# cd /usr/src && make buildkernel KERNCONF=SERVER
Устанавливаем ядро# cd /usr/src && make installkernel KERNCONF=SERVER
После того, как ядро скомпилировалось и установилось, перезагружаемся в однопользовательский режим на новом ядре.# reboot
После загрузки выполняем проверку файловой системы# fsck -p
Затем монтируем разделы и своп# mount / # mount -a # swapon -a
Устанавливаем мир# cd /usr/src && make installworld
Перезагружаемся в обычном режиме# reboot
Готово, система установлена и обновлена.
- Настройка
- Добавляем обычного пользователя для того, чтобы заходить по ssh. Делается это командой
# adduser
Во время добавления не забудьте добавить этого пользователя в группу wheel. - Делаем UTF8 основной кодировкой ОС.
Редактируем /etc/login.conf# ee /etc/login.conf
russian|Russian Users Accounts:\ :charset=UTF-8:\ :lang=ru_RU.UTF-8:\ :tc=default:
Затем:# cap_mkdb /etc/login.conf
И выполняем для каждого пользователя кроме root:# pw usermod -n $username -L russian
Редактируем /etc/csh.cshrcsetenv LANG ru_RU.UTF-8 setenv LC_CTYPE ru_RU.UTF-8 setenv LC_COLLATE POSIX setenv LC_ALL ru_RU.UTF-8
Редактируем /root/.cshrcsetenv LANG C setenv LC_CTYPE C setenv LC_COLLATE POSIX setenv LC_ALL C
- Задаем нестандартный порт для sshd:
# ee /etc/ssh/sshd_config
Ищем в файле строку#Port 22
раскомментируем её и зададим для подключения вместо стандартного 22-го порта свой, например, 1822Port 1822
Перезагружаем sshd# /etc/rc.d/sshd restart
- Включаем запись всех логов
Редактируем файл /etc/syslog.conf. Ищем там строку#*.* /var/log/all.log
и действуем согласно инструкции, которая записана в /etc/syslog.conf строчкой выше, после чего перезапускаем syslogd# /etc/rc.d/syslogd restart
- Добавляем обычного пользователя для того, чтобы заходить по ssh. Делается это командой
Статья опубликована: 2015-05-04 12:35:34
Последние правки: 2018-05-05 23:19:46
Делаем домашний сервер. Загружаемся с флешки и устанавливаем FreeBSD 10.1 из интернета. Делаем UTF-8 основной кодировкой. Обновляем систему и порты до текущего состояния.
Стыдно сказать, но до этого момента мой домашний сервер работал на FreeBSD 8.2 и руки не доходили обновиться. Но вот время пришло и на смену восьмерке идет FreeBSD 10.1. Решил попробовать сетевую установку с загрузкой с флешки, благо толщина канала позволяет.