Глава 7. Ядра.

Существует несколько вариантов ядра для рабочей станции. И вам необходимо выбрать, хотите ли вы установить стандартное ядро, доступное для свободной загрузки, или собрать своё собственное. Также необходимо решить, должен ли запускаться графический режим с progressive bar, которая становится доступной благодаря Linux Progressive Patch (LPP)


7.1 Стандартные ядра LTSP.

Стандартный пакет LTSP содержит в себе 2 ядра, одно из которых уже содержит в себе настроенный LPP.

Оба ядра также уже содержат NFS Swap patch.


7.2. Создание собственного ядра.

Есть несколько вариантов, из которых Вы можете выбирать, при решении, использовать ли standardwhich для ядра.

Есть два способа конфигурирования ядро для LTSP. Заданный по умолчанию метод состоит в том, чтобы использовать ' Initial Ram Disk ', или initrd для краткости. Image initrd - маленькая файловая система, которая добавлена к окончанию ядра. Initrd filesystem image загружен в память, и как только ядро загружено, он смонтирует ramdisk как его корневую файловую систему. Есть пара преимуществ использования image initrd. Сначала, мы можем компилировать сетевые драйверы как модули и загружать нужный модуль в течение загрузки. Это позволяет использовать одно ядро, которое виртуально поддерживает фактически все сетевые карты. Другое преимущество состоит в том, что мы можем выполнять DHCP клиента как "user-land" программу вместо использования пространства ядра. Выполнение клиента как "user-land" обеспечивает лучший контроль над опциями, требуемыми и полученными от сервера. Также, это делает размер ядра немного меньшим. Другой способ конфигурировать ядро - без initrd. Формирование ядра без initrd требует, чтобы определенный сетевой драйвер платы был статически связан с ядром, и это также требует, чтобы IP AUTOCONFIG и " Root filesystem на NFS " были установлены при формировании ядра. Преимущество не использования initrd состоит в том, что ядро является слегка меньшим, и загружается немного быстрее. Как только рабочая станция загружена, нет фактически никакого различия в том, каким способом она функционирует.

В стандартное ядро пакета LTSP включен Initial Ramdisk (initrd), который заботится об обнаружении сетевой платы, и создании user-space запроса DHCP. Главная цель заключалась в том, чтобы сделать размер image как можно меньшим. Так, мы выбрали uClinux libc библиотеку замены, и busybox для утилит утилит, нужных нам при начальной загрузке.

Если Вы хотите формировать ваши собственные ядра, Вы должны загрузить пакет ltsp_initrd_kit. Он содержит иерархию корневой файловой системы и скрипт для создания image.


7.2.1 Получение исходного кода ядра.

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

Загрузите исходный пакет ядра по вашему выбору, и сохраните его в/usr/src каталоге. Ядра расположены в/pub/linux/ kernel каталоге ftp.kernel.org ftp сервер. Вы должны скачать свежее ядро из серии 2.4.x , потому что Вам понадобится поддержка devfs.

Также, если Вы хотите включить поддержку для подкачки по NFS или Linux Progress Patch (LPP), Вы должны получить одинаковые патчи и версии ядра. На момент написания данного документа ядро 2.4.9 является самым новым с поддержкой данных функций.

Для нашего примера, мы будем использовать ядро 2.4.9 . Полный путь - ftp://ftp.kernel.org/pub/linux/kernel/v2.4/li nux-2.4.9.tar.bz2

Распакуйте исходники ядра в каталог/usr/src . Вы должны быть внимательны, потому что, когда Вы распакуете пакет, он окажется в каталоге linux. Вы можете уже иметь каталог, называемый linux с исходными текстами другого ядра, и Вам не захочется удалять старые исходники. Поэтому проверьте существующий каталог linux и если найдёте там старые исходные тексты ядра - переименуйте его во что-нибудь другое ПЕРЕД распаковкой новых исходников.

Исходный пакет, который мы загружали, был сжат bzip2 утилитой сжатия. Мы должны распаковать его прежде, чем мы воспользуемся программой tar. Вы можете использовать следующую команду, чтобы распаковать его:

bunzip2 <linux-2.4.9.tar.bz2 | tar xf - 

Когда распаковка закончится, в директории linux у вас будет находиться полное дерево исходников. На этом этапе я предпочитаю дать этой директории более значащее название:

mv linux linux-2.4.9 

После переименования директории, перейдите в новую директорию:

cd linux-2.4.9 

Я обычно предпочитаю изменить MAKEFILE перед конфигурацией нового ядра. Почти в самом верху файла есть переменная EXTRAVERSION. Я устанавливаю её значение как "ltsp-1", так, чтобы фактический номер версии ядра был '2.4.9-ltsp-1', что позже облегчит возможность идентификации ядра. Когда вы закончите, верхняя часть MAKEFILE должна выглядеть так:

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 9
EXTRAVERSION = -ltsp-1

KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 

7.2.2 Патчи ядра.

После распаковки ядра, возможно, Вы захотите установить на него различные патчи. Например, NFS SWAP Patch или Linux Progress Patch. Данные патчи должны быть установлены ДО конфигурирования ядра.


7.2.2.1 NFS Swap patch.

NFS Swap patch позволит ядру вашей системы использовать файл подкачки, расположенный на сервере NFS. Хотя обычно рекомендуется иметь на рабочей станции достаточно памяти, чтобы не требовалась подкачка, иногда возникают сложности с добавлением памяти, особенно на старых машинах. Поэтому возможность подкачки через NFS способна превратить нерабочую машину во вполне пригодную для наших целей.

Если текущий каталог -/usr/src/linux-2.4.9, и патч находится в/usr/src, Вы можете сделать следующее, чтобы протестировать патч:

patch -p1 --dry-run <../linux-2.4.9-nfs-swap.diff 

Эта команда протестирует патч, чтобы убедиться, что он может быть установлен корректно. Если выполнение этой команды завершено без ошибок, вы можете устанавливать патч без опции --dry-run

patch -p1 <../linux-2.4.9-nfs-swap.diff 

7.2.2.2 Linux Progress Patch (LPP).

Linux Progressive Patch позволяет конфигурировать графическую эмблему, показываемую при загрузке. Обычные сообщения загрузки ядра показываются на другом tty экране, а специальные инструкции, добавленные к скриптам загрузки, позволяют строке состояния отображать прогрессию загрузки.

Как и в случае с NFS Swap patch, Вы можете протестировать LPP с помощью следующей команды:

patch -p1 --dry-run <../lpp-2.4.9 

Если тест пройден успешно, Вы можете установить патч следующей командой:

patch -p1 <../lpp-2.4.9 

7.2.3. Конфигурирование опций ядра.

Теперь Вы можете запустить на выбор одну из программ конфигурации ядра. Возможные варианты таковы:


7.2.3.1. Конфигурация ядра для использования с initrd.

Конфигурирование ядра для использования с initrd требует установки следующих опций:

Также Вы можете отключить многие возможности ядра для уменьшения его размера.


7.2.3.2. Конфигурация ядра для использования без initrd.

Конфигурирование ядра для использования без initrd отличается от конфигурирования ядра с использованием initrd в нескольких пунктах:


7.2.4. Создание ядра.

Чтобы упростить задачу, в пакет ltsp_initrd_kit включена копия файла .config Вы можете скопировать его в директорию /usr/ src/linux-2.4.9.

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

make dep
make clean
make bzImage
make modules
make modules_install 

Возможно их написание в одну строчку, вот так:

make dep && make clean && make bzImage && make modules && make modules_install 

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

После окончания компиляции новое ядро будет находиться в директории /usr/src/linux-2.4.7/arch/i386/boot/ bzImage.


7.2.5. Маркировка ядра для ETHERBOOT.

Для того, чтобы Etherboot смог обработать ядро Linux, оно должно быть соответствующим образом подготовлено. Это называется маркировкой ядра. Этот процесс добавляет к ядру некоторое количество дополнительного кода, который исполняется перед тем, как контроль переходит к ядру. Утилита для маркировки ядра называется 'mknbi- linux'.

Пакет ltsp_initrd_kit включает в себя консольный скрипт с названием buildk, включающий в себя все команды, необходимые для подготовки image ядра к сетевой загрузке.


Вернуться к оглавлению