Глава 20 . Рекомпиляция ядра Linux
Linux — одна из немногих операционных систем, позволяющих воздействовать на работу компьютера, модифицируя ядро системы. Поскольку Linux поставляется с полным набором исходных текстов, в нем можно опробовать любую новинку. Конечно, большинство предпочтет модифицировать ядро при помощи инструментов, входящих в комплект, а не компилировать тексты, написанные на языке С.
Тем не менее, сотни параметров можно установить при помощи утилит конфигурирования ядра. Вы ознакомитесь с применением этих утилит, затем изучите способы рекомпиляции ядра на основе модифицированных параметров.
При установке дистрибутива Red Hat исходные тексты не записываются на жесткий диск по умолчанию. Прежде чем приступить к запуску конфигурационных средств или рекомпиляции ядра, установите на диске исходные тексты, воспользовавшись командой rpm, рассмотренной далее.
Зачем изменять ядро
Новичок Linux может удивленно спросить: "А зачем это нужно - рекомпилировать ядро?" Тем более что процесс этот, в его представлении, далеко не прост.
В настоящее время Linux - система, намного более дружественная, чем два-три года назад. Усовершенствованная процедура установки, графические интерфейсы и поддержка оборудования сделали систему Linux доступной для тех, кто не является большим компьютерным знатоком. В действительности, описываемый процесс рекомпиляции управляется меню и единственной (длинной) командой запуска.
Linux - система в высшей степени "настраиваемая", так что ее вполне можно адаптировать "под себя". Однако многие ее функции в стандартном ядре просто не задействованы. Причин тому несколько.
Прежде всего, важно понять, что любому пользователю программного обеспечения постоянно приходится искать компромиссы. Например, при использовании программы сжатия это компромисс между скоростью и плотностью сжатия.
Немало компромиссных решений приходится принимать и в отношении ядра Linux. Например, можно предпочесть ядро меньшего объема либо поддерживающее большее число типов оборудования без дополнительного конфигурирования. А можно оптимизировать систему на передачу IP-пакетов или выполнение задач, обычных, для рабочей станции.
Терминология: частичная, полная и просто компиляция
В этой главе часто встречаются три термина, обозначающие, по существу, один и тот же провес: частичная (make), полная (build) и просто компиляция (Compile) ядра. Их можно рассматривать как синонимы, но попробуем все же разобраться в точном значении каждого.
При разработке программного обеспечения в Linux, как и во многих других операционных системах, схема объединения модулей исходного текста и многочисленных библиотек записывается в конфигурационном файле. Это файл называется Make file и используется утилитой make.
Дроцесс преобразования исходного текста проекта в нечто, чем может воспользоваться компьютер (двоичный файл), называют компиляцией. В Linux для компиляции исходного текста применяются стандартные компиляторы языка С дсс или egcs.
Как правшто, проект содержит десятки компонентов, поэтому утилита make проверяет дату и время модификации каждого, чтобы компилировать только те из них, которые были модифици-рованы после предыдущей компиляции. Тем самым достигается существенная экономия времени при компиляции пцоекта после частичной модификации исходного текста. Этот процесс называется частичной компиляцией.
При запуске утилиты make можно задать компиляцию всех компонентов проекта. Это полная компиляция.
Таким образом, все три варианта компиляция ядра - это, по существу, одно и то же. А при наличии нескольких сотен тысяч строк исходных текстов, процесс этот, как его ни назови, требует времени.
Ядро конфигурируется так, чтобы соотношение между его объемом, скоростью и поддержкой оборудования было приемлемым. Это соотношение выбирается с расчетом на среднего пользователя, каким его видит поставщик Linux. Мы научимся самостоятельно принимать решения о том, какие именно функции наиболее важны для конкретной вычислительной среды.
Введение в модули
Модули ядра - очень важная составляющая Linux. Такой модуль позволяет обеспечивать ядру новые функции без его рекомпиляции. Вы сможете убедиться, насколько это важно.
Например, если возникнет необходимость в новой плате интерфейса SCSI, можно загрузить модуль ядра вводом единственной команды - insmod. В прежних версиях Linux для обеспечения поддержки устройства SCSI пришлось бы рекомпилировать ядро системы.
Со временем число внешних устройств, поддерживаемых Linux, возросло. Появились модули ядра, позволяющие ядру осуществлять эту поддержку, оставаясь относительно небольшим по объему.
Примечание
Существенное отличие Linux от некоторых других операционных систем состоит в способности устанавливать или удалять поддержку оборудования, файловых систем, языков и т.п. даже без перезагрузки системы.
В табл. 20.1 дан перечень команд для работы с модулями ядра. Более подробную информацию о каждой можно найти на соответствующей странице руководства.
Примечание
Все упомянутые команды, за исключением Ismod, доступны только корневому пользователю. В Red Hat Linux 7.1 эти команды расположены в каталоге /sbin, не входящем в путь по умолчанию, поэтому для их запуска придется вводить полный путь, например, /sbin/Ismod, /sbin/insmod И Т.П.
Табл. 20.1. Команды для работы с модулями ядра
Команда |
Описание |
Ismod
insmod rmmod depmod modprobe |
Вывод списка всех модулей, установленных в данный момент в работающем ядре Установка модуля в работающем ядре. Необходимо указать имя модуля и, возможно, несколько дополнительных параметров, описывающих его поведение (например, IRQ и адреса устройств) Удаление модуля из работающей системы. Необходимо соблюдать осторожность, чтобы не удалить модуль, используемый другими модулями. О взаимозависимости загруженных модулей можно судить по результатам выполнения команды Ismod Создание файла зависимостей, который команда modprbbe использует для загрузки набора модулей Загрузка набора модулей, определенного командой depmod |
Дополнительную информацию о модулях конкретной системы Linux можно найти в некоторых системных файлах.
Поскольку модули ядра добавляются в код, который в это время выполняется, они записываются в виде объектного кода (уже компилированного). Имя файла каждого модуля имеет расширение .о.
Проверьте следующие файлы.
Примечание
В Red Hat Linux 7.1 ядро имеет версию 2.4.2. Если вы пользуетесь другой версией Linux, или обновили ядро, укажите в приведенных выше именах каталогов соответствующий номер.
Примечание
Версия любого ядра Linux задается тремя числами major.minor.patch (большая.малая.обновление). Крупные изменения в ядре соответствуют изменению номера major. Менее значимые изменения могут сопровождаться только изменением номера minor. Отлаженные и проверенные версии имеют четный номер minor. Версии, находящиеся в стадии доработки имеют нечетный номер minor. Пользователям, не имеющим опыта работы в Linux, не рекомендуется пользоваться такими версиями. Такие версии ядра не устанавливают на продаваемые компьютеры. По мере устранения ошибок и генерации обновлений появляются версии с очередными patch-номерами.
Причины рекомпиляции
Если вам непонятно, для чего может понадобиться рекомпиляция ядра Linux, загляните в табл. 20.2, в которой перечислены некоторые проблемы и способы их решения.
Конечно, для компиляции ядра достаточно и одного из перечисленных поводов, однако не-лишне рассмотреть их все, чтобы осознать всю гибкость Linux.
Табл. 20.2. Проблемы, решаемые рекомпиляцией ядра Linux
Проблема |
Решение |
Процессор имеет дефект, который может вызывать полный останов системы. В Linux есть компенсационная процедура, но ваша версия недостаточно новая |
Загрузите заплату (компенсационную процедуру) для ядра Linux и рекомпилируйте исходный текст. Так можно решить проблему за 20 минут |
Необходимо установить плату адаптера SCSI, для поддержки которой есть модуль ядра Linux, но систему невозможно загрузить с диска SCSI, пока модуль SCSI не станет составной частью ядра |
Рекомпилируйте ядро, добавив необходимую поддержку (именно встроенную, а не в виде отдельного модуля) |
Появилось сообщение о нарушении безопасности в драйвере файловой системы Linux. Заплату можно поставить через несколько часов |
Загрузите заплату и рекомпилируйте ядро, задействовав более новую систему безопасности |
В системе устанавливается новый драйвер сетевой платы. Исходный текст загружается с узла Web поставщика |
Выполните частичную рекомпиляцию всех модулей исходного текста, модифицированных для поддержки указанного драйвера |
Вы приобрели коммерческую систему Linux с ядром 2.2. 16, но теперь собираетесь установить более новое .ядро |
Загрузите исходные тексты ядра (довольно объемные, но не чрезмерно) и компилируйте их |
Пользователи системы жалуются, что доступ к некоторым файловым системам можно получить ; только после ввода последовательности странных команд (например, insmod) |
Рекомпилируйте ядро с поддержкой нужной файловой системы так, чтобы файловые системы этого типа можно было устанавливать без явной установки соответствующего модуля ядра |
Сведения об обновлении ядра
Изменения в ядре Linux могут происходить каждый день. Впрочем, если ваша система работает устойчиво, отслеживать все изменения нет смысла. Большинство изменений вносится на этапе разработки, поэтому немедленное внедрение каждого из них в рабочую систему неразумно. Чтобы быть в курсе всех событий, связанных с ядром Linux, необходимо регулярно посещать следующие два Web-узла, обновляемых несколько раз в день.
wwvw.linuxhq. com. Это огромное собрание сведений о ядре Linux с разделами, посвященными новейшим разработкам и классическим системам, со ссылками на другие источники информации и множеством полезных сведений о ядре Linux.
www.freshfimeat.net. Депозитарно-распределительный документационный центр с объявлениями о новых открытых источниках программного обеспечения и сопутствующей информацией. Имеется архив со средствами поиска. Ядро Linux не является главной темой узла Freshmeat, но здесь приведена информация о новых вариантах ядра.
www. linuxtoday. com. На этом сайте располагаются ежедневно обновляемые сведения о программном обеспечении, поставляемом с исходными кодами. Здесь же хранится архив информации о версиях, снабженный средствами поиска. Ядро Linux не является главной темой узла linuxtoday, но здесь приведена информация о новых вариантах ядра.
Проверка пакетов исходных текстов
Для рекомпиляции ядра необходимы его исходные тексты. В Red Hat исходные тексты ядра размещаются в одном rpm-пакете, но по умолчанию не устанавливаются. Имя этого пакета:
kernel-source-2.4.2-2.1386.rpm
Пакет устанавливается по команде rpm после установки устройства CD-ROM, rpm -UVh kernel-source-2.4.2-2.1386.rpm
Примечание
В дистрибутивах Red Hat исходные тексты ядра размещены в пакете rpm, который не помечен как "пакет исходных текстов" (source code package) расширением файлового имени .src.rpm. Помните об этом, чтобы избежать путаницы.
Пакет со сходными текстами ядра не входит в дистрибутив Linux Red Hat 7.1, прилагаемый к книге. Его можно загрузить из Web-узла http://www.redhat.com .
Проверка наличия инструментальных средств
Кроме исходных текстов, для рекомпиляции ядра нужен компилятор, состоящий из двух компонентов:
Разные системы могут содержать разные версии этих утилит. Естественно, лучше иметь последнюю версию компилятора - дсс 2.96 или egcs 1.1.2.
Для проверки этих утилит в системе воспользуйтесь следующими командами (их вывод соответствует стандартной установке Red Hat):
# rpm —q make
# rpm -q gcc gcc-2.96-81
Примечание
Такие команды работают в любой системе, в которой для управления пакетами применяется команда rpm.
Если этих средств в вашей системе нет, установите их, воспользовавшись фмандой rpm или aналогичной.
Совет
Устанавливая дсс, вы можете получить сообщение failed dependencies. В этом сообщении перечисляются другие rpm-пакеты, которые следует установить перед установкой дсс. Установите необходимые пакеты с CD-ROM.
Примечание
Если у вас еще нет загрузочного диска с используемым ядром, можете создать его из режима корневого пользователя с помощью команды /sbin/mkbootdisk -device /dev/fd0 2.4.2-2.,
Создание резервной копии прежнего ядра
Несмотря на то, что рекомпиляция ядра Linux по силам даже ребенку, все-таки следует предпринять некоторые меры предосторожности. Это означает создание резервной копии ядра и обеспечение способа ее загрузки при неудачной компиляции.
Создание резервной копии текущего ядра проводится в три этапа.
Создание резервной копии исходных текстов не составляет труда. Для этого воспользуйтесь командой ср для копирования каталога.
# cp*-r /usr/src/linux-2.4.2 /usr/src/linux-2.4.2.sav
Восстановление производится копированием в обратном направлении. Создание резервной копии самого ядра ничуть не сложнее (замените указанную в примере версию системы собственной).
# ср /boot/vmlinuz-2.4.2-2 /boot/vmlinuz-2.4.2-2.orig
Совет
При рекомпиляции ядра прежнее ядро записывается в файл с расширением . old. Однако эту копию ядра пока нельзя использовать для загрузки системы. Этим объясняется необходимость выполнения перечисленных выше операций.
Загрузчик операционной системы типа LILO, обычно применяемый для загрузки Linux, конфигурируется установкой ссылки на файл ядра в корневой файловой системе. Например, в файле
/etc/lilo . conf
можно найти запись
image = /boot/vmlinuz-2.4.2-2
указывающую на файл запускаемого ядра.
После создания резервной копии ядра добавьте в файл /etc/lilo. conf еще одну запись, позволяющую запустить Linux с прежним ядром.
Для этого выполните следующие действия.
При следующей перезагрузке системы вы увидите идентификатор нового ядра в графической подсказке загрузчика LILO. Если у вас дистрибутив, не использующий графический интерфейс загрузчика LILO, то, нажав клавишу Tab при появлении командной строки LILO во время следующей загрузки системы, вы вызовете на экран список дополнительных образов, определенных перед рекомпиляцией ядра.
Получение нового ядра
Существует несколько способов получения экземпляра нового ядра. Два основных способа ориентированы на использование архива Linux Kernel, расположенного по адресу http: / / www.kernel.org, или на использование Web-сайта вашего Linux-дистрибьютора. Если вас интересует rpm-версия ядра, то основным источником может послужить http: //www.rpm-f ind. net. Загрузка и установка rpm-пакетов уже рассматривалась в предыдущих главах, поэтому ниже мы уделим внимание загрузке ядра в формате tar . gz, в файлах, подобных linux-2.4.4.tar.gz.
Совет
Убедитесь в том, что создана резервная копия предыдущей версии ядра (см. выше).
Загрузив необходимый пакет ядра, поместите его в каталог /usr/src/. Ниже мы предполагаем, что уже создана резервная копия существующего ядра, как это описывалось выше в данной главе.
Чтобы извлечь ядро и связанные с ним файлы (общим числом более 8,000 в версии 2.4.4), перейдите в каталог /usr/src и выполните следующую команду:
tar zxpvf linux-2.4.4.tar.gz
Если у пакета вашего ядра имя другое, задайте его в данной команде. Теперь можно выполнять конфигурирование ядра, как это описано ниже.
Совет
Если вы обновляете ядро, убедитесь в том, что программное обеспечение вашей системы достаточно "свежее", чтобы воспринять обновление. Для ядер версий 2.4 соответствующие сведения о необходимых версиях программного обеспечения приведены в файле /usr/src/linux-2.4.x/Documentation/Changes.
Конфигурирование нового ядра
Самая интересная часть создания нового ядра - его конфигурирование. Именно здесь решается, какие функции включать в ядро, какие не включать и т.д. Можно выбирать между конфигурированием старого ядра и установкой/конфигурирование нового. Например, используя Red Hat Linux 7,1, вы можете изменить конфигурацию существующего ядра 2.4.2, задав новые параметры. Можно также загрузить и установить новое ядро версии 2.4.4. Несмотря на то, что детали конфигурирования в этих двух случаях различны, используемые утилиты и сама методика конфитерирования совпадают.
В Linux есть три отдельные конфигурационные утилиты, каждая из которых имеет свои особенности.
Утилита с интерфейсом командной строки. Пользователь последовательно отвечает на вопросы о функциях, которые необходимо включить в ядро. Эта утилита удобна для специалистов, умеющих работать с ядром, и для тех, у кого есть сценарии конфигурирования для этой утилиты. Утилиту командной строки можно рекомендовать пользователям с ограниченными возможностями управления экраном, не позволяющими запускать программу, управляемую меню. Один из самых больших недостатков утилиты командной строки - невозможность возврата к уже установленным параметрам для их просмотра или переустановки.
Утилита с меню текстового режима. Многоуровневое меню этой утилиты позволяет устанавливать и переустанавливать параметры ядра в любом порядке.
Утилита с графическим интерфейсом. Интерфейс этой утилиты практически аналогичен интерфейсу утилиты с текстовым меню, но имеет все преимущества графического режима. Это наиболее привлекательная утилита, но она запускается только в графической системе X Windows.
Перечисление утилиты создают один и тот же конфигурационный файл, используемый утилитой make при полной или частичной компиляции ядра.
Эти три утилиты обладают достаточно мощными справочными системами, позволяющими найти сведения об установке любого параметра.
Параметры ядра
Просматривая параметры в любой конфигурационной программе (командной строки, с текстовым или графическим интерфейсом), необходимо четко представлять влияние этих параметров на работу ядра.
Идентификация параметров в каждой программе своя, но во всех трех представлен один и тот же их набор. Параметры подразделяются на две основные группы:
Если программный блок, соответствующий данному параметру, не загружается как модуль ядра, он может быть одним из двух:
Символы в квадратных скобках (вместе со скобками) соответствуют отметкам параметров в меню конфигурационных программ (кроме утилиты командной строки).
Для модульных параметров возможны три варианта установки (в соответствии с их представлением в меню конфигурационных утилит).
Совет
Иногда значение какого-либо параметра не удается поменять до установки другого параметра. Например, установить поддержку определенного устройства SCSI можно только после общего разрешения поддержки этих устройств.
Когда в системе будут установлены необходимые средства (утилита make и компилятор дсс) и исходные тексты, можно запустить одну из конфигурационных утилит и приступить к конфигурированию ядра.
Обратите внимание: для конфигурирования ядра необходимо запустить лишь одну из утилит, описание которых дано ниже. Просмотрите все описания и выберите наиболее подходящую из них.
Совет
При первой установке и конфигурировании нового ядра, проверяйте каждый пункт конфигурации. При наличии у вашего компьютера специфических особенностей (например, один процессор, необходимость поддержки PC Card, необходимость поддержки USB), следует соответствующим образом изменить конфигурацию. Постарайтесь также задать для выбираемых опций минимальные значения, поскольку ядра, загруженные полностью, зачастую настолько велики, что сильно снижают быстродействие системы.
Конфигуратор командной строки
Для запуска утилиты командной строки выполните следующие действия.
# cd /usr/src/linux-2.4.2
Примечание
Если номер версии вашего ядра или используемый каталог другие, измените команду соответствующим образом.
#make config
Последует первый вопрос о конфигурировании ядра: по команде make config выводится последовательность таких вопросов.
/?]
*
* Loadable module support *
Enable loadable module support (CQNFIG_MODULES) [V/n/7]
Set version information on all module symbols (CONFIG_MODVERSIONS) [V/n/7]
Processor family (386, 486, 586/K5/5x86/6x86/6x86MX,
Pentium-Classic, Pentium-HM X,
Pentium-Pro/Celerbn/Pentium-II,
Pentium-Ill, Pentium-4,
K6/K6-II/K6-III, flthl on/Duron/K7,
Crusoe, Uinchip-C6, Uinchip-2,
defined CONFIG_MPENTIWIII Toshiba Laptop support (CONFIG_TOSHIBfl) [N/y/m/7] []
Примечание
Последовательность вопросов меняется в зависимости от вводимых ответов.
Чтобы оставить значение параметра по умолчанию достаточно нажать Enter. Вариант по умолчанию обозначен заглавной буквой. Например, вопрос о поддержке сета имеет вид:
Networking support (CONFIG_NET) [Y/n/7] Поддержка.сети (CONFIG_NET) [Д/н/?]
Нажатие Enter равносильно вводу Y (Да). Вопросы для параметров, обозначающих включение программных блоков в ядро или их использование как самостоятельных модулей, следующие:
Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?] Поддержка ядром формата ELF (CONFIG_BINFMT_ELF) [Д/м/н/?]
На многие вопросы об устройствах предлагаются варианты ответов, например M/n, что означает "Модуль" или "не включать".
Один из .вариантов ответа на каждый вопрос - ввод вопросительного знака, после чего на экран выводится описание параметра (как правило, достаточно полное).
Совет
Во всех трех конфигурационных утилитах используется одна и та же справочная информация.
Недостатки этой конфигурационной утилиты следующие.
Меню текстового режима, описанное ниже, упрощает процесс конфигурирования, предоставляя возможность просмотра выбранных параметров конфигурации и создания файла конфигурации.
Примечание
Процесс конфигурирования можно прервать, нажав клавиши Ctrl+C. Тогда на экране появится сообщение об ошибке, а конфигурационный файл не будет создан.
Конфигуратор с текстовым интерфейсом
Для запуска этой утилиты выполните следующие действия.
# cd /usr/src/linux-2.4.2
Примечание
Если номер версии вашего ядра или используемый каталог другие, измените команду соответствующим образом.
# make menuconfig
Примечание
Для запуска конфигурационной утилиты, управляемой меню, необходим пакет ncurses, устанавливаемый по умолчанию почти во всех системах Linux. Если после ввода команды make menuconf ig появятся сообщения об ошибках, проверьте, установлен ли пакет ncurses-devel rpm.
Сразу после ввода команды по экрану пробежит ряд непонятных строк, свидетельствующих о компиляции конфигурационной утилиты. На них можно не обращать внимания. Через несколько минут откроется окно, показанное на рис. 20.1.
Рис. 20.1. Ядро можно конфигурировать при помощи утилиты с меню текстового режима
В этом окне приведено меню категорий конфигурационных параметров. Для управления меню используются следующие клавиши.
Перечисленные кнопки имеют следующие назначения.
Select Открытие подменю с параметрами выделенной категории.
Exit Выход в предыдущее меню или завершение работы (из меню высшего уровня).
Help. Вывод на экран справки о выделенном в меню параметре.
Пример справки показан на рис. 20.2.
Рис. 20.2. Справка по каждому параметру ядра выводится нажатием кнопки Help
Описываемые конфигурационные утилиты создают файл конфигурации ядра, используемый при его рекомпиляции. Этот файл можно сохранить для дальнейшего многократного использования. Для этого в меню предусмотрены две специальные команды: Save Configuration to an Alternate File (Сохранить конфигурационные параметры в отдельном файле) и Load an Alternate Configuration File (Загрузить конфигурационные параметры из отдельного файла). Пролистайте меню до этих команд клавишей со стрелкой вниз или Page Down.
Две последние команды главного меню позволяют сохранить набор конфигурационных параметров или загрузить существующий конфигурационный файл.
Предупреждение
Не создавайте копии конфигурационного файла до полного завершения процесса конфигурирования.
Строки меню, за которыми открываются следующие подменю, отмечены стрелками справа, как следующая строка главного меню.
USB Support
Строки меню, соответствующие конкретным параметрам ядра, отмечены слева символами, обозначающими установку этих параметров (см. также рис. 20.3).
Рис. 20.3. Параметры в меню утилиты menuconf ig с отметками их значений
Совет
Отдельные буквы некоторых строк меню выделены жирным шрифтом или цветом. Для перехода на такую строку достаточно нажать клавишу, соответствующую выделенной букве.
Примечание
Обратите внимание на простоту конфигурирования параметров поддержки USB. После выбора соответствующих параметров можно использовать для установки периферийных USB-устройств методику, описанную в гл. 18.
Текущее значение каждого параметра указано в квадратных или угловых скобках слева. Изменение значения производится нажатием следующих клавиш.
Совет
Нажатие клавиши пробела приводит к циклической смене значений выделенного параметра.
Завершив .просмотр и установку параметров, выполните команду Exit (Выход) главного меню. Откроется диалоговое окно с предложением подтвердить или отменить запись модифицированных конфигурационных параметров (рис. 20.4). Чтобы создать новый конфигурационный файл, щелкните на кнопке Yes (Да).
Рис. 20.4. При выходе из конфигурационной утилиты, управляемой меню, необходимо сохранить модифицированные параметры
Конфигуратор с графическим интерфейсом
Запуск конфигурационной утилиты с графическим интерфейсом выполняется в следующей последовательности.
# cd /usr/src/linux-2.4.2
Примечание
Если номер версии вашего ядра или используемый каталог другие, измените команду соответствующим образом.
#make xconfig
Примечание
Графической конфигурационной утилите требуется несколько инструментальных пакетов системы X Windows. Если после ввода команды make xconfig появляются сообщения об ошибках, проверьте, установлены ли в системе нужные инструментальные пакеты.
Как и при запуске предыдущей утилиты, на экране промелькнет несколько сообщений о компиляции утилиты, и через несколько минут откроется ее главное окно (рис. 20.6).
Рис. 20.5. Утилита конфигурирования ядра с графическим интерфейсом: меню и кнопки установки значений параметров
Совет
Любой графической программе требуется больше системных ресурсов, чем аналогичной программе текстового режима. При недостаточном объеме оперативной памяти графическая утилита может оказаться слишком медлительной. В таком случае воспользуйтесь конфигурационной утилитой с меню текстового режима, описанной в предыдущем параграфе
Графическая утилита не слишком отличается от утилиты menuconf ig. Здесь параметры также разбиты на категории; после щелчка на определенной категории открывается диалоговое окно со списком параметров, каждому из которых можно установить значение, определяющее, что соответствующее средство должно задействоваться как составляющая часть ядра, как загружаемый модуль или не задействоваться вообще. Такое диалоговое окно показано на рис. 20.6.
Рис. 20.6. В диалоговых окнах, подобных этому, устанавливаются конфигурационные параметры ядра
Совет
Ядро 2.4.2 в Red Hat Linux по умолчанию поддерживает симметричную мультипроцессорную архитектуру. Установите для соответствующей опции значение п, если в вашем компьютере всего один процессор.
Справа от каждого параметра находится кнопка Help (Справка), щелчком на которой открывается окно со сведениями о параметре (рис. 20.7). Сведения, предоставляемые справочными системами, совпадают во всех трех конфигурационных утилитах.
Рис. 20.7. В графической конфигурационной утилите справочные сведения выводятся в отдельном окне
Большое преимущество графической конфигурационной утилиты (особенно его оценят те, кто впервые конфигурирует ядро) - отражение в меню зависимости между различными параметрами. Например, в разделе Block Devices (Блочные устройства) нельзя установить поддержку систем RAID, встроенную в ядро, пока не будет включен параметр Multiple Device Driver Support (Поддержка драйверов для нескольких устройств).
Если в утилите menuconfig зависимость параметров друг от друга показана отступами имен параметров в меню, то в графической утилите установка неразрешенных сочетаний параметров просто невозможна. Работа с графической утилитой помогает понять зависимости между различными модулями.
В конце главного меню графической утилиты находятся команды, аналогичные соответствующим командам утилиты с меню текстового режима.
Save and Exit (Выход с сохранением). Создание файла конфигурации ядра и завершение работы утилиты.
Quit Without Saving (Выход без сохранения). Завершение работы утилиты без создания файла конфигурации ядра.
Предупреждение
Без создания файла конфигурации ядра при помощи одной из перечисленных утилит рекомпиляция ядра невозможна.
Load Configuration From File (Загрузка конфигурации). Загрузка конфигурационного файла, созданного ранее.
Store Configuration To File (Запись конфигурации). Запись конфигурационных данных в файл с указанным именем (для дальнейшего использования или передачи коллеге). Это не влияет на необходимость выполнения команды Save and Exit, создающей конфигурационный файл для рекомпиляции ядра.
Компиляция и запуск нового ядра
После завершения конфигурирования проверьте наличие нового конфигурационного файла (.conf ig), расположенного в каталоге /usr/src/linux-2 .4.2 (учитывайте номер вашей версии). Помните, что для отображения скрытых файлов необходимо использовать команду Is -а. Если конфигурационный файл .config на месте, можно использовать команду make для рекомпиляции ядра.
В разных системах Linux команды компиляции могут быть различными, но это не должно вызывать затруднений.
Завершив конфигурирование, вернитесь в режим командной строки и постарайтесь не сидеть у компьютера все время, пока идет компиляция.
Обычно рекомпиляция ядра длится от 15 минут до нескольких часов. Это зависит от скорости процессора, объема оперативной памяти и ряда других факторов, поэтому все команды, вводимые при компиляции, удобно объединить в одну, через точку с запятой, чтобы они выполнялись последовательно. Организовав процесс таким образом, можно заняться другими делами и вернуться к компьютеру после завершения компиляции.
Запуск процесса рекомпиляции
Приведенные ниже команды предназначены для создания нового ядра с рекомпиляцщй всех его модулей и их записью в соответствующие системные каталоги. (Там они будут доступны для команд ядра.)
Для рекомпиляции системы введите следующие команды.
# make dep; make clean; make bzlmage; make modules; make modules__install
Совет
Каждую команду make можно вводить отдельно, после завершения предыдущей. Если вы не планируете использовать модули, можете отбросить две последних команды. Более подробные рекомендации приведены в файле README, расположенном в каталоге /usr/src/linux-2.4.2.
После ввода этих команд на экране начнут мелькать строки с описанием каталогов, к которым обращается программа make, запуска компилятора gc.r. или едг.я для компиляции различных файлов исходного текста и компоновки различных блоков. Каждой из этих команд потребуется для выполнения несколько минут.
Если у вас в файле /etc/lilo. conf указан файл initrd, то следует создать новый файл initrd. Для начала, создайте резервную копию текущего файла initrd (в Red Hat Linux 7.1 это initrd-2 .4.2-2. img). Для этого выполните следующие команды:
# ср /boot/initrd-2.4.2-2.img /boot/initrd-2.4.2-2.orig.img
# /sbin/mkinitrd /boot/2.4.2-2.img 2.4.2-2
Теперь можно создать загрузочный диск для нового ядра с помощью команды
# make bzdisk
Перед выполнением этой команды следует вставить отформатированную дискету в накопитель. Готовый загрузочный диск необходимо испытать. Перезагрузите компьютер, не вынимая дискету из накопителя.
После выполнения команд компиляции ядра и возврата к командной строке создается новое ядро. Чтобы загрузить систему с новым ядром, его необходимо переместить в стандартный каталог, из которого оно будет запускаться. Это делается вводом команды
# ср /usr/src/linux-2.4.2/arch/i386/boot/bzlmage /boot/vmlinuz-2.4.2-2 В завершение, для обновления карты загрузки выполните команду lilo:
# /sbin/lilo
Совет
В имени копируемого образа ядра можно указать номер версии. Важно, чтобы имя этого файла совпадало с именем, указанным в файле /etc/liio.conf.
Тестирование нового ядра
После перемещения файла нового ядра в стандартный каталог (указанный в файле lilo. conf) систему можно перезагрузить с этим ядром.
Сразу после перезагрузки проверьте работу новых средств, ради которых и затевалась реком-пиляция. Можно выполнить следующие действия.
Может понадобиться проверка временной метки файла текущего ядра. Для этого введите команду uname. Это позволяет убедиться в том, что в данный моментсистема работает с реком-пилированным ядром. Метка времени и даты ядра должна совпадать со временем его рекомпи-ляции.
#uname -v
#1 Tue Mar 9 13:27:39 EST 2001
Примечание
Если ответ команды uname свидетельствует о том, что система загружена не с новым ядром, разберитесь с системным загрузчиком LILO. Проверьте, правильно ли указано имя загружаемого ядра в файле /etc/lilo.conf.
Что дальше
В следующей части книги рассмотрены основы сетей. Глава 21 посвящена ряду вопросов, связанных с подключением отдельного ПК к Internet, в том числе с механизмами создания РРР-соединения, просмотром World Wide Web или обменом сообщениями электронной почты в Linux.
В гл. 21 рассмотрены основные положения организации сетей и их реализации в Linux. Дан краткий обзор TCP/IP (основного протокола Internet) и большинства сетей на основе Linux и Unix.