Пересобираем ядро

Что такое ядро? Ядро — это основная часть операционной системы 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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *