Linux. Компиляция и настройка ядра
Данная статья содержит описание действий,
необходимых для успешной настройки и компиляции ядра системы 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!
Автор: Владимир Царьков
Источник: www.comprice.ru
|