Проект переехал на новый домен!  [[ перейти ]]

Перекомпиляция ядра. FreeBSD 6.2
Это очень важный и ответственный момент!

############################################################
# !Сначало сделаем копию ядра на случай неудачи и если что #
# пойдёт не так то восстанавливать можно будет с него!     #
# sh# cp -r /boot/kernel /boot/kernel.100 		   #
############################################################

Идём в каталог:
sh# cd /usr/src/sys/i386/conf/
Если нет таких каталогов, то их можно через sysinstall установить src/sys
Находясь в кталоге просмотрим что мы имеем:
sh# ls -1
.cvsignore
DEFAULTS
GENERIC
GENERIC.hints
Makefile
NOTES
PAE
SMP
TEST
XBOX

Описание того что можно добавить в ядро находится в файлах:
sh# cat /usr/src/sys/i386/conf/NOTES | less   
sh# cat /usr/src/sys/conf/NOTES | less

Или если нам не нужно описание то можно получить просто опции для ядра:
sh# cd /usr/src/sys/i386/conf/
sh# make LINT
sh# cat LINT | less

Далее создадим копию стандартного ядра GENERIC и сделаем из него своё.
sh# cp GENERIC NEWKERN

Вот он этот огромный и ужасный файл, который мы будем править, или будем 
комментировать то что нам совершенно не нужно или отсутсвует в систме:
sh# ee NEWKERN
######################################################################################
# Всё что обозначается знаком #!> - это я добавил из файлов NOTES

machine		i386			# Архитектура машины
#cpu		I486_CPU		# Тип процессора 
#cpu		I586_CPU		# Тип процессора 
cpu		I686_CPU		# Тип процессора 

# Если не уверены какой у вас то тип можно дать комманду:
# sh# cat /var/run/dmesg.boot | grep CPU:
# CPU: Intel(R) Celeron(R) CPU 2.00GHz (2040.35-MHz 686-class CPU)

ident		NEWKERN			# Идентификатор или метка ядра

maxusers	0			#!> Максимум пользователей, 0 - автовыбор

# Можно вкампилить все параметры в ядро или же пускай грузятся через /boot/loader.conf
#hints		"GENERIC.hints"		# Файл с настройками параметров драйверов

#makeoptions	DEBUG=-g		# debug режим. Убрав его размер ядра уменьшится 
					# раза в 3! Впринципе этот режим нам не нужен.

options 	SCHED_4BSD		# Планировщик
options 	PREEMPTION		# Для повышений реактивности системы
options 	INET			# Поддержка сети IPv4
#options 	INET6			# Протокол IPv6 нам не нужен
options 	FFS			# Файловая система FreeBSD
options 	SOFTUPDATES		# Soft Updates повышает скорость записи на диски
#options 	UFS_ACL			# Поддержку списков управления доступом (ACL)
options 	UFS_DIRHASH		# Повышает скорость дисковых операций c большими каталогами
options 	MD_ROOT			# Файловая система памяти

#Сетевая файловая система, позволяет монтировать разделы с файлового сервера UNIX через TCP/IP
#options 	NFSCLIENT		# Клиент
#options 	NFSSERVER		# Сервер
#options 	NFS_ROOT		# Файловая система

options 	MSDOSFS			# Файловая система MSDOS
options 	CD9660			# Файловая система ISO 9660 для компакт-дисков
options 	PROCFS			# Файловая система процессов монтируемая в /proc
options 	PSEUDOFS		# Нужна для которые используют PROCFS (см.выше)
#options 	GEOM_GPT		# Наличие большого количества разделов на одном диске
options 	COMPAT_43		# Совместимость с BSD 4.3
options 	COMPAT_FREEBSD4		# Совместимость с FreeBSD4
options 	COMPAT_FREEBSD5		# Совместимость с FreeBSD5
#options 	SCSI_DELAY=5000		# Задержка в млс. перед подключением SCSI
#options 	KTRACE			# Трассировка процессов для отладки

options 	SYSVSHM			# Поддержка разделяемой памяти System V (для Xorg)
options 	SYSVMSG			# Поддержка сообщений System V
options 	SYSVSEM			# Поддержка семафоров System V (sh# ipsc -s)

options 	_KPOSIX_PRIORITY_SCHEDULING # Расширения реального времени (для StarOffice)
options 	KBD_INSTALL_CDEV	# Для клавиатуры. Он добавляет CDEV в /dev.
options 	ADAPTIVE_GIANT		# Механизм защиты для крупных наборов ресурсов ядра

options         IPFIREWALL              #!> Ядро фаирвола
options         IPFIREWALL_VERBOSE      #!> Логи о пакетах

options         IPFIREWALL_VERBOSE_LIMIT=100    #!> Ограничение лога

options         IPFIREWALL_FORWARD      #!> Включаем поддержку перенаправления

options         IPDIVERT                #!> Поддержка NAT
options         DUMMYNET                #!> Поддержка DUMMYNET (ограничения пропускной способности)

options         TCP_DROP_SYNFIN		#!> Резать пакеты с флагами SYN и FIN
# Только нужно ещё в сделать это: sh# echo 'tcp_drop_synfin="YES"' >> /etc/rc.conf

options		VESA			#!> Драйвер
options		SC_PIXEL_MODE		#!> Пиксельный формат
options		VGA_WIDTH90		#!> Дополнительные текстовые режимы

#Устройство apic разрешает использование набора I/O APIC для распределения прерываний. 
#Оно может быть использовано как с однопроцессорными, так и с многопроцессорными ядрами 
#(для последних наличие apic является обязательным). 
device		apic			# I/O APIC

# Поддержка шин.
#device		eisa			# Вроде была на 486 компах. У меня нету )))
device		pci			# Поддержка шины PCI
device		isa			#!> Поддержка шины ISA (и на новых матерях встречаются)

# Контроллер флоппи-диска
#device		fdc			# У мину нету его

# ATA and ATAPI (IDE - контроллеры)
device		ata		# Драйвер
device		atadisk		# Диски
#device		ataraid		# RAID массивы
device		atapicd		# CDROM'ы
#device		atapifd		# Флопари
#device		atapist		# Стримеры
#options 	ATA_STATIC_ID	# Статическая нумерация устройств ATA

#Контроллеры SCSI. (У меня нету 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		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 шина (для umass оставим)
#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)

////////////////////////////////////////////////////////////////////////////////////////
#Замечание из Handbook'a:
#USB umass(4) драйвер (и некоторые другие драйверы) используют подсистему SCSI, 
#хотя и не являются настоящими SCSI устройствами. Следовательно, вам необходимо 
#сохранить поддержку SCSI, если какой-либо из этих драйверов включен в конфигурацию ядра
#Как я понимаю флэшки все хотят подключать, да?
////////////////////////////////////////////////////////////////////////////////////////

#Поддерживаемые 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		rr232x		# Highpoint RocketRAID 232x
#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

#Контроллер клавиатуры с драйвером клавиатуры и мыши PS/2
device		atkbdc		# Контроллер клавы
device		atkbd		# Драйвер клавы
device		psm		# PS/2 мышь

#device		kbdmux		# Поддержка мультиплексора клавиатур

device		vga		# Драйвер видео карты

#device		splash		# Заставка при загрузке и для Хранителей экрана.

# sc - это драйвер консоли по умолчанию, который имитирует консоль SCO
device		sc

#VT220-совместимый драйвер консоли
#device		vt		# Драйвер
#options 	XSERVER		# Поддержка Xorg
#options 	FAT_CURSOR	# Запуск без курсора

#device		agp		# Поддержка AGP шины. У мину опять нету её.

device          npx		#!> Драйвер для матем.сопроцессора

#Поддержка Advanced Power Management(улучшенное управление питанием)
device		apm		# (Засыпание например можно реализовать)

#Устройство таймера для управления энергопотреблением, APM и ACPI.
device		pmtimer

#Поддержка PCMCIA (у нас не laptop(не ноутбук =)))
#device		cbb
#device		pccard		# PC Card (16-bit) шина
#device		cardbus		# CardBus (32-bit) шина

#Из HandBook'a:
#Четыре последовательных порта, которые известны как COM порты в мире MS-DOS/Windows
#Замечание: Если у вас есть внутренний модем на COM4 и последовательный порт COM2, 
#вам понадобится поменять IRQ модема на 2 (по непонятным техническим причинам IRQ2 = IRQ9) 
#для того, чтобы получить к нему доступ из FreeBSD. Если у вас есть многопортовая карта с 
#последовательными портами, ознакомьтесь с sio(4) чтобы узнать корректные значения для 
#добавления в /boot/device.hints. Некоторые видеокарты (в частности те, что используют чипы S3) 
#используют адреса ввода/вывода в форме 0x*2e8 и, так как многие дешевые последовательные карты 
#не полностью раскодируют шестнадцатибитное пространство адресов ввода/вывода, они конфликтуют 
#с этими картами, в итоге COM4 оказывается практически недоступным.
#Каждый последовательный порт требует уникального IRQ (кроме тех случаев, когда вы используете 
#мультипортовую карту, которая поддерживает совместное использование прерываний), 
#поэтому значения IRQ по умолчанию для COM3 и COM4 не могут быть использованы.
#(COM) порты
device		sio

#Parallel port
#---
#device		ppc		# Интерфейс параллельного порта на шине ISA
#device		ppbus		# Поддержка шины параллельного порта
#device		lpt		# Поддержка принтеров на параллельном порту
#---
#device		plip		# Драйвер TCP/IP через параллельный порт
#device		ppi		# Поддержка ввода/вывода общего назначения(IEEE1284 ввода/вывода)
#device		vpo		# Драйвер привода Iomega Zip. Требует наличия scbus и da

#device		puc		# PCI 'Universal' Communications driver

#Драйвера сетевых карт PCI.(убираем то чего у нас нет)
#device		de		# DEC/Intel DC21x4x (``Tulip'')
#device		em		# Intel PRO/1000 adapter Gigabit Ethernet Card
#device		ixgb		# Intel PRO/10GbE Ethernet Card
#device		txp		# 3Com 3cR990 (``Typhoon'')
#device		vx		# 3Com 3c590, 3c595 (``Vortex'')

#Поддержка шины MII требуется для некоторых совместимых PCI 10/100 Ethernet карт
device		miibus		# Поддержка шины MII 
#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		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
#device		lge		# Level 1 LXT1001 gigabit 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 'lnc')
#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
#device		cs		# Crystal Semiconductor CS89x0 NIC
# 'устройство ed' требует 'устройство 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		lnc		# NE2100, NE32-VL Lance Ethernet cards
#device		sn		# SMC's 9000 series of Ethernet chips
#device		xe		# Xircom pccard Ethernet

#Поддержка различных беспроводных карт
#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		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		# наш localhost, lo0
device		random		# Генератор случайных чисел для криптографической защиты
device		ether		# Поддержка стандартного протокола Ethernet
#device		sl		# SLIP! Был практически вытеснен PPP
device		ppp		# Поддержка PPP в ядре для соединений dial-up
device		tun		# Используется пользовательским программным обеспечением PPP
device		pty		# Псевдо-терминал (telnet, rlogin)
device		md		# Псевдо-устройства дисков в памяти
#device		gif		# Поддержка туннелирования IPv6 и IPv4
#device		faith		# Устройство перенаправляет пакеты даемону трансляции IPv4/IPv6

#Устройсто bpf the Berkeley Packet Filter.
device		bpf		# DHCP и для tcpdump

#USB
device		uhci		# UHCI USB Host Controller driver 1.1
device		ohci		# OHCI USB Host Controller driver 1.0
device		ehci		# UHCI USB Host Controller driver 2.0
device		usb		# USB шина (требуется)
#device		udbp		# USB Double Bulk Pipe devices
device		ugen		# USB generic device support
device		uhid		# Human Interface Device
#device		ukbd		# Клавиатуры
#device		ulpt		# Принтеры
device		umass		# Disks/Mass storage - нужна scbus и da
device		ums		# Mouse
#device		ural		# Ralink Technology RT2500USB беспроводная карта
#device		urio		# Diamond Rio 500 MP3 плеер
#device		uscanner	# Сканеры

#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 (Требует scbus и da)
#device		fwe		# Сеть через FireWire (не стнадарт!)
######################################################################################


А теперь уберём всё лишнее и 
посмотрим на наше ядро в чистовике:
###########################################
machine		i386			
cpu		I686_CPU		
ident		NEWKERN			
maxusers	0			
options 	SCHED_4BSD		
options 	PREEMPTION		
options 	INET			
options 	FFS			
options 	SOFTUPDATES		
options 	UFS_DIRHASH		
options 	MD_ROOT			
options 	MSDOSFS			
options 	CD9660			
options 	PROCFS			
options 	PSEUDOFS		
options 	COMPAT_43		
options 	COMPAT_FREEBSD4		
options 	COMPAT_FREEBSD5		
options 	SYSVSHM			
options 	SYSVMSG			
options 	SYSVSEM			
options 	_KPOSIX_PRIORITY_SCHEDULING
options 	KBD_INSTALL_CDEV	
options 	ADAPTIVE_GIANT		
options         IPFIREWALL              
options         IPFIREWALL_VERBOSE      
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_FORWARD      
options         IPDIVERT                
options         DUMMYNET                
options         TCP_DROP_SYNFIN		
options		VESA			
options		SC_PIXEL_MODE		
options		VGA_WIDTH90		
device		apic			
device		pci		
device		isa			
device		ata		
device		atadisk		
device		atapicd		
device		scbus		
device		da		
device		atkbdc		
device		atkbd		
device		psm		
device		vga		
device		sc
device          npx		
device		apm		
device		pmtimer
device		sio
device		miibus		
device		fxp		
device		nve		
device		rl		
device		xl		
device		loop		
device		random		
device		ether		
device		ppp		
device		tun		
device		pty		
device		md		
device		bpf		
device		uhci		
device		ohci		
device		ehci		
device		usb		
device		ugen		
device		uhid		
device		umass		
device		ums		
###########################################

#Для поддержки многопроцессорности нужна строка options SMP.
#Для поддержки оперативы до 64Gb нужна строка option PAE.

После редактирования убедимся что мы находимся там где нужно:
sh# cd /usr/src/sys/i386/conf/
sh# config NEWKERN

У нас создастся папка с исходниками. Будем собирать:
sh# cd ../compile/NEWKERN
Удалить связи и собрать по-новому:
sh# make cleandepend && make depend
sh# make
Если всё прошло нормально, тогда пишем:
sh# make install && reboot

Если же что-то не так идём править наше ядро.

Можно иначе собрать ядро:
sh# cd /usr/src
sh# make buildkernel KERNCONF=NEWKERN
sh# make installkernel KERNCONF=NEWKERN
sh# reboot

Новое ядро будет скопировано в каталог /boot/kernel как /boot/kernel/kernel, 
а старое ядро будет перемещено в /boot/kernel.old/kernel. 
Теперь перезагрузите систему.


######################################################################
Если что-то пошло не так, то наши действия: Нам нужно выгрузить старое 
ядро и загрузить наше прежнее. На экране загрузчика:

////////////////////////////////////////////////////////////////////
Hit [Enter] to boot immediately, or any other kay for command prompt.
Booting [kernel] in 8 seconds...

Type '?' for a list of commands, 'help' for more detailed help.
ok _
////////////////////////////////////////////////////////////////////

Выгружаем старое ядро
ok unload kernel

И тут наш спасательный круг который мы пригатовили в начале!!!
ok boot /boot/kernel.100/kernel

######################################################################

Ну а дальше просто перезапишем кривое ядро рабочим и бует нам счастье...