Сборка и компилирование ядра Linux

Сборка и компилирования ядра Linux.

1.

Приобретение исходников ядра:

Исходники нужной версии ядра можно найти найти на

ftp://ftp.kernel.org

. Для того что бы найти ядро нужной нам версии перейдем в каталог /pub/linux/.

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

где X.X версия ядра. Если каталог предварительно существует то нужно его удалить.

2.

Подготовка:

После того как успешно завершен этап приобретения исходников, нужно подготовить дерево каталогов для файлов ядра.

Если linux-2.X.X.tar.gz:

Если linux-2.X.X.tar.bz2:

При выполнении этих команд содержимое файлов развернется в наш каталог. После этого выполните команду cd, для перехода в каталог linux.

Для начала компиляции нового ядра нужно команду:

Теперь можно перейти к конфигурированию ядра для своих потребностей.

3.Настройка ядра

На данном этапе нам нужно выбрать опции ядра которые будут использоваться.

Для настройки ядра необходимо выполнить команду make config, которая запускает скрипт настройки, пытающийся в режиме диалога с пользователем настроить конфигурацию будущего ядра. Те, кто работает в системе X Window, могут использовать make xconfig, если у вас установлен интерпретатор Tk. В текстовой консоли можно использовать make menuconfig, обеспечивающий текстовый интерфейс конфигуратора.

При ответах на вопросы, задаваемых конфигуратором ядра, обычно используют `y' (да) или `n' (нет). Драйвера устройств могут также иметь опцию `m'. Это означает ``module (модуль)'', предполагая, что система будет компилировать этот драйвер, но не вставит его прямо в ядро, а сделает загружаемым модулем. Загружаемый модель - это часть кода ядра, которая не включена прямо в ядро. Такие модули компилируются отдельно и затем могут быть вставлены в запущенное ядро практически в любое время.

Основные параметры настройки ядра:

Эмуляция математических функций ядром:

Если в Вашем компьютере отсутствует математический сопроцессор (например, у Вас 386 или 486SX), то на этот вопрос необходимо ответить `y'. Если же у Вас есть математический сопроцессор, то он будет использоваться по умолчанию, то есть независимо от ответа эмуляция будет проигнорирована. Единственное следствие использования эмуляции в том, что размер ядра и использование памяти будут больше.

Эмуляция существенно отражается на производительности графики в X Window.

Поддержка обычных дисков (типа MFM/RLL) и дисков/cdrom IDE:

Наличие этой опции означает, что ядро будет поддерживать стандартные жесткие диски для PC, которые устанавливаются в большинстве компьютеров.

Соответствующий драйвер не включает поддержку SCSI дисков; для этого существует отдельная опция настройки.

Затем необходимо выбрать тип драйвера: ``old disk-only'' (поддержка только старых дисков типа MFM/RLL) и ``new IDE'' (новых дисков типа IDE).

Основное отличие в том, что драйвер старых дисков поддерживает только два диска на одном интерфейсе, а драйвер новых - поддерживает вторичный (secondary) интерфейс и накопители IDE/ATAPI cdrom. Новый драйвер на 4k больше старого, и он может существенно улучшить производительность вашего диска, особенно если у вас новое оборудование (типа EIDE).

Поддержка сети:

Вы должны ответить `y', если ваша машина подключена к локальной сети, или если вы хотите использовать пакеты SLIP, PPP, term и т.п. для доступа к сети internet по dialup. Кроме того, многие пакеты (например, оконная система X Window) требуют наличия поддержки сети, поэтому даже если вы не подключены ни к какой сети, вы должны ответить `y'. Далее будет задан вопрос о включении поддержки TCP/IP; отвечайте `y',если вы абсолютно уверены в своем выборе.

Ограничить память размером до 16MB:

Существуют контролеры DMA, работающие с ошибками на машинах с процессором 386. Проблема состоит в ошибках адресации ОЗУ больше 16 Мб; вы можете ответить `y', если у вас именно такой контроллер. System V IPC Данная опция включает в ядро средства IPC (Interprocess Communication). Эти средства предоставляют механизм, позволяющий процессу общаться с другими процессами, так что здесь рекомендуется ответить `y'. Тип процессора (386, 486, Pentium, PPro...) Эта опция позволяет внести некоторую оптимизацию ядра для выбранного типа процессора; ядра работают быстрее, но ядро может быть несколько больше. Современные ядра обязательно требуют определения типа процессора, для которого вы компилируете ядро. Ядро для Intel386 будет работать на всех машинах.

Поддержка SCSI:

Если у вас есть устройства с интерфейсом SCSI, ответьте `y'. Конфигуратор потребует дополнительную информацию о поддержке CD-ROM, дисков, а также о типе Вашего адаптера SCSI.

Поддержка сетевых адаптеров:

Если у вас есть сетевая карта, или вы хотите использовать SLIP, PPP, или адаптер параллельного порта для подключения к Internet, ответьте `y'.

Скрипт настройки запросит у вас тип карты и перечень протоколов, которые вам необходимы.

Файловые системы:

Конфигуратор спросит у вас, поддержку каких файловых систем вы хотите иметь в своей системе. Поддержка файловой системы позволит

Вам монтировать разделы диска с разными файловыми системами в единое дерево/ Поддерживаются следующие основные типы файловых систем:

Современные дистрибутивы не создают файловые системы типа minix, поэтому она не часто встречается, но ее полезно включить. Дело в том, что некоторые программы с ``дисками для восстановления (rescue disk)'' могут использовать ее, поскольку файловая система minix хорошо подходит для использования на гибких дисках.

Это первая версия расширенной файловой системы для Linux, которая сейчас уже не является широко используемой. Скорее всего она вам не понадобится.

Second extended и Third extended

Эти файловые системы широко используются в новых дистрибутивах. У вас скорее всего они есть и вам нужно ответить `y'.

Была достаточно широко распространена ранее, но сейчас практически не используется.

Если вы хотите использовать разделы вашего жесткого диска с MS-DOS, или монтировать гибкие диски, отформатированные под MS-DOS, то ответьте `y'.

Эта файловая система расширяет возможности файловой системы MS-DOS обычными Unix-подобными возможностями, такими как длинные имена.

Это интерфейс в виде файловой системы к ядру и процессам. Много программ, выдающих список процессов (таких как `ps') используют эту систему. Некоторые командные процессоры (в частности rc) используют /proc/self/fd (известный как /dev/fd в других системах) для ввода/вывода. Вы должны ответить `y' на этот вопрос;

много важных утилит для Linux зависят от этого выбора.

Если ваша машина работает в локальной сети и вы хотите использовать файловые системы, находящиеся на других машинах с помощью средств NFS, то ответьте `y'.

Эта файловая система создается на большинстве CD-ROM. Если у вас есть привод CD-ROM и вы хотите использовать его в Linux, то ответьте `y'.

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

Символьные устройства:

В этом разделе вы выбираете драйвера для вашего принтера (параллельного принтера), мыши (многие ноутбуки используют протокол мыши PS/2 для своих встроенных трекболов),

некоторых накопителей на магнитной ленте и других ``символьных'' устройств. Ответьте `y', в тех позициях, где это необходимо.

Звуковые карты:

Если у вас установлена звуковая карта, то ответьте `y', и далее другая программа настройки будет задавать вам вопросы о вашей звуковой карте (ее тип, параметры настройки и т. д.).

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

4.Очистка и создание зависимостей

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

и

Выполните `make dep'. Это действие обеспечит проверку того, что все зависимости для ядра, такие как файлы заголовков (header files) соответствующие всем выбранным драйверам,

находятся на месте. Эта процедура завершается достаточно быстро. После ее окончания Вы можете выполнить `make clean'. Эта процедура удаляет все объектные файлы и некоторые другие вещи, оставшиеся от предыдущей компиляции ядра. Не забывайте выполнить этот шаг до начала перекомпиляции ядра.

5. Этап компиляции:

После выполнения dep и clean, вы можете выполнять `make zImage' или `make zdisk' (эта часть процесса занимает длительное время). make bzImage скомпилирует ядро и оставит в директории arch/i386/boot файл, названный `bzImage'. Это новое сжатое ядро. make zdisk делает тоже самое, но помещает новый файл zImage на гибкий диск, который вы должны вставить в устройство ``A:''. `zdisk' является довольно удобной опцией

для тестирования новых ядер; если новое ядро не загружается (или просто работает неправильно), то просто вытащите дискету из дисковода и загрузитесь со старым ядром. Это может пригодиться и в том случае, если вы случайно удалили ядро.

Все ядра обычно являются сжатыми, поэтому они имеют букву `z' в начале имени. Сжатое ядро автоматически разжимается при выполнении.

6.Перемещение ядра:

После завершения процесса сборки тебе необходимо инсталлировать как ядро, так и его map-файл в каталог, где они будут постоянно находиться (/boot). Скопируйте файл System.map в каталог /boot, добавив номер версии ядра в конец строки:

Затем точно так-же скопируйте и само ядро:

BashВыделить код

| | |
| --- | --- |
| 1 | cp /arch/i386/boot/bzImage /boot/bzImage-2.X.X |

Когда ядро и map-файл будут на своем новом месте жительства тебе останется только настроить загрузчик.

7.Обновление конфигурации загрузчика:

Если в качестве загрузчика системы был выбран GRUB, вы должны изменить файл /boot/grub/menu.lst:

Конфиг старого ядра:

Добавить такую же секцию, но с новым ядром:

где X.X версия нового ядра.

Вот в принципе и все. Теперь можно перезагружать машину и загружать Linux уже с новым ядром.

p.s. Все выше описанное происходило в Debian Lenny