Конфигурация ядра FreeBSD

Раздел: FreeBSD
Написано: 9.07.2008
Автор: Antonio

Про то что такое ядро и основные сведения можно почитать в Руководстве 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 существует отличный механизм для восстановления после установки несовместимого ядра. Просто выберите ядро, которое хотите загрузить, в загрузчике 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. любые советы, исправления, дополнения приветствуются

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

15 комментариев

Domhantdoto
Авг 3, 2008 11:49

Very nice!!

 
Роттен
Авг 18, 2008 17:28

Класс!!!

 
ёмкости металлические
Сен 2, 2008 13:54

Мне кажется ништяк!

 
arcda
Сен 6, 2008 08:20

Хорошо пишешь аффтар :D

 
Capone
Сен 7, 2008 11:25

хороший рассказ, все разложено по полкам

 
jeny79
Сен 10, 2008 06:42

:))))) хорошо пишешь

 
YaD
Сен 14, 2008 12:46

Супер статья! Подписался на RSS, буду следить =)

 
MeduZZa
Сен 15, 2008 10:06

Очень хороший пост! Спасибо за проделанную работу!

 
Antonio
Сен 16, 2008 10:54

можно написать на
имя автора @ mega-mozg.ru

 
Tym
Окт 16, 2008 14:07

Опция сборки ядра COMPAT_43 признана ненужной и удалена из конфигурации

 
Antonio
Окт 16, 2008 15:49

Tym, спасибо. Сделал поиск действительно так и есть.
Сейчас исправлю в статье.
Я за оригинал использовал свой конфиг с FreeBSD 6.2, поэтому последовал старым рекоммендациям.

 
grang
Фев 18, 2009 14:56

Очень хороший пост! Спасибо за проделанную работу!

 
Диана
Мар 27, 2009 14:54

да все супер, отлично, сп!

 
noob
Мар 31, 2009 11:31

Народ, статья — фигня. Надо читать FreeBSD Hanbook а не всякие ремейки.

 
Antonio
Мар 31, 2009 14:16

noob,
«лучше быть здоровым и богатым, чем больным и бедным» — это однозначно,
никто ж не спорит ;-)

p.s. и желательно читать на языке оригинала

 

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com