где 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 для того, чтобы скопировать наше новое ядро операционной системы и необходимые файлы в соответствующие каталоги.
11. Ядро успешно скомпилировано и установлено. Далее необходимо произвести конфигурирование загрузчика
Создание образа initrd
Файл initrd необходим для загрузки SCSI-модуля во время старта операционной системы. Скрипт /sbin/mkinitrd создает соответствующий образ initrd для вашего компьютера, если выполнены следующие условия:
• loopback block device доступно;
• файл /etc/modules.conf содержит описание вашего SCSI-контроллера.
Для построения образа initrd необходимо выполнить команду /sbin/mkinitrd СО следующими параметрами: /sbin/mkinitrd /boot/initrd-2.4.7-3-jul2001.img 2.4.7-3-jul2001
Здесь /boot/initrd-2.4.7-3-jul200i. img – имя файла для нового образа initrd, a 2.4.7-3-jul2001 – ядро, чьи модули (из /lib/modules) должны быть использованы при создании образа initrd.
Этапы компиляции
Подведем итог. Для компиляции и инсталляции модульного ядра операционной системы Linux необходимо выполнить следующие команды:
1. make mrproper.
2. make menuconfig.
3. make dep.
4. make clean.
5. Редактирование /usr/src/linux-2.4/Makefile.
6. make bzlmage.
7. make modules.
8. make modules_install.
9. /sbin/mkinitrd /boot/initrd-2.4.xx.img 2.4.хх (если В вашей системе установлен SCSI-контроллер).
10. make install.
11. Конфигурирование загрузчика.
Монолитное ядроКомпиляция монолитного ядра операционной системы в основном повторяет компиляцию модульного ядра за некоторыми небольшими исключениями:
• когда конфигурируется ядро, не должны использоваться модули, т. е. на любой вопрос надо отвечать только Yes или No. Так же необходимо ответить No для пунктов kmod support и module version (CONFIG MODVERSIONS) support;
• необходимо пропустить следующие команды:
– make modules;
– make modules_instali;
• для загрузчика LILO в файл lilo.conf необходимо добавить строчку append=nomodules.
Этапы компиляции
Подведем итог. Для компиляции и инсталляции монолитного ядра операционной системы Linux необходимо выполнить следующие команды:
1. make mrproper.
2. make menuconfig.
3. make dep.
4. make clean.
5. Редактирование /usr/src/linux-2.4/Makefile.
6. make bzlmage.
7. /sbin/mkinitrd /boot/initrd-2.4.xx.img 2.4.хх (если В вашей системе установлен SCSI-контроллер).
8. make install.
9. Конфигурирование загрузчика
Параметры настройки ядра
Этот раздел полностью посвящен параметрам настройки ядра операционной системы Linux. Структура раздела выглядит следующим образом – в первой части на основе утилиты menuconfig показано дерево параметров настройки ядра Linux, во второй части – краткие пояснения параметров.
Дерево параметров настройки ядра
Полное дерево настроек ядра Linux с установками, используемыми в дистрибутивном ядре Red Hat Linux 7.2, приведено в
Параметры настройки ядра (комментарии)
Как вы уже заметили, параметров настройки ядра много, и чтобы правильно их сконфигурировать, необходимо иметь обширные знания о функциях операционной системы Linux. Еще одна особенность – почти 90 % всех настроек и свойств ядра вынесены в модули. Если вы не уверены в том или ином свойстве – поставьте «использовать модуль».
Далее кратко прокомментируем основные пункты меню конфигурации ядра операционной системы:
• Code maturity level options – для использования альфа– или нестабильных версий драйверов. В основном с целью отладки;
• Loadable module support – отвечает за вид скомпилированного ядра операционной системы: модульное или монолитное;
• Processor type and features – определяет тип процессора, для которого компилируется ядро операционной системы, поддержку набора процессорных команд, поддержку мультипроцессорной системы, объем поддерживаемой оперативной и виртуальной памяти и некоторые другие параметры. Для максимальной производительности системы рекомендуется выбрать именно тот тип процессора, который установлен в вашей системе, однако с целью совместимости в дистрибутиве ядро компилируется таким образом, чтобы оно работало на любом процессоре – от Pentium до Pentium 4, AMD и Cyrix;
• General setup – определяет основные свойства ядра: что оно сможет делать и какие типы устройств будет поддерживать. Здесь выбирается поддержка сети, шин PCI, EISA, MCA, PCMCIA-устройств, различных форматов исполняемых файлов и т. п;
• Binary emulation of other systems – определяет, для каких операционных систем поддерживается выполнение бинарных файлов. В основном, это поддержка бинарных файлов для UnixWare, Solaris, SCO Unix;
• Memory Technology Devices (MTD) – данные устройства (твердотельные накопители) для нас еще достаточно экзотичны;
• Parallel port support – отвечает за поддержку ядром параллельного порта;
• Plug and Play configuration – поддержка Plug and Play, в том числе и ISA-устройств;
• Block devices – определяется поддержка различных блоковых устройств и контроллеров, в том числе дисководов, жестких дисков старого (XT) типа или жестких дисков, подключаемых к параллельному порту. Здесь же включается поддержка Loорback-устройства, сетевого блочного устройства и диска, создаваемого в оперативной памяти (RAM Disk). С последним надо быть очень аккуратным, как вы знаете, он используется при загрузке операционной системы;
• Multi-device support (RAID and LVM) – включается поддержка RAID-устройств и LVM (управление массивом дисков);
• Networking options – поскольку одним из важнейших назначений для операционной среды Linux является работа с сетью, то, наверное, половина параметров ядра тем или иным образом касается сети. Здесь определяются различные сетевые параметры – используемые сетевые протоколы, сетевая маршрутизация, конфигурирование виртуального сервера и многое другое;
• Telephony Support – отвечает за поддержку плат IP-телефонии – специализированных устройств для преобразования телефонного звонка в цифровое представление и обратно. Подавляющее число пользователей вряд ли даже знают названия этих карт, не говоря уже об использовании;
• ATA/IDE/MFM/RLL support – определяются поддерживаемые устройства и контроллеры ATA/IDE, а так же устаревшие устройства MFM/RLL. Здесь же есть параметры для исправления ошибок различных чипов контроллеров ATA/IDE, большей частью времен 386 и 486 процессоров. Поскольку у большинства пользователей в компьютере присутствует хотя бы одно устройство ATA/IDE – нужно быть очень внимательным при конфигурировании этого раздела. В этом же разделе включается поддержка модных ныне аппаратных контроллеров IDE RAID;
• SCSI support – определяет поддержку SCSI-устройств и контроллеров. Поскольку SCSI-устройства сложнее IDE-устройств, и каждый производитель контроллеров старался «отличиться», этот раздел получился большим и несколько запутанным. Здесь определяется поддержка дисков, ленточных накопителей, CD-ROM и RAID-массивов;
• Fusion MPT device support – поддержка устройства Fusion MPT – объединенного высокоскоростного SCSI-адаптера и сетевого интерфейса. Работает по протоколу Ultra 320 или Fibre Channel;
• IEEE 1394 (FireWire) support (EXPERIMENTAL) – поддержка контроллеров FireWire;
• 120 device support – поддержка Intelligent Input/Output. Используется для ввода/вывода без участия процессора;
• Network device support – поддержка различных сетевых устройств, в том числе протокола РРР, SLIP, оптических устройств, беспроводных сетей и т. п.;
• ARCnet devices – протокол и устройства, разработанные достаточно давно. Практически вышли из употребления;
• Appletalk devices – устройства для сетей Appletalk фирмы Apple. В России широкого распространения не имеют;
• Ethernet (10 or 100Mbit) – поддержка сетевой карты Ethernet. Представлены карты и семейства карт различных производителей, работающие на скорости 10 или 10/100 Мбит;
• Ethernet (100 Mbit) – представлены сетевые карты Ethernet, работающие на скорости 100 Мбит;
• Wireless LAN (non-hamradio) – осуществляется поддержка устройств типа Radio Ethernet;
• Token Ring devices – устройство, разработанное фирмой IBM достаточно давно. Большого распространения (по крайней мере у нас) не получило. Сегодня практически не используется;
• Wan interfaces – поддержка интерфейсов глобальных сетей;
• ATM drivers – поддержка для ATM-сетей. Очень распространены в США для организации связи на большом расстоянии;
• Amateur Radio support – поддержка любительского радио. Не представляет интереса для подавляющего числа пользователей (если вы, конечно, не радиолюбитель);
• IrDA (infrared) support – поддержка устройств и инфракрасных портов. Обычно используется для связи с портативными принтерами, органайзерами и мобильными телефонами;
• ISDN subsystem – поддержка ISDN-устройств. В основном используется для подключения к цифровым телефонным станциям;
• Old CD-ROM drivers (not SCSI, not IDE) – поддержка старых CD-ROM, работающих по специфическому протоколу. Подобные устройства не выпускаются с 1996 года (максимальная скорость устройств – 4х —6х);
• Input core support – поддержка USB Human Interface Device (в частности USB-клавиатуры и мыши);
• Character devices – поддержка символьных устройств: терминалов, последовательных портов и многопортовых контроллеров, аппаратных датчиков, мышей, джойстиков и манипуляторов, видеокарт и чипсетов;
• Multimedia devices – поддержка мультимедиа-устройств. В данном случае это платы TV– и FM-приемников, платы телетекста;
• Crypto Hardware support – поддержка устройств аппаратного шифрования (для закрытых учреждений);
• File systems – поддержка различных файловых систем (VFAT, Ext3, ISO 9660 и т. п.), сетевых файловых систем, поддержка квотирования дискового пространства для пользователей, типов разделов жесткого диска. Помимо этого, сюда же вынесена поддержка различных языковых кодировок;
• Console drivers – консольные драйверы, поддержка ряда видеокарт;
• Sound – поддержка звуковых карт. Из-за того, что до последнего времени не было единого стандарта на звуковой интерфейс, почти каждая карта была в своем роде уникальна;
• USB support – поддержка USB-контроллеров и устройств, в том числе Flash-накопителей, мышей, видеокамер и т. п.;
• Bluetooth support – поддержка нового Bluetooth-интерфейса (радиосеть);
• Kernel hacking – используется для отладки ядра операционной системы Linux.
Ссылки
• Red Hat Linux 7.2 The Official Red Hat Linux Customization Guide.
• The Linux Kernel on Red Hat Linux Systems – обновление ядра операционной системы.
• www.gnu.org/software/grub/ – домашняя страница GRUB.
• www.redhat.com/support/docs/howto/kernel-upgrade/kernel-upgrade.html – Upgrading.
• /usr/src/linux-2.4/Documentation – большой объем документации, посвященный ядру операционной системы Linux и ее модулям.
• Kernel-HOWTO (The Linux Kernel HOWTO) – описание конфигурирования и компиляции ядра