Дистрибутивы Linux: Fedora. Компиляция ядра Fedora для загрузки через PXE.

1. Подготовка к компиляции
2. Получение исходников
2.1 Подготовка окружения для сборки пакетов
2.2 Скачивание и установка пакета с исходниками ядра, подготовка к конфигурированию
2.3 Конфигурация ядра
2.4 Собираем!

Подготовка к компиляции

Устанавливаем необходимые пакеты С использованием sudo:

sudo yum install rpmdevtools yum-utils ncurses-devel

С использованием su:

su -c 'yum install rpmdevtools yum-utils ncurses-devel'

Пакет ncurses-devel необходим для работы программы make menuconfig

Получение исходников

Внимание! Собирать пакеты от имени root – плохая идея! Приведенные ниже инструкции выполняются из-под обычного пользователя!

Подготовка окружения для сборки пакетов

rpmdev-setuptree

Данная команда создает директории

${HOME}/rpmbuild/SOURCES

${HOME}/rpmbuild/SPECS

${HOME}/rpmbuild/BUILD

Где ${HOME} – домашняя директория текущего пользователя.

Скачивание и установка пакета с исходниками ядра, подготовка к конфигурированию

Скачиваем пакет:

yumdownloader --source kernel

Вытягиваем и устанавливаем зависимости для его сборки:

su -c 'yum-builddep kernel-.src.rpm'

Распаковываем пакет:

rpm -Uvh kernel-.src.rpm

Распаковываем дерево исходников ядра:

cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec

Конфигурация ядра

cd ~/rpmbuild/BUILD/kernel-2.6./linux-2.6../

Выбираем подходящий под нашу архитектуру файл конфигурации, делаем копию:

cp configs/ .config

Выполняем команду

make oldconfig

Этап конфигурации ядра является обязательным, даже если вы внесли самые малые изменения в исходные коды ядра! В каждый релиз ядра включаются новые опции конфигурациии, если пропустить этап конфигурирования, в дальнейшем могут возникнуть самые разные проблемы. Если вы хотите уменьшить продолжительность этого этапа, вы можете использовать команду “make oldconfig”, которая будет задавать вам только те вопросы, которые вновь появились.Следствие: если вы проводите повторную конфигурацию ядра с целью изменить значения только некоторых опций, нужно просто удалить соответствующие строки из файла .config, оставшегося от прошлой компиляции, и выполнить команду “make oldconfig”. (rus-linux.net/kos.php?name=papers/kernel/krnl-2-6-0-inst.html)

Открываем .config в любимом редакторе и согласно www.digitalpeer.com/id/linuxnfs настраиваем следующие опции:

  • Поддержка NFS (CONFIG_NFS_FS=y).
  • Корневая ФС на NFS (CONFIG_ROOT_NFS=y).
  • Ethernet (10/100/1000Mbit) (CONFIG_NET_ETHERNET=y).
  • Драйверы 8169 и 8139 (базовые ethernet чипы от Realtek)
  • IP: автоконфигурация на уровне ядра (CONFIG_IP_PNP=y)
  • Поддержка BOOTP (CONFIG_IP_PNP_BOOTP=y)
  • Поддержка DHCP (CONFIG_IP_PNP_DHCP=y)
  • Поддержка RARP (обратного ARP) (CONFIG_IP_PNP_RARP=y)
  • Поддержка какой-то еще ерунды :) (CONFIG_DEBUG_LOCKDEP=y)

Если собираем под архитектуру i686, то копируем получившийся конфиг, как рекомендуют в fedoraproject.org/wiki/Docs/CustomKernel.

cp .config ~/rpmbuild/SOURCES/config-`uname -m`

Но в случае Fedora 14 это не сработало, и надо копировать в:

cp .config ~/rpmbuild/SOURCES/config-generic

Собираем!

cd ~/rpmbuild/SPECS

Открываем в любимом редакторе файл kernel.spec, раскомментируем строчку

#% define buildid .local

и изменим .local скажем на .pxe
И финальный аккорд:

rpmbuild -bb --with baseonly --with firmware --without debuginfo --target=`uname -m` kernel.spec

После сборки устанавливаем полученные пакеты:

su -c "rpm -ivh --force $HOME/rpmbuild/RPMS//kernel-..rpm"

Если установка какого-либо ПО самостоятельно Вам не удалась, Вы можете обратиться к специалистам. Работы по администрированию проводятся на следующих условиях.