Алексей Стахнов - Linux
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
linear
default=linux
image=/boot/vmlinuz-2.4.12
label=new Linux kernel
initrd=initrd-2.4.12.img
read-only
root=/dev/hda5
image=/boot/vmlinuz-2.4.7–3
label=Linux
initrd=initrd-2.4.7–3.img
read-only
root=/dev/hda5Для того чтобы внесенные в конфигурационный файл изменения вступили в силу, необходимо выполнить следующую команду: /sbin/lilo. Если все в порядке, на экране появятся следующие строки:
Added linux * Added new Linux kernel
Символ * после linux обозначает, что секция, помеченная как linux, является загружаемой по умолчанию.
2. Проверьте, как функционирует новое ядро. Если проблем нет – уберите из конфигурационного файла LILO секцию, относящуюся к старому ядру.
Компиляция ядра операционной системы Linux
Ядро операционной системы Linux может быть двух типов – монолитное и модульное.
Модульное ядро — это такое ядро, где драйверы почти всех устройств не вкомпилированы в него, а содержатся во внешних модулях, загружаемых по мере необходимости. С одной стороны, это несколько замедляет работу ядра, а с другой – нет необходимости пересобирать ядро при установке какого-нибудь нового аппаратного устройства.
Монолитное ядро — это ядро, в котором все необходимые драйверы в него вкомпилированы. Недостатком такого ядра является необходимость пересобирать ядро операционной системы при появлении новых аппаратных устройств, а достоинством – сравнительно небольшой объем ядра операционной системы и повышенная ее производительность. Мы рассмотрим компиляцию и модульного ядра, и монолитного.
Для чего пересобирают ядро? Каковы аргументы «за» и "против"?
«За» компиляцию ядра операционной системы
Рассмотрим аргументы «за».
• Основная причина для самостоятельной компиляции ядра – выход новых версий ядра операционной системы Linux. Как правило, в новых версиях добавляются новые функциональные возможности и исправляются замеченные ошибки. К сожалению, большинство сборщиков дистрибутивов отстают в выпусках «фирменных» ядер операционной системы, а иногда даже делают доступным новую версию ядра операционной системы только с выходом новой версии дистрибутива.
• Пересборка ядра используется для оптимизации ядра операционной системы Linux конкретно под имеющийся набор аппаратных средств – процессора, чипсета материнской платы, контроллеров, сетевых плат, видеокарт и т. п.
• Компиляцию ядра осуществляют так же для включения специфических свойств ядра , которые появляются в нем после наложения специальных «заплаток» – (патчей), разрабатываемых отдельными программистами или группами. Обычно эти свойства связаны с безопасностью системы или с функционированием экзотических аппаратных средств. Наиболее известен вариант «альтернативного» ядра от Алана Кокса (Alan Кох).
• Самостоятельно компилировать экспериментальные ядра с новыми возможностями приходится потому, что разработчики дистрибутивов их не тестируют и не выпускают с ними инсталляционные пакеты. Следует помнить, что экспериментальные ядра не всегда стабильны, и с новыми возможностями можно получить набор ошибок, правда зачастую не критичных для функционирования системы.
«Против» компиляции ядра операционной системы
Против компиляции ядра операционной системы есть столько же пунктов (если не больше), сколько и «за».
• Для того чтобы скомпилировать ядро операционной системы, необходимо много знать из различных областей администрирования: особенности настройки и функционирования сетей, поддержка аппаратуры, периферии, файловых систем, специфического программного обеспечения и др.
• При неправильно сконфигурированном или неверно установленном новом ядре операционной системы (это вытекает из предыдущего пункта) получаем проблемы вплоть до полной потери работоспособности операционной системы.
• Это противоречит принципу "работает – не трогай". Если ядро операционной системы работает устойчиво и его функционирование всех удовлетворяет – зачем его компилировать?
• Если вы решили уменьшить объем ядра операционной системы, изъяв все лишнее, не забудьте: почти все свойства ядра операционной системы вынесены в загружаемые модули, поэтому сэкономить удастся только пятьдесят-сто килобайт.Утилиты конфигурирования ядра операционной системы Linux
Если вы все-таки решились скомпилировать ядро операционной системы Linux, перед вами встанет вопрос – как сконфигурировать его параметры? Можно, конечно, изучить исходные тексты ядра операционной системы, но это займет не менее одной-двух недель. Есть и более легкие способы – сделать это при помощи специальных утилит:
• xconfig – утилита по конфигурированию параметров ядра в графической системе X Window (рис. 16.1). Как можно видеть из рисунка – простая, понятная, легкая в использовании;
Рис. 16.1. xconfic
• menuconfig – простая текстовая утилита с системой меню для конфигурации ядра операционной системы (рис. 16.2). Передвигаясь по пунктам меню, достаточно удобно настраивать ядро операционной системы;
Рис. 16.2. menuconfig• config – старейшая текстовая утилита для конфигурирования ядра операционной системы (рис. 16.3). Требует минимального количества ресурсов и библиотек, однако неудобна в эксплуатации. Нельзя вернуться назад и отредактировать предыдущие пункты, необходимо закончить конфигурирование (или прервать) и начать его заново. На сегодняшний день практически не применяется.
Рис. 16.3. config
Процесс компиляции ядра
Как обычно, к компиляции ядра операционной системы следует предварительно подготовиться – создать загрузочную дискету. Для этого зайти в систему пользователем root и выполнить команду:/sbin/mkbootclisk kernelversion
где kernelversion – версия ядра, полученная с помощью команды uname.
Далее необходимо получить из Интернета (или с инсталляционного компакт-диска) и установить пакеты kernel-headers и kernel-source.
После этого перейти в каталог /usr/src/linux-2.4 и все дальнейшие команды выполнять из этого каталога.
Ядро с поддержкой загружаемых модулей (модульное)Компиляция ядра операционной системы Linux происходит в несколько этапов.
1. Необходимо быть уверенным, что после предыдущих компиляций ядра операционной системы в дереве исходных кодов не осталось каких-либо несуразностей типа исходных текстов ядра младшей версии или неубранных объектных файлов. Поэтому компиляцию ядра операционной системы рекомендуется начать с команды make mrproper. Эта команда помимо того, что удаляет «мусор» после предыдущих компиляций, уничтожает также конфигурационный файл ядра, который находится в /usr/src/linux-2.4/.config. Если у вас уже есть рабочий конфигурационный файл (/usr/src/linux-2.4/.config) который вы хотите взять за основу, перед выполнением этой команды скопируйте его в свой домашний каталог, а после выполнения команды make mrproper верните на прежнее место.
2. Теперь следует произвести конфигурацию ядра операционной системы. Если у вас уже есть готовый конфигурационный файл – пропустите этот шаг. Для конфигурирования ядра операционной системы, как мы уже указывали выше, можно воспользоваться четырьмя разными утилитами, приводящими к одному результату:
• make xconfig. Утилита используется для конфигурирования ядра операционной системы в среде X Window;
• make config. Простая текстовая утилита конфигурации ядра операционной системы;
• make menuconfig. Текстовая утилита с системой меню для конфигурации ядра операционной системы Linux;
• make oidconfig. Неинтерактивный скрипт, который устанавливает в конфигурационном файле ядра значения по умолчанию.
3. После создания конфигурационного файла /usr/src/linux-2.4/.config для корректной установки всех зависимостей выполняем команду make dep.
4. Для подготовки исходных текстов для компиляции выполняем команду make clean.
5. Теперь необходимо отредактировать файл /usr/src/linux-2.4/Makefile таким образом, чтобы полученное новое ядро не перекрыло старое ядро операционной системы (более подробную информацию смотрите в Kernel-HOWTO). Редактируем /usr/src/linux-2.4/Makefile и исправляем строку, начинающуюся с extraversion= таким образом, чтобы создать уникальное имя. Самый простой вариант – добавить дату компиляции ядра. К примеру EXTRAVERSION= -0.1.21-jul2001. Это позволит одновременно иметь старую и новую версии ядра операционной системы.
6. Компилируем ядро операционной системы командой make bzImage.
7. Компилируем модули ядра операционной системы командой make modules.
8. Устанавливаем модули операционной системы командой make moduies_install. Эта команда должна установить модули ядра в каталог /lib/modules/KERNELVERSION/kernel/drivers, где KERNELVERSION – версия, описанная в файле Makefile. В нашем примере это /lib/modules/2.4.7-3-jul2001/kernel/drivers/.
9. Если в вашей системе установлен SCSI-контроллер, и вы сделали SCSI-драйвер модульным, необходимо создать новый файл initrd (см. далее).
10. Выполняем команду make install для того, чтобы скопировать наше новое ядро операционной системы и необходимые файлы в соответствующие каталоги.