Юзаю я ОС FreeBSD достаточно давно. Начал с версии 4.4, потом апдейт до 4.8, 5.0, 5.1, 5.2 и, наконец, сейчас сижу под FreeBSD-5.2.1-RELEASE-p1. И, так же, достаточно часто слышу вопросы по БСД-системам, в частности как оную ставить, как пересобирать ядро, компилить софтину. Так как народ не очень любит читать файло README и man-страницы, которые идут на английском языке, то поведаю немного об этой ЗАМЕЧАТЕЛЬНОЙ ОСи. 

1. Установка
2. Конфигурирование
3. Сборка ядра и окружения
4. Развертка портов и установка софта 

З.Ы. Все эксперименты проводились на "голой" FreeBSD 5.2, т.е. была проведена только основная установка. 
+ Все файлы конфигов моей системы можно посмотреть в архиве
perenna.tgz. 

1. Итак, вы таки решили поставить Фрюху себе. Что ж, тогда читайте. Надеюсь, что Фря вам попалась на 4 дисках одним комплектом, а не так как мне. У меня тоже 4 диска, но первый - установочный 5.2, остальные содержали порты и дистфайлы и сырцы ядра.
Ставится все достаточно просто. Диск должен быть бутовый, иначе вам придется сделать дискетки для бута, все это уже описано на русском еще под систему 4.4, но технология та же.

Итак, вот подгрузилась графическая менюха. Тут мы выбираем дистрибутив, куда ставить оный и в какой комплекции. Советую ставить только основные компоненты и НЕ ставить сырцы ядра и порты.
Ну и, естесно, НЕ ставить уже компильнутую софтину. С разделами все немного посложнее.
В меню разбития диска советую нажать "A", т.е. дать системе самой сделать все, а затем переписать как оная все распределила и начать все заново. Я выделили системе что-то около 20 гигов, разделив так: 
/ 300Mb
/var 300Mb
/tmp 300Mb
swap 600Mb
/usr 18980Mb

По идее, своп должен быть в два раза больше оперативной памяти. Выбираем откуда будем ставить ОСь, т.е. в разделе "Media" выбираем CD (ставим-то с
CD). Далее все просто, система ставиться, а мы пьем кофе (ну или пиво, но не советую =) 

2. Итак, система подгрузилась и показывает кучу каких-то надписей.
Какой кошмар! Вот оно поле "login", набираем "root", если пасс был дан при установке, то набираем его, иначе уже в системе =)
Теперь пишем "pwd" и узнаем где мы. Скорее всего мы в директории
/root, пишем "ls -la" и видим файло с именем .profile и
.cshrc - редактим оные под себя [смотри архив].

Теперь монтируем CD командой "mount /cdrom", выгружаем оттуда порты в директорию /usr/ports/ и сырцы в /usr/src/ и затем "umount
/cdrom". Что-то уже есть. Теперь будем
пересобирать ядро под себя =) 

3. Поскольку система ставиться с учетом развертки на любой платформе, то было включено дофига лишнего.
Будем все делать заново. Сначала правим файл /etc/make.conf там указываем: 

CPUTYPE?=i686 - здесь надо указать тип вашего процессора, т.е. вместо i686 может быть: Для AMD CPUs - athlon-mp athlon-xp athlon-4 athlon-tbird athlon k6-3 k6-2 k6 k5,
для Intel CPUs - p4 p3 p2 i686 i586/mmx i586 i486 i386, для Alpha/AXP - ev67 ev6 pca56 ev56 ev5 ev45 ev4,
для Intel ia64 - itanium 

KERNEL=PERENNA - здесь название вашего ядра. У меня по названию машины, т.е. PERENNA.

Так же, надо раскомментировать строку: COMPAT4X= yes , т.е. удалить стоящий перед ней символ
"#"

и еще в конце файла дописать: CUPS_OVERWRITE_BASE = yes

Итак, сохраняем, закрываем и идем дальше. 

Переходим в /usr/src/sys/ (cd /usr/src/sys/) там видим несколько разделов.
У меня архитектура i386, так что если у вас такая же, то заходим в "i386/conf/" (cd
/i386/conf/), делаем ls и видим несколько фалов.
Там должен быть файл GENERIC - это пример ядра, в данный момент работающего на вашей машине.
Советую не править его, а юзать только как пример. Файл NOTES покажет вам весь список оборудования.
Его тоже юзаем как пример. 

Создаем новый файл, который прописали в make.conf (у меня PERENNA). Заюзаем с консоли "demesg" и видим все, что система у нас нашла. Правим файл нашего ядра
[смотри архив]. 

Итак, вы написали ядро =) Теперь его надо собрать.
Однако надо так же собрать окружение, в котором ядро будет работать. Только ОБЯЗАТЕЛЬНО зайдите в дир /boot и сделайте копию всех фалов в /root/boot/ и, так же, скопируйте файлы из папки /boot/kernel в /boot/kernel.work Это избавит вас от нервотрепки. 

Делаем следующие команды:

1) cd /usr/src/
2) make buildworld 
3) make buildkernel KERNCONF=PERENNA (прим. здесь название вашего ядра)
4) make installkernel KERNCONF=PERENNA (прим. здесь название вашего ядра)
5) reboot 

Затем, если все получилось (что сомнительно =), при загрузке выберите режим Single User или введите boot -s при загрузке из строки. 

Далее делаем:

6) mergemaster -p
7) make installworld
8) mergemaster
9) reboot 

И если все правильно, то у нас новая система. =)
Посмотреть можно командой "uname -a". 

ЕСЛИ что-то было сделано НЕ правильно и у вас проблемы, то всегда можете грузануть работающее ядро. Для этого в командной строке загрузки пишем "boot /boot/kernel.work" 

4. Теперь будем ставить софт. Переходим в /usr/ports/ (cd /usr/ports/). Там большое количество директорий с огромным кол-вом поддиректорий. Заходим в /usr/ports/shell/bash2/ и делаем "make", а затем "make install". После чего у нас появляется более продвинутый шелл - bash (это действительно рулез =).

Теперь делаем "chfn" (вроде так =) и меняем все что нам нужно.
В частности "/bin/sh" на "/usr/local/bin/bash". Делаем "logout" или нажимаем CTRL-D и заходим вновь.
Кстати, пока не забыл, в конфиге юзера есть поле "class"...
Пропишите там "russian" и все будет путем =), тока не
забудьте шрифты с портов поставить 😉 Собсно так можно ставить всю софтину, через порты.
Удобная система, при отсутствии исходного кода для сборки сама достает его из сети. Если же вы достали сырцы руками, то киньте архив в
"/usr/ports/distfiles/".

Думаю, если все было сделано правильно, то система будет работать достаточно устойчиво.
В общем, удачи тебе, BSD-шник!

Check Also

Как подчинить конфиг. Учимся эксплуатировать новую уязвимость в PHP-FPM и Nginx

Недавно мои коллеги обнаружили опасную уязвимость в связке из Nginx и PHP-FPM, которая нер…

Оставить мнение