Перекомпиляция ядра. 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
######################################################################
Ну а дальше просто перезапишем кривое ядро рабочим и бует нам счастье...