Skip to content

Home Тюнинг Linux Компилирование ядра
Компилирование ядра

Ядро — это святая святых Linux. В отличие от Windows, в Linux свободно доступны исходные тексты ядра и мы, модифицируя их, можем оптимизировать ядро под нашу систему.

Роль ядра очень важна. Помимо операций управления всей системой ядро содержит системные вызовы — функции, которые используются Linux-приложениями. Ведь Linux-программы не обращаются непосредственно ни к "железу", ни к файловой системы — любая операция проходит через ядро, что позволяет эффективнее управлять системой.

К тому же ядро играет важную роль в масштабировании всей системы. Предположим, вам нужно получить доступ к какой-нибудь экзотической файловой системе, которую не поддерживает ядро. Если у вас есть модуль ядра, обеспечивающий поддержку этой файловой системы, то вам нужно выполнить команду insmod <имя_модуля> и через мгновенье вы уже можете работать с этой файловой системой. Аналогично включается поддержка различных устройств.

Модульная организация ядра очень эффективна. Модули обеспечивают поддержку устройств, файловых систем и т. д. Представьте себе, какой размер будет у ядра, если в него включить поддержку абсолютно всех устройств? Самое неприятное в этой ситуации то, что тогда в ядре будет масса ненужных функций, которые ваша система ни разу не задействует. И в самом деле, если у вас видеокарта от nVidia, то код, рассчитанный на видеокарты другого производителя, просто не будет задействован. Модули позволяют эффективно управлять ресурсами вашей системы — ведь нужный код загружается лишь в том случае, если это нужно системе.

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

Перекомпилирование ядра — затея довольно редкая. Обычно перекомпилирование нужно для активации какой-нибудь возможности, не включенной в ядро по умолчанию. Это нормально. Ведь разработчики ядра не могут предусмотреть все особенности вашей системы, и с дистрибутивом поставляется ядро, рассчитанное на большинство компьютеров. Вполне возможно, что вы захотите включить ту функцию, которая не нужна тысячам других пользователей Linux.

В компилировании ядра нет ничего страшного. Прежде всего, вам нужно установить исходные тексты ядра Linux. Обычно исходные тексты включаются в состак дистрибутива. Пакет, содержащий исходные тексты ядра, называется kernel-source. Интересно, что в Mandriva 2006 этот пакет нельзя установить через rpmdrake, поэтому для его установки нужно перейти в каталог /media/main дистрибутивного DVD-диска и выполнить команду:

#    rpm -ihv kernel-source-2.6*

Перейдите в каталог /usr/src/linux-2.6.12-12mdk:

#    /usr/src/linux-2.6.12-12mdk

Имя этого каталога у вас может быть несколько другим — оно зависит от версии ядра. После этого введите одну из команд:

# make menuconfig 
# make xconfig
# make gconfig

Первая команда запускает текстовый конфигуратор ядра. Он самый удобный, поэтому я рекомендую всегда им пользоваться, даже если вы работаете в графическом терминале. Для любителей Х-приложений можно попробовать конфигуратор xconfig, а если вы работаете в GNOME, то можно запустить gconfig. Но универсальным вариантом будет как раз menuconfig — этот конфигуратор запустится и в консоли, и в графическом терминале, и в среде GNOME.

Конфигуратор ядра позволяет включать/выключать разные функции ядра, включать/выключать поддержку различных модулей. Если напротив опции стоит звездочка (*), то это означает, что опция включена в состав ядра. Если же напротив опции стоит буква М, то опция включена в состав ядра в виде модуля. То есть код, реализующий опцию, будет сохранен на диске в виде файла. А когда системе понадобится, он будет загружен в оперативную память с жесткого диска.

Какие опции вам включать? В этом помочь ничем не могу. Просто так ядро не перекомпилируют. Если вам понадобилось перекомпилирование ядра, значит, вы и без меня знаете, какую опцию вам нужно включить.

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

#    make bzlilo modules modules_install install

Первый параметр (bzlilo) компилирует само ядро, второй (modules) — модули. Третий параметр устанавливает модули, а четвертый — ядро. При вводе параметров не перепутайте — их нужно указывать именно в такой последовательности.

Теперь откройте файл /etc/lilo.conf (если у вас LILO) и убедитесь, что программа make добавила новый образ для загрузки только что откомпилированного ядра. Если этого не произошло, добавьте следующие строки:

image=/vmlinuz 
# ваша корневая файловая система
root=/dev/hdal
label= new_linux_2.6
read-only

После этого введите команду lilo и перезагрузитесь. При загрузке нужно выбрать новое ядро (метка new_linux_2.6).

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

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top