FreeBSD - пересборка ядра

Опубликовано

Просцесс пересборки ядра заключается в редактировании конфигурационного файла и последующей компиляции ядра с опциями указанными в конфигурационном файле. Для сборки ядра нам понадобятся исходники ядра, если они не установлены то установить их можно двумя способами:

Установка исходников ядра при помощи sysinstal

Входим в систему в качестве root, ставим инсталяционный диск в привод и запускаем sysinstall, в нем выбираем следующие опции: Configure->Distributions->src->sys:

Установка исходников ядра при помощи инсталяционного скрипта

Для установки исходников нам придется смонтировать инсталяционный диск и выполнить скрипт, который установит указанные исходные коды в каталог /usr/src. Логинимся в качестве root, устанавливаем инсталяционный диск в привод и выполняем:

# mount /cdrom
# cd /cdrom/7.2-RELEASE/src
# mkdir /usr/src
# sh install.sh sys

Первой командой монтируем привод в каталог /cdrom, второй командой переходим в каталог /cdrom/7.2-RELEASE/src, третей командой создаем каталог src в каталоге /usr, четвертой командой запускаем на выполнение скрипт с аргументом sys, который поместит в /usr/src каталог sys с исходными кодами. Если инсталяция произойдет успешно то на дисплее появится сообщение:

Extracting sources into /usr/src...
  Extracting source component: sys
Done extracting sources.

Редактирование конфига ядра

После того как исходные тексты ядра находятся в /usr/src/sys можно приступать собственно к процессу пересборки ядра. В качестве цели пересборки изберем возможность включения в ядро опций для отображения консоли в графическом режиме. По умолчанию консоль отображается в текстовом режиме. Для того чтобы создать свой конфиг ядра сделаем следующее:

# cd /usr/src/sys/i386/conf/
# cp GENERIC MYKERN
# ee MYKERN

Первой командой мы переходим в каталог /usr/src/sys/i386/conf/ (обратите внимание на каталог i386, если бы я использовал бы дистрибутив системы другой архитектуры, допустим amd64 то мне бы нужно было бы переходить в соотв. моей архитектуре каталог), затем копируем файл GENERIC в файл с названием MYKERN, после чего редактируем файл MYKERN. Фактически мы скопировали конфиг стандартного ядра в файл MYKERN и исправлять будем его а не GENERIC. Конфиг ядра состоит из строк с заданными параметрами:

Находим в конфиге строки:

cpu             I486_CPU
cpu             I586_CPU
cpu             I686_CPU
ident           GENERIC

 И меняем их следующим образом:

cpu             I686_CPU
ident           MYKERN

Тоесть строки описывающие 486 и 586 типы процессоров удаляем за ненадобностью, а в строку ident вписываем название нашего ядра. Это нужно для того чтобы отличать наше ядро от GENERIC.
Затем следует блок описывающий какие опции и устройства будут включены в ядро. Опции обозначаются как options а устройства как device. Нам потребуется добавить в ядро две опции - VESA и SC_PIXEL_MODE, поместим их в конце первого блока опций:

........................................................
options         STOP_NMI                # Stop CPUS using NMI instead of IPI
options         AUDIT                   # Security event auditing
#options        KDTRACE_HOOKS           # Kernel DTrace hooks
 

После добавления:

........................................................
options         STOP_NMI                # Stop CPUS using NMI instead of IPI
options         AUDIT                   # Security event auditing
#options        KDTRACE_HOOKS           # Kernel DTrace hooks
options         VESA
options         SC_PIXEL_MODE

После чего сохраняем файл и выходим из редактора. Теперь осталось пересобрать ядро и установить его:

# config MYKERN 

На дисплее появится сообщение:

Kernel build directory is ../compile/MYKERN
Don't forget to do ``make cleandepend && make depend'' 

После чего выполняем:

# cd ../compile/MYKERN
# make depend all install clean

Первой командой мы переходим в каталог уровнем выше compile/MYKERN созданный командой configure MYKERN и затем выполняем сборку ядра, после сборки происходит чистка временных файлов оставшихся от сборки ядра. После окончания сборки выполняем перезагрузку системы и смотрим вывод команды uname -a:

# uname -a
FreeBSD TEST.NET 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Mon Aug 31 14:21:54 YEKST 2009     alex@TEST.NET:/usr/src/sys/i386/compile/MYKERN  i386

Фактически это значит что ядро пересобрано. И если выполнить команды vidcontrol -i mode то мы увидим дополнительные VESA режимы, которые ранее были недоступны, до пересборки ядра.

[Наверх страницы]