Конфигурирование, сборка и установка ядра во FreeBSD

Когда то столкнулся с необходимостью сконфигурировать и пересобрать ядро на FreeBSD 7.1. По данной тематике целые книги пишут, но нам надо быстро и коротко по основным пунктам конфигурационного файла GENERIC. Те, кто устанавливал FreeBSD по этой статье, при установке сразу скопировал файлы ядра (см. строки с упоминанием «kernels»), которые нам нужны.
Далее скопируем основной конфигурационный файл GENERIC под новым названием, к примеру, bsdkern01:
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/bsdkern01

Приступим к редактированию bsdkern01.
Напомню, что в этот файл я добавил лишь комментарии на русском языке. То, какие параметры вам нужны, а какие нет, решать вам.

Итак, собственно содержимое:
# GENERIC -- Общий файл конфигурации ядра для FreeBSD/i386
#
# Более подробную информацию об этом файле, пожалуйста, прочитайте
# раздел справочника:
#
# http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/kernelconfig-config.html
#
# справочнике также доступен локально в /usr/share/doc/handbook
# если вы установили документацию, то сможете всегда её видеть
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) для более
# свежей информации
#
# Исчерпывающий перечень вариантов и более подробные разъяснения о
# поддерживаемых устройствах так же присутствуют в ../../conf/NOTES и файлах примечаний.
# Если у вас есть сомнения относительно цели или необходимости параметра, уточните сначала
# в примечаниях.
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.474.2.15.2.1 2008/11/25 02:59:29 kensmith Exp $

# Архитектура машины.
# Узнать архитектуру можно выполнив dmesg | grep CP
# увидим нечто похожее на:
# CPU: Intel Pentium III (717.93-MHz 686-class CPU) ...
# Отсюда видно, что архитектура у нас 686 (у вас может быть другая)
# оставляете вашу строчку, остальные закомментируйте или удалите
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU

# ''Метка'' ядра. Она должна соответствовать названию файла конфигурации ядра.
# Значение, которое вы присвоите параметру ident будет выводиться в процессе загрузки.
ident bsdkern01

# device.hints используются для настройки параметров драйверов
# устройств. Путь по умолчанию, который loader будет проверять
# при загрузке - /boot/device.hints. Используя опцию hints вы можете
# вкомпилировать эти параметры статически в ваше ядро. В этом
# случае не требуется создавать файл device.hints в каталоге /boot.
#hints "GENERIC.hints" # Default places to look for devices.

# Генерация отладочной информации в процессе сборки ядра
makeoptions DEBUG=-g

# Новый, относительно sched_4bsd4, шедулер
options SCHED_ULE

# Эта опция может помочь повысить реактивность системы
# за счет снижения латентности нитей, обрабатывающих прерывания.
options PREEMPTION

# Поддержка сетевых возможностей. Оставьте эту опцию
# включенной, даже если вы не планируете подключаться к сети.
options INET

# Включает поддержку коммуникационных протоколов IPv6.
options INET6

# протокол SCTP является отказоустойчивой альтернативой протокола TCP, UDP,
# используемый для повышения производительности
# SCTP реализован во FreeBSD начиная с 7 версии
options SCTP

# Включает поддержку основной файловой системы.
# Не удаляйте эту опцию, если вы планируете загружаться с жесткого диска.
options FFS

# Технология Soft Updates повышает скорость записи на диски.
options SOFTUPDATES

# ACL включены по умолчанию и не должны выключаться в случае,
# если они ранее использовались на файловой системе, так как это
# удалит списки управления доступом и изменит то, как защищены
# файлы, непредсказуемым образом.
options UFS_ACL

# Параметр повышает скорость дисковых операций на больших каталогах
# в обмен на использование дополнительной памяти.
options UFS_DIRHASH

# журналирование UFS
options UFS_GJOURNAL

# Этот параметр включает поддержку использования дисков
# в памяти для корневой файловой системы.
options MD_ROOT

# Сетевая файловая система. Если вы не планируете монтировать
# разделы с файлового сервера UNIX® через TCP/IP, вы можете
# исключить этот параметр из конфигурационного файла ядра.
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCLIENT

# Файловая система MS-DOS®. Если вы не собираетесь
# монтировать форматированный в DOS раздел жесткого диска
# в момент загрузки, вы можете безопасно закомментировать этот параметр.
options MSDOSFS

# файловая система CD-ROM дисков
options CD9660

# виртуальная файловая система, необходимая для выполнения команд w, top, ps
options PROCFS

# PSEUDOFS требуется для PROCFS
options PSEUDOFS

# Опции для работы с разделами
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization

# Совместимость с BSD 4.3 (Обязательно сохраняем эту опцию в ядре)
options COMPAT_43TTY

# Опция нужна в FreeBSD 5.X для i386™ и Alpha
options COMPAT_FREEBSD4

# Опция нужна в FreeBSD 6.X и выше для поддержки ПО, скомпилированных на FreeBSD 5.X
options COMPAT_FREEBSD5

# Опция нужна в FreeBSD 7.X и выше для поддержки ПО, скомпилированных на FreeBSD 6.X
options COMPAT_FREEBSD6

# Задержка в 5000 ms (5 сек) перед идентификацией SCSI устройств
# Если SCSI устройтсв нет, можно закомментировать опцию
options SCSI_DELAY=5000

# KTRACE - опция необходимая для трассировки процессов, для наблюдения за системными вызовами, операциями ввода-вывода.
# Утилита ktrace схожа с утилитой truss, которая используется для формирования отчётов. ktrace удобен для отладки.
options KTRACE

# Поддержка трассировки стека потока процедур
options STACK

# SYSVSHM опция, необходимейшая для графических интерфейсов, используется для
# повышения работы с графикой, она предоставляет поддержку памяти System V.
options SYSVSHM

# Опция для поддержки сообщений System V.
options SYSVMSG

# Поддержка семафоров System V.
options SYSVSEM

# Опция для использования расширения реального времени.
# Некоторые приложения используют её.
options _KPOSIX_PRIORITY_SCHEDULING

# Опция необходимая для клавиатуры. Опция позволяет создавать файлы устройств в /dev
options KBD_INSTALL_CDEV

# Эта опция отсутствует в FreeBSD 8.0 и выше.
# "Giant -- имя механизма защиты (''спящего'' мьютекса) для крупных
# наборов ресурсов ядра. На нынешний момент Giant представляется
# фактически непригодным для использования в связи с серьезными
# потерями в производительности, и активно заменяется на механизмы,
# защищающие отдельные ресурсы ядра. Параметр ADAPTIVE_GIANT
# включает Giant в число адаптивных мьютексов: в случае, когда
# нить ядра нуждается в Giant, а он уже захвачен нитью,
# выполняющейся на другом процессоре, первая нить будет продолжать
# выполнение и ждать освобождения Giant. В норме нить должна была
# бы уснуть, пока не настанет очередной момент ее выполнения.
# Если вы не уверены, оставьте этот параметр в покое."
# С офф сайта FreeBSD
options ADAPTIVE_GIANT

# Запретить CPUS'у использовать NMI вместо IPI
options STOP_NMI

# Аудит событий безопасности
options AUDIT

# DTrace нужен, если собираетесь выявить проблемные места в работе ядра и
# приложений, запущенных в реальном времени.
# С его помощью можно определить причины повешенной загрузки CPU, утечки памяти.
# DTrace создан компанией Sun Microsystems.
#options KDTRACE_HOOKS # Kernel DTrace hooks

# При использовании многопроцессорных ПК можно использовать
# следующие две опции
options SMP
device apic

# Далее перечислены устройства, которые поддерживаются во FreeBSD
# Если некоторые из нижеперечисленных устройств, отсутствуют у вас,
# строки можно закомментировать или удалить.

# Система контроля тактовой частоты
device cpufreq

# Поддержка шин eisa и pci.
device eisa
device pci

# поддержка дискЕток
device fdc

# IDE устройства
device ata
device atadisk # ATA disk drives
device ataraid # ATA RAID drives
device atapicd # ATAPI CDROM drives
device atapifd # ATAPI floppy drives
device atapist # ATAPI tape drives
options ATA_STATIC_ID # Static device numbering

# SCSI контроллеры
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device hptiop # Highpoint RocketRaid 3xxx series
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters

device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters

device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50

# SCSI периферия
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)

# RAID контроллеры с интерфейсом SCSI
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID

# RAID контроллеры
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID

# atkbdc0 контроллеры и мыши PS/2
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse

device kbdmux # keyboard multiplexer

# драйвер vga видео карт
device vga # VGA video card driver

# поддержка хранителя экрана - screen saver
device splash # Splash screen and screen saver support

# syscons - стандартный драйвер консоли
device sc

# поддержка AGP
device agp # support several AGP chipsets

# Поддержка управления питанием
#device apm
# Add suspend/resume support for the i8254.
device pmtimer

# поддержка PCCARD (PCMCIA)
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) bus

# Поддержка COM портов
device sio # 8250, 16[45]50 based serial ports
device uart # Generic UART driver

# Parallel port
device ppc
device ppbus # Parallel port bus (required)
device lpt # Printer
device plip # TCP/IP over parallel
device ppi # Parallel port interface device
#device vpo # Requires scbus and da

# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to sio, uart and/or ppc drivers):
#device puc

# PCI сетевые карты.
device de # DEC/Intel DC21x4x (``Tulip'')
device em # Intel PRO/1000 Gigabit Ethernet Family
device igb # Intel PRO/1000 PCIE Server Gigabit Family
device ixgb # Intel PRO/10GbE Ethernet Card
device le # AMD Am7900 LANCE and Am79C9xx PCnet
device txp # 3Com 3cR990 (``Typhoon'')
device vx # 3Com 3c590, 3c595 (``Vortex'')

# PCI сетевые карты, которые используют MII, тоесть
# параметр "device miibus" обязателен.
device miibus # MII bus support
device age # Attansic/Atheros L1 Gigabit Ethernet
#device ale # Atheros AR8121/AR8113/AR8114 Ethernet
device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device et # Agere ET1310 10/100/Gigabit Ethernet
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nfe # nVidia nForce MCP on-board Ethernet
device nge # NatSemi DP83820 gigabit Ethernet
#device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire'')
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 ``EPIC'')
device vge # VIA VT612x gigabit Ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA сетевые карты. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' требует 'device miibus' см.выше
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet

# Wireless NIC cards
device wlan # 802.11 support
device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP support
device wlan_amrr # AMRR transmit rate control algorithm
device wlan_scan_ap # 802.11 AP mode scanning
device wlan_scan_sta # 802.11 STA mode scanning
device an # Aironet 4500/4800 802.11 wireless NICs.
device ath # Atheros pci/cardbus NIC's
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate tx rate control for ath
device awi # BayStack 660 and others
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.

# псевдо устройства.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device sl # Kernel SLIP
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

# опция`bpf' включает фильтрацию трафика посредством Berkeley Packet Filter.
# Примечание: 'bpf' необходим для DHCP.
device bpf # Berkeley packet filter

# поддержка USB
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device ural # Ralink Technology RT2500USB wireless NICs
device rum # Ralink Technology RT2501USB wireless NICs
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Serial devices
device ucom # Generic com ttys
device uark # Technologies ARK3116 based serial adapters
device ubsa # Belkin F5U103 and compatible serial adapters
device ubser # BWCT console serial adapters
device uftdi # For FTDI usb serial adapters
device uipaq # Some WinCE based devices
device uplcom # Prolific PL-2303 serial adapters
device uslcom # SI Labs CP2101/CP2102 serial adapters
device uvisor # Visor and Palm devices
device uvscom # USB serial support for DDI pocket's PHS
# USB сетевые карты, требуется miibus см.выше
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB Ethernet

# поддержка FireWire
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
device dcons_crom # Configuration ROM for dcons

После того, как ненужные строки были закомментированы или удалены, собираем и устанавливаем новое ядро:
cd /usr/src
make buildkernel KERNCONF=bsdkern01
make installkernel KERNCONF=bsdkern01

Если всё прошло без ошибок, перезагружаемся:
reboot

и увидим, что новое ядро уже в действии командой в консоли:
uname -a

Так же можно сделать консоль приятнее для глаза и поюзабельнее, добавив в ядро строки:
options SC_PIXEL_MODE
options VESA
options VGA_WIDTH90
options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options SC_KERNEL_CONS_ATTR=(FG_YELLOW|BG_BLACK)

Теперь при загрузке, сообщения ядра будут выводиться жёлтым цветом на чёрном фоне, а обычные сообщения зелёным на чёрном.

Конфигурирование, сборка и установка ядра во FreeBSD: 3 комментария

  1. Уведомление: Разметка больших винчестеров и zfs во FreeBSD | Media UniX

  2. Уведомление: Установка, настройка squid на FreeBSD и анализатора логов-sarg | Media UniX

  3. Уведомление: mpd – vpn сервер на FreeBSD | Media UniX

Добавить комментарий