Что такое ядро? Ядро — это основная часть операционной системы FreeBSD. Оно ответственно за управление памятью, параметры безопасности, работу с сетью, доступ к дискам и многое другое. Официальная документация доступна тут.
Для пересборки ядра необходимы исходники, которые находятся в папке /usr/src/. Если папка пуста, значит исходников у вас нет. Придется либо брать их с установочного диска, либо скачивать (с помощью csup, например). С диска брать проще и быстрее. Опять же, есть два способа - sysinstall или через скрипт установки исходников. Первый метод интуитивно понятный, второй делается следующим образом (установочный диск надо вставить в привод):
# mount /cdrom/
# cd /cdrom/7.2-RELEASE/src/
# ./install.sh all
# cd /usr/src
# umount /cdrom/
Когда все компоненты распакуются, то можно приступать к конфигурированию ядра. Конфиги ядра лежат в папке /usr/src/sys/i386/conf/. Идем туда, копируем файл GENERIC и переименовываем копию в любое имя (я переименовал в vcore, далее буду использовать это имя). Это наше будущее ядро. Открываем его любымым редактором и приступаем к редактированию. Цель статьи не описывать каждый параметр, который уже по сто раз описан другими, а привести пример готового ядра. Вот мой конфиг:
machine i386
cpu I686_CPU
ident vcore
# если в будущем будет использовать PacketFilter (PF), то оставить эти строчки
device pf
device pflog
device pfsync
options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options SCTP # Stream Control Transmission Protocol
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 CD9660 # ISO 9660 Filesystem
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options STACK # stack(9) support
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
options AUDIT # Security event auditing
# моя система на двух ядрах, оставляем
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
device atapicd # ATAPI CDROM 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 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
# Add suspend/resume support for the i8254.
device pmtimer
# Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports
device uart # Generic UART driver
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these 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 pty # Pseudo-ttys (telnet etc)
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
# USB support
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 ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device umass # Disks/Mass storage - Requires scbus and da
device scbus
device da
device ums # Mouse
Теперь, когда с конфигом разобрались, надо бы это ядро собрать:
# cd /usr/src/
# make buildkernel KERNCONF=vcore
# make installkernel KERNCONF=vcore