Существует несколько вариантов ядра для рабочей станции. И вам необходимо выбрать, хотите ли вы установить стандартное ядро, доступное для свободной загрузки, или собрать своё собственное. Также необходимо решить, должен ли запускаться графический режим с progressive bar, которая становится доступной благодаря Linux Progressive Patch (LPP)
Стандартный пакет LTSP содержит в себе 2 ядра, одно из которых уже содержит в себе настроенный LPP.
Оба ядра также уже содержат NFS Swap patch.
Есть несколько вариантов, из которых Вы можете выбирать, при решении, использовать ли 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.
Перед созданием собственного ядра следует получить свежие исходники с сайта 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) |
После распаковки ядра, возможно, Вы захотите установить на него различные патчи. Например, NFS SWAP Patch или Linux Progress 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 |
Linux Progressive Patch позволяет конфигурировать графическую эмблему, показываемую при загрузке. Обычные сообщения загрузки ядра показываются на другом tty экране, а специальные инструкции, добавленные к скриптам загрузки, позволяют строке состояния отображать прогрессию загрузки.
Как и в случае с NFS Swap patch, Вы можете протестировать LPP с помощью следующей команды:
patch -p1 --dry-run <../lpp-2.4.9 |
Если тест пройден успешно, Вы можете установить патч следующей командой:
patch -p1 <../lpp-2.4.9 |
Теперь Вы можете запустить на выбор одну из программ конфигурации ядра. Возможные варианты таковы:
make xconfig
Эта программа запустит графическую версию утилиты конфигурации ядра.
Эта программа запустит curses based версию утилиты конфигурации ядра.
Эта программа запустит простую пошаговую версию утилиты конфигурирования ядра.
Конфигурирование ядра для использования с initrd требует установки следующих опций:
/dev file system support должно быть включено. Эта опция выбирается в секции 'File systems'. НЕ УСТАНАВЛИВАЙТЕ 'Automatically mount at boot'. Монтирование будет выполняться скриптом /linuxrc.
Рабочие станции LTSP требуют, чтобы ядро поддерживало RAM disk. Этот параметр устанавливается в секции 'Block devices'.
Этот параметр также должен быть включен.
Вы должны убедиться, что ядро, созданное вами, может корректно работать с процессором, установленным на рабочей станции. Это делается в секции "Processor type and features' . Также, Вы должны отключить поддержку SMP, если в машине установлен только один процессор.
Рабочая станция будет монтировать свою файловую систему через NFS, поэтому необходима поддержка NFS клиента.
Также Вы можете отключить многие возможности ядра для уменьшения его размера.
Конфигурирование ядра для использования без initrd отличается от конфигурирования ядра с использованием initrd в нескольких пунктах:
Рабочая станция LTSP требует, чтобы ядро поддерживало RAM disk.
Эту опцию необходимо отключить.
Эта опция должна быть включена. Она даст команду ядру для автоматической конфигурации eth0 ethernet интерфейса, основанного на значениях командной строки ядра.
Не обязательно указывать опции DHCP, BOOTP или RARP, потому что Etherboot bootrom уже сделал DHCP или BOOTP запрос, который сделает параметры IP доступными в командной строке ядра. Это позволяет ядру избежать возможных проблем при создании собственного запроса.
Не используя initrd, Вы дожны выбрать правильный драйвер для сетевой карты. Он ДОЛЖЕН статически ссылаться на ядро, потому что ethernet интерфейс необходим до монтирования корневой файловой системы. Это главное отличие работы ядра без initrd от работы с initrd.
Что касается LTSP версии 2.09pre2, необходима поддержка devfs. Это обязательное условие, в не зависимости, используется ли initrd или нет.
Если initrd НЕ используется, файловая система /dev должна быть смонтирована ядром в процессе загрузки. Поэто здесь выберите "Y".
Рабочая станция будет монтировать свою файловую систему через NFS, поэтому необходима поддержка NFS клиента.
Чтобы упростить задачу, в пакет 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.
Для того, чтобы Etherboot смог обработать ядро Linux, оно должно быть соответствующим образом подготовлено. Это называется маркировкой ядра. Этот процесс добавляет к ядру некоторое количество дополнительного кода, который исполняется перед тем, как контроль переходит к ядру. Утилита для маркировки ядра называется 'mknbi- linux'.
Пакет ltsp_initrd_kit включает в себя консольный скрипт с названием buildk, включающий в себя все команды, необходимые для подготовки image ядра к сетевой загрузке.