У
человека мигрировавшего с Windows, может
возникнуть резонный вопрос: А для чего
вообще компилировать ядро? И собственно
говоря не нужно ли оно только лишь для
разработчиков системы? Я постараюсь
дать обоснования тому, что ядро необходимо
уметь компилировать всем кто мало
мальски серьезно подходит к вопросу
администрирования FreeBSD.
Начнем с
того, что FreeBSD (как собственно говоря и
Windows и Linux) ставится на совершенно разные
аппаратные платформы. В числе поддерживаемых
платформ есть и самая популярная x86 и
amd64 и sparc64 и еще многие другие более
экзотические. И само собой каждая из
этих платформ содержит свой список
поддерживаемого оборудования, свои
опции (без которых нормальное
функционирование системы невозможно).
Выбор платформы осуществляет скрипт
установки. Но однако, умолчательная
конфигурация даже одной из таких платформ
- до предела набита опциями, которые
совсем ни к чему на сервере, и даже более
того, напрямую влияют на ее безопасность.
К примеру, умолчательная конфигурация
содержит в себе опцию поддержки ipv6
адресации, а чревато. Подобные адреса
выдается системой автоматически (для
этого используется имеющийся MAC адрес
сетевого адаптера, но не об этом сейчас),
и мало кто вспомнит об этом, когда будет
настраивать брэндмауер (сетевой фильтр).
В результате останется огромная брешь,
которой с легкостью можно воспользоваться
в злонамеренных целях. Не проще ли
удалить соответствующую строку из
конфига и избавить себя от потенциальных
проблем в будущем?
Далее,
большое универсальное ядро - имеет
большие размеры, а следовательно в
пустую будет расходовать большие
ресурсы. С другой стороны в универсальном
ядрышке могут отсутствовать опции,
которые могут вам понадобиться (Например
опции включающие в ядро (и как следствие
увеличивающие быстродействие) пакетный
фильтр pf и различные примочки к нему.
Разработчики предусмотрели возможность
компиляции ядра даже не знающему
глубинных особенностей пользователю.
И я покажу как ими воспользоваться.
Для начала
следует обновить исходные коды и порты.
Следующим этапом, мы подправим
умолчательный конфигурационный файл
так, чтобы не оставить в нем ничего
лишнего, того что нам никогда не
понадобится. Я установил FreeBSD на персоналку
с процессором i5, а для него подойдет
архитектура i386 поэтому идем в
/usr/src/sys/i386/conf и копируем умолчательный
конфиг, для того, чтобы изменения не
коснулись его. Делается это для того,
чтобы не потерять свой конфигурационный
файл после обновления системы (он будет
затерт и перезаписан).
#cp
/usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/ZKERN
(В место
ZKERN — а можно вписать что нибудь эдакое)
далее
редактируем вновь созданный конфиг
#vi
/usr/src/sys/i386/conf/ZKERN
Vi в данном
случае удобен тем, что позволяет двойным
нажатием клавиши d удалять строки с
неиспользуемыми опциями, а это очень
экономит время.
Для начала
удаляем комментарии, если у Вас компьютер
выше Pentium II, удаляем все опции
cpu, кроме
cpu I686_CPU
в графе
ident меняем GENERIC на тот же ZKERN (или что еще
вы там придумали)
ident ZKERN
makeoptions
DEBUG=-g удаляем (мы не кодеры, о
дебагерах знать ничего не знаем)
Далее
следует длинный список всяких опций
удаляем из него поддержку INET6 (ipv6), можно
убрать совместимость со старыми релизами,
я оставляю только седьмую.
Далее
удаляем KDB, KDB_TRACE.
Следом
идут (в терминологии пользователя
Windows) драйвера устройств. Я их не трогаю
вплоть до RAID контролеров, их я не терплю.
Далее оставляем все вплоть до PCIMCI
Устройств, их то же можно удалять. Com
порт можно оставить, параллельные порты
не трогаем, далее идет поддержка сетевых
адаптеров, их не трогаем. Адаптеры на
шине ISA можно удалить, если не планируется
баловаться с Wi-Fi и Wi-MAX, жертвуем и Wireless
NIC-ами. Псевдоустройства не трогаем, bpf
то же. Про USB, USB-3G Модемы решайте сами,
надо оно вам на серваке или нет. USB
Wireless можно убрать, Fireware думаю то же, да
и sound support (поддержка звуковых плат) ни
к чему. С удалениями и покончено, теперь
осталось внедрить в ядро обалденный
пакетный фильтр pf и на этом можно
завершать процесс конфигурирования
ядра. Добавляем в конфиг следующие
строки:
device pf
device pfsync
device pflog
options ALTQ
options
ALTQ_CBQ
options
ALTQ_PRIQ
options
ALTQ_RED
options
ALTQ_RIO
options
ALTQ_HFSC
options
ALTQ_NOPCC
Вот и все,
сохраняемся и выходим из vi
«Esc» :wq
На это
процесс настройки конфигурационного
файла можно считать оконечным, перейдем
непосредственно к компиляции ядра.
#cd /usr/src
#make -j5
buildkernel KERNCONF=ZKERN
На процедуру
компиляции можно смотреть вечно.
После ее
удачного окончания (если на экране не
замелкали error-ы окончание можно считать
удачным). Установим свежескомпилированное
ядро в систему
# make
installkernel KERNCONF=ZKERN
процедура
установки куда более быстротечна, следом
перегружаем систему.
# shutdown -r
now
После
окончания перезагрузки, пред нами
восстанет FreeBSD, с ядром заточенным под
наши нужды.