Рубрикатор:
|
Публицистика

Компиляция ядра Linux - произвольное конфигурирование ядра операционной системы и всей системы в целом для удовлетворения потребностей пользователя.
Этапы компиляции:
-
Приобретение исходников ядра:
Исходники нужной версии ядра можно найти найти на ftp://ftp.kernel.org. Для того что бы найти ядро нужной версии необходимо перейти в каталог /pub/linux/.
Скачав нужное ядро, оно помещается в директорию /usr/src. В той же директории создается каталог для файлов ядра, обычно принято называть данный каталог: linux-2.X.X,где X.X версия ядра. Если каталог предварительно существует то нужно его удалить.
-
Подготовка:
После успешного завершения этапа приобретения исходников, нужно подготовить дерево каталогов для файлов ядра.
Если linux-2.X.X.tar.gz, то вводится код Bash
tar xzvf linux-2.X.X.tar.gz
Если linux-2.X.X.tar.bz2, то:
bzcat linux-2.X.X.tar.bz2 | tar xfv
При выполнении этих команд содержимое файлов развернется в необходимый каталог. После этого выполняется команда cd, для перехода в каталог linux.
Для начала компиляции нового ядра нужно выполнить команду:
make mrproper
После этого производится непосредственно конфигурирование ядра для своих потребностей.
-
Настройка ядра
Для настройки ядра необходимо выполнить команду make config , которая запускает скрипт настройки, пытающийся в режиме диалога с пользователем настроить конфигурацию будущего ядра. При работе в системе X Window, можно использовать make xconfig , если установлен интерпретатор Tk. В текстовой консоли можно использовать make menuconfig , обеспечивающий текстовый интерфейс конфигуратора.
При ответах на вопросы, задаваемых конфигуратором ядра, обычно используют `y' (да) или `n' (нет). Драйвера устройств могут также иметь опцию `m'. Это означает ``module (модуль)'', предполагая, что система будет компилировать этот драйвер, но не вставит его прямо в ядро, а сделает загружаемым модулем. Загружаемый модуль - это часть кода ядра, которая не включена прямо в ядро. Такие модули компилируются отдельно и затем могут быть вставлены в запущенное ядро практически в любое время.
Основные параметры настройки ядра:
Эмуляция математических функций ядром:
Если в компьютере отсутствует математический сопроцессор (например, 386 или 486SX), то на этот вопрос необходимо ответить `y'. Если же есть математический сопроцессор, то он будет использоваться по умолчанию, то есть независимо от ответа эмуляция будет проигнорирована. Единственное следствие использования эмуляции в том, что размер ядра и использование памяти будут больше.
Эмуляция существенно отражается на производительности графики в X Window.
Поддержка обычных дисков (типа MFM/RLL) и дисков/cdrom IDE:
Наличие этой опции означает, что ядро будет поддерживать стандартные жесткие диски для PC, которые устанавливаются в большинстве компьютеров.
Соответствующий драйвер не включает поддержку SCSI дисков; для этого существует отдельная опция настройки.
Затем выбирается тип драйвера: ``old disk-only'' (поддержка только старых дисков типа MFM/RLL) и ``new IDE'' (новых дисков типа IDE).
Основное отличие в том, что драйвер старых дисков поддерживает только два диска на одном интерфейсе, а драйвер новых - поддерживает вторичный (secondary) интерфейс и накопители IDE/ATAPI cdrom. Новый драйвер на 4k больше старого, и он может существенно улучшить производительность диска, особенно если имеется новое оборудование (типа EIDE).
Поддержка сети:
Необходимо ответить `y', если машина подключена к локальной сети, или если имеется необходимость использовать пакеты SLIP, PPP, term и т.п. для доступа к сети internet по dialup. Кроме того, многие пакеты (например, оконная система X Window) требуют наличия поддержки сети, поэтому даже если нет подключения ни к какой сети, необходимо ответить `y'. Далее будет задан вопрос о включении поддержки TCP/IP; стоит ответить `y'.
Ограничить память размером до 16MB:
Существуют контролеры DMA, работающие с ошибками на машинах с процессором 386. Проблема состоит в ошибках адресации ОЗУ больше 16 Мб; можно ответить `y', если имеется именно такой контроллер. System V IPC Данная опция включает в ядро средства IPC (Interprocess Communication). Эти средства предоставляют механизм, позволяющий процессу общаться с другими процессами, так что здесь рекомендуется ответить `y'. Тип процессора (386, 486, Pentium, PPro...) Эта опция позволяет внести некоторую оптимизацию ядра для выбранного типа процессора; ядра работают быстрее, но ядро может быть несколько больше. Современные ядра обязательно требуют определения типа процессора, для которого компилируется ядро. Ядро для Intel386 будет работать на всех машинах.
Поддержка SCSI:
Если есть устройства с интерфейсом SCSI, стоит ответить `y'. Конфигуратор потребует дополнительную информацию о поддержке CD-ROM, дисков, а также о типе адаптера SCSI.
Поддержка сетевых адаптеров:
Если есть сетевая карта, или необходимо использовать SLIP, PPP, или адаптер параллельного порта для подключения к Internet, ответ - `y'.
Скрипт настройки запросит тип карты и перечень протоколов, которые будут необходимы.
Файловые системы:
Конфигуратор спросит, поддержку каких файловых систем вы хотите иметь в своей системе. Поддержка файловой системы позволит монтировать разделы диска с разными файловыми системами в единое дерево /. Поддерживаются следующие основные типы файловых систем:
Стандартная (minix)
Современные дистрибутивы не создают файловые системы типа minix, поэтому она не часто встречается, но ее полезно включить. Дело в том, что некоторые программы с дисками для восстановления (rescue disk) могут использовать ее, поскольку файловая система minix хорошо подходит для использования на гибких дисках.
Extended fs
Это первая версия расширенной файловой системы для Linux, которая сейчас уже не является широко используемой
Second extended и Third extended (ext2 и ext3)
Эти файловые системы широко используются в новых дистрибутивах.
Файловая система xiafs
Была достаточно широко распространена ранее, но сейчас практически не используется.
msdos
При необходимости использования разделов жесткого диска с MS-DOS, или монтирования гибких дисков, отформатированных под MS-DOS, то стоит ответить `y'.
umsdos
Эта файловая система расширяет возможности файловой системы MS-DOS обычными Unix-подобными возможностями, такими как длинные имена.
/proc
Это интерфейс в виде файловой системы к ядру и процессам. Много программ, выдающих список процессов (таких как `ps') используют эту систему. Некоторые командные процессоры (в частности rc) используют /proc/self/fd (известный как /dev/fd в других системах) для ввода/вывода.
ISO9660
Эта файловая система создается на большинстве CD-ROM.
Кроме этого, в ядро постоянно добавляются драйвера для других файловых систем, так что список может быть расширен.
Символьные устройства:
В этом разделе выбираются драйвера для принтера (параллельного принтера), мыши (многие ноутбуки используют протокол мыши PS/2 для своих встроенных трекболов), некоторых накопителей на магнитной ленте и других "символьных" устройств.
- Очистка и создание зависимостей
Когда скрипт конфигурирования закончит свою работу, он сообщит, что необходимо выполнить действия:
make dep
и
make clean
Первое действие обеспечит проверку того, что все зависимости для ядра, такие как файлы заголовков (header files) соответствующие всем выбранным драйверам, находятся на месте. Эта процедура завершается достаточно быстро. После ее окончания выполняется `make clean'. Эта процедура удаляет все объектные файлы и некоторые другие вещи, оставшиеся от предыдущей компиляции ядра.
- Этап компиляции:
После выполнения dep и clean, выполняется `make zImage' или `make zdisk' (эта часть процесса занимает длительное время). make bzImage скомпилирует ядро и оставит в директории arch/i386/boot файл, названный `bzImage'. Это новое сжатое ядро. make zdisk делает тоже самое, но помещает новый файл zImage на гибкий диск, который вставляется в устройство ``A:''. `zdisk' является довольно удобной опцией для тестирования новых ядер; если новое ядро не загружается (или просто работает неправильно), то вытаскивается дискета из дисковода и происходит загрузка со старым ядром. Это может пригодиться и при случайном удалении ядра.
Все ядра обычно являются сжатыми, поэтому они имеют букву `z' в начале имени. Сжатое ядро автоматически разжимается при выполнении.
- Перемещение ядра:
После завершения процесса сборки необходимо инсталлировать как ядро, так и его map-файл в каталог, где они будут постоянно находиться (/boot). Копируется файл System.map в каталог /boot, добавив номер версии ядра в конец строки:
cp System.map /boot/System.map-2.X.X
Затем точно копируется и само ядро:
cp /arch/i386/boot/bzImage /boot/bzImage-2.X.X
-
Обновление конфигурации загрузчика:
Если в качестве загрузчика системы был выбран GRUB, необходимо изменить файл /boot/grub/menu.lst.
Конфигурация старого ядра:
title OS Title root (hd0,0) kernel /boot/vmlinux-2.6.30... rott=/dev/sda3 initrd /boot/initrd.img-2.6.30
Добавить такую же секцию, но с новым ядром:
title OS Title root (hd0,0) kernel /boot/vmlinux-X.X rott=/dev/sda3 initrd /boot/initrd.img-2.X.X
где X.X версия нового ядра.
Используемые источники:
- http://linux.xlibs.net/2006/11/20/howto-compile-a-kernel-the-ubuntu-way/
- http://pingvinus.ru/note/linux-kernel-compile
- http://skif.bas-net.by/bsuir/admin/node28.html
|
|