16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

Linux. Компиляция и настройка ядра

05.05.2004

Владимир Царьков

Данная статья содержит описание действий, необходимых для успешной настройки и компиляции ядра системы Linux. Все рассматриваемые далее операции проводились под Red Hat 9.0, версия ядра 2.4.20-8, загрузчик LILO. Впрочем, рекомендации будут вполне корректны для всех Linux-систем.

Как всегда, в начале несколько соглашений:

1. Все действия проводятся с правами root.

2. Знак "%" не является частью ниже представленных команд, а лишь указывает на начало строки с командой.

Итак, представим себе, что вы захотели смонтировать NTFS-раздел, но система почему-то отказывается это делать, говоря: "fs type ntfs not supported by kernel" (рис. 1).

О, ужас! Ведь именно в этом разделе хранятся важные документы, а получить к ним доступ можно только из-под Linux, по причине того, что Windows "умерла", как всегда, в самый неподходящий момент.

Что делать? Наверное, переставить Windows. Но форматировать NTFS-раздел нельзя из-за того, что он один и именно на нем хранятся так нужные нам документы. Можно взять дискетку и попробовать с помощью специальных утилит проникнуть в раздел средствами DOS. Но нужные файлы слишком велики и не помещаются на дискету.

Страшно? Можно рвать на себе волосы, а можно, перекомпилировав ядро Linux-системы, с легкостью достать нужные документы и потом спокойно переставить Windows, отформатировав локальный диск. Итак, нам надо перекомпилировать ядро, включив поддержку файловой системы NTFS. Потом прописать в терминале:

% mount -t ntfs /dev/hda10 /mnt/hard

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

Не бойтесь, если у вас не получится настроить все как надо с первого раза, и компиляция завершится ошибкой. Вы не убьете систему, вам просто надо будет повторить все шаги заново и исправить допущенные ошибки.

Оболочка X-Windows наиболее всего подойдет для выполнения нашей задачи, потому как наглядность и удобство в процессе обучения превыше всего.

1. Для начала запускаем терминал и переходим в папку, в которой лежит стандартное ядро системы:

% cd /usr/src/linux-version

где version - это версия вашего стандартного ядра.

2. Стартуем программу конфигурации ядра:

% make xconfig

Перед нами появится что-то, похожее на картинку под номером один (рис. 2).

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

Помимо всего прочего, я бы рекомендовал вести записи всех изменений, вносимых в ядро. Дело в том, что очень часто люди ставят или убирают галки, не будучи уверенными в правильности своих действий, после этого они начинают спрашивать: "А у меня звук не работает, что я сделал не так?" или "Почему у меня не компилируется ядро?" и прочее. Поэтому читайте help- и man-страницы, ставьте галки только там, где уверены, документируйте все изменения и, наконец, не забывайте делать backup документа Makefile, тогда проблем будет гораздо меньше.

3. Перейдем непосредственно к настройке ядра. Одной из наиболее интересующих нас вкладок является General setup (рис. 3). Здесь обязательно надо поставить галки рядом с Networking support и PCI support. Первое нам просто необходимо по той причине, что даже если ваш компьютер не подключен к сети, некоторые программы нуждаются в том, чтобы ядро поддерживало эту опцию. Второе же можете не включать, если вы обладаете ЭВМ, в котором нет PCI-слотов.

Также важны пункты Power Management support и Advanced Power Management BIOS support. В первом случае советую поставить -да-. Это поможет избежать ошибок при включении и выключении компьютера под руководством нашего нового ядра. Во втором случае делайте как хотите, но если вам не нравится вместо ОС вручную выключать питание ПК, ставьте -да-.

Следующая полезная вкладка - Network device support. Тут у пользователя есть возможность включить поддержку своей сетевой карты, попутно отметив требующиеся дополнительные возможности ядра, например, такие как PPP(point-ot-point protocol) support.

Теперь несколько слов о файловых ситемах (File systems). Вспомним про наш несчастный NTFS раздел. В этой вкладке имеется все, что душе угодно: от NTFS до UDF. Единственно, что я бы отметил особо, это то, что большинство конфигураций ядра нуждаются в proc filesystem support.

Не забывайте про звук (Sound). Выберите тут свою или наиболее близкую к имеющейся модель звуковой карты. Впрочем, кроме внутреннего динамика, серверу больше ничего не надо.

Если вам не хватило времени, чтобы настроить все за один присест, - просто сохраните получившееся с помощью кнопки Store Configuration to File и вернитесь к настройке, когда вам заблагорассудится (Load Configuration from File).

4. Готово. Все настроено, как того требует суровая действительность. Остается лишь скомпилировать новое ядро и связать его с существующей системой. Для этого нажимаем на кнопку Save and Exit. В папке /usr/src/linux-version должен появиться Makefile (рис. 4). Проверить это из терминала можно командой

% ls -al

Если в списке документов он есть - это хорошо, можно продолжать.

5. Далее надо будет несколько изменить содержание нашего Makefile. По сему сделаем backup:

% cp Makefile Makefile.bak

6. Теперь со спокойной душой начинаем редактировать (рис. 5):

% vi Makefile

В случае, если vi "не ваш" редактор, воспользуйтесь каким-нибудь блокнотом из иксов. Итак, в самом начале файла есть строка, начинающаяся с фразы EXTRAVERSION=-8. То, что следует за последним знаком версии ядра, меняем на то, что нам захочется, например: EXTRAVERSION = -8xmine.

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

7. Начинаем компилировать:

% make dep clean

Если все прошло без проблем, создаем bzImage, в противном случае надо проверить конфигурацию ядра и то, как был отредактирован Makefile.

% make bzImage modules

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

После вышеописанных действий в папке по адресу /usr/src/linux-vesion/arch/i386/boot должен появиться файл bzImage. В случае, если его нет, начинайте все заново, где-то что-то было сделано не так, как надо. Ну а если bzImage на месте, то успех предприятия близок.

8. Остается только "рассовать" некоторые полезные файлы по папкам и отредактировать lilo.conf, чтобы LILO знал о существовании нового ядра.

% cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-8xmine

Копируем bzImage в папку, которую использует система при своей загрузке.

% cp System.map /boot/System.map-2.4.20-8xmine

Некоторые спорят о том, нужен ли файл System.map вообще. Советую не рисковать. И коль скоро вы не профессиональный системный администратор и не сможете решить всех возможных проблем, связанных с его отсутствием, выполните все команды, приведенные в статье.

% make modules_install
% mkinitrd /boot/initrd-2.4.20-8xmine.img 2.4.20-8xmine

9. С файлами ядра покончено. Lilo.conf - единственное, что стоит между нами и системой под управлением нового ядра.

% vi /etc/lilo.conf

В файл настройки LILO надо добавить следующие строки:

image=/boot/vmlinuz-2.4.20-8xmine
label=xmine
initrd=/boot/initrd-2.4.20-8xmine
root=/dev/hda1
read-only

Вместо /dev/hda1 укажите корневой раздел вашей операционной системы (рис. 6).

Далее применяем изменения:

% /sbin/lilo -v -v

И, наконец, перезагружаем компьютер:

% /sbin/reboot

После перезагрузки компьютера, если все было сделано корректно, вы увидите наше творение (mykernel) в списке доступных систем LILO. Поздравляю, теперь вы обладатель ядра, настроенного и скомпилированного специально под ваши потребности. Проверить это можно, введя в терминале команду

% uname -r

Вы увидите что-то вроде: "2.4.20-8xmine" (рис. 7).

Я искренне надеюсь, что данная статья поможет читателю в освоении операционных систем семейства Linux. Удачи вам в действительно увлекательном пути познания Unix и Linux!



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты