Конфигурация ядра FreeBSD
Про то что такое ядро и основные сведения можно почитать в
Все нижесказанное было сделано на FreeBSD 7.0
1. Так как в новой системе исходные тексты были не установлены, проводим установку, используя CVS.
Создаем скрипт, для более простого вызова обновления в будущем.
cat ../scripts/cvs_upd_src.sh
#!/bin/sh
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET
/usr/local/bin/cvsup -g -L 2 /usr/data/conf/src-supfile
размещаем файл src-supfile в /usr/data/conf/ и редактируем его себя, у меня получилось:
*default host=cvsup5.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_0
*default delete use-rel-suffix
*default compress
#src-all
# These are the individual collections that make up «src-all». If you
# use these, be sure to comment out «src-all» above.
src-base
src-bin
#src-cddl
#src-contrib
#src-etc
#src-games
#src-gnu
#src-include
#src-kerberos5
#src-kerberosIV
#src-lib
#src-libexec
#src-release
#src-rescue
#src-sbin
#src-share
src-sys
#src-tools
#src-usrbin
#src-usrsbin
# These are the individual collections that make up FreeBSD’s crypto
# collection. They are no longer export-restricted and are a part of
# src-all
src-crypto
#src-eBones
#src-secure
src-sys-crypto
Одних src-sys для сборки ядра не хватило, пришлось добавить еще исхоных текстов, сильно не выбирал, добавил что показалось важным на тот момент.
После запуска cvs_upd_src.sh и обновления (загрузки в первый раз) исходных текстов ядра приступаем к созданию файла конфигурации, для этого берем за основу файл GENERIC, называем его SERVERSMP (название любое) и копируем в каталог с другими конфигами, а в каталог /usr/src/sys/i386/conf делаем символическую ссылку. Если мы хотим использовать опции, которые не описаны в файле GENERIC, то создаем коммандой make LINT, файл LINT, который содержит больше опций.
Редактируем файл SERVERSMP , выкинув все лишнее и не забыв оставить нужное.
Так как я конфигурировал ядро на удаленном сервере (очень далеко), то допустить ошибку, которая приведет к невозможности загрузки сервера или невозможности доступа к нему по SSH очень не хотелось. Нужно быть аккуратным!
cat SERVERSMP
cpu I686_CPU
ident SERVERSMP
maxusers 128
options SCHED_4BSD # 4BSD scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
# options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
# Опция сборки ядра COMPAT_43 в FreeBSD 7 признана ненужной и удалена из конфигурации
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
options AUDIT # Security event auditing
# To make an SMP kernel, the next two lines are needed
options SMP # Symmetric MultiProcessor Kernel
device apic # I/O APIC
# CPU frequency control
device cpufreq
# Bus support.
device pci
# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
options ATA_STATIC_ID # Static device numbering
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse
device kbdmux # keyboard multiplexer
device vga # VGA video card driver
device splash # Splash screen and screen saver support
# syscons is the default console driver, resembling an SCO console
device sc
device agp # support several AGP chipsets
# Power management support (see NOTES for more options)
#device apm
# Add suspend/resume support for the i8254.
device pmtimer
# PCI Ethernet NICs.
device miibus # MII bus support
device re # RealTek 8139C+/8169/8169S/8110S
# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device ppp # Kernel PPP
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
device md # Memory «disks»
device gif # IPv6 and IPv4 tunneling
device faith # IPv6-to-IPv4 relaying (translation)
device firmware # firmware assist module
# The `bpf’ device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that ‘bpf’ is required for DHCP.
device bpf # Berkeley packet filter
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
После того как файл конфигурации ядра будет подготовлен (если делаете удаленно), не забудьте оставить описание сетевой карты!), выполняем команды:
config SERVERSMP
cd ../compile/SERVERSMP
make cleandepend && make depend
make
make install
make clean
(или можно одной командой make install clean)
Новое ядро будет создано и скопировано в каталог /boot/kernel как /boot/kernel/kernel, а старое ядро будет перемещено в /boot/kernel.old/kernel.
reboot
Если загрузка прошла успешно, то можно наслаждаться новым ядром и продолжать настройку системы дальше.
Если сервер не загрузился, то прийдется идти к его клавиатуре или если это невозможно, то подключаться по KVM-IP или простить кого-то на «той стороне».
Если Ядро не загружается: (взято отсюда
Если ваше новое ядро не загружается или ему не удаётся обнаружить ваши устройства — не паникуйте! К счастью, в FreeBSD существует отличный механизм для восстановления после установки несовместимого ядра. Просто выберите ядро, которое хотите загрузить, в загрузчике FreeBSD. Доступ к нему вы можете получить, когда система находится в стартовом меню. Выберите шестой пункт (»Escape to a loader prompt»), введите команду unload kernel и наберите boot /boot/kernel.old/kernel, или используйте любое другое ядро, которое загрузится без проблем. Во время переконфигурирования ядра всегда полезно оставлять копию ядра, о котором известно, что оно рабочее.После загрузки с рабочим ядром вы можете проверить ваш файл конфигурации и попробовать собрать ядро опять. Очень полезным в данном случае окажется файл /var/log/messages, в котором, среди других записей, имеются сообщения ядра от каждой успешной загрузки. Также, команда dmesg(8) выведет сообщения ядра от текущей загрузки.
Замечание: Если у вас возникли проблемы со сборкой ядра, убедитесь, что вы сохранили ядро GENERIC или другое рабочее ядро под другим именем, чтобы оно не было удалено при следующей сборке. Вы не можете использовать kernel.old, потому что при установке нового ядра kernel.old перезаписывается последним установленным ядром, которое может оказаться нерабочим. Также, как можно скорее переместите рабочее ядро в /boot/kernel, так как некоторые команды, такие как ps(1) будут работать некорректно. Для этого просто переместите каталог, содержащий работоспособное ядро:
# mv /boot/kernel /boot/kernel.bad
# mv /boot/kernel.good /boot/kernel
P.S. любые советы, исправления, дополнения приветствуются
Very nice!!
Класс!!!
Мне кажется ништяк!
Хорошо пишешь аффтар
хороший рассказ, все разложено по полкам
:))))) хорошо пишешь
Супер статья! Подписался на RSS, буду следить
Очень хороший пост! Спасибо за проделанную работу!
можно написать на
имя автора @ mega-mozg.ru
Опция сборки ядра COMPAT_43 признана ненужной и удалена из конфигурации
Tym, спасибо. Сделал поиск действительно так и есть.
Сейчас исправлю в статье.
Я за оригинал использовал свой конфиг с FreeBSD 6.2, поэтому последовал старым рекоммендациям.
Очень хороший пост! Спасибо за проделанную работу!
да все супер, отлично, сп!
Народ, статья — фигня. Надо читать FreeBSD Hanbook а не всякие ремейки.
noob,
«лучше быть здоровым и богатым, чем больным и бедным» — это однозначно,
никто ж не спорит
p.s. и желательно читать на языке оригинала