8.1 Сборка ядра

Предыдущая  Содержание  Следующая V*D*V

Система сборки ядра (более популярный термин для неё это kbuild) поставляется вместе с исходниками ядра. Система kbuild основана на make от GNU; следовательно, все передаваемые команды предназначены для make. Механизм kbuild даёт весьма простую процедуру создания сборки ядра; сконфигурировать и собрать ядро и модули можно всего за несколько шагов. Также, она очень расширяема, в том смысле, что добавление своих собственных команд в процедуру сборки или настройка под себя процесса конфигурации является очень простым делом.

В процедуре kbuild ядра версии 2.6 произошли некоторые существенные изменения. Так что эта глава объясняет процедуры сборки ядра как версии 2.4, так и версии 2.6. Сборка ядра состоит из четырёх шагов:

 

1.Настройка среды кросс-разработки: поскольку Linux имеет поддержку многих архитектур, процедура kbuild должна быть настроена на архитектуру, для которой собираются образ ядра и модули. По умолчанию среда сборки ядра собирает образы для машины, на которой происходит сборка.

2.Процесс конфигурации: это процедура выбора компонентов. С помощью этого шага может быть указан список какое программное обеспечение должно войти в ядро, а какое может быть скомпилировано в виде модулей. В конце этого шага kbuild записывает эту информацию в набор известных файлов, так что остальные части kbuild знают о выбранных компонентах. Объектами при выборе компонентов обычно являются:

a.Выбор процессора

b.Выбор платы

c.Выбор драйверов

d.Некоторые общие параметры ядра
Для процедуры конфигурации существует много внешних интерфейсов; ниже перечислены те, которые могут быть использованы для ядер версии 2.4 и 2.6.

a.make config: это сложный способ настройки, потому что это заставило бы выбирать компоненты на вашем терминале.

b.make menuconfig: это внешний интерфейс на базе curses для процедуры kbuild, показанный на Рисунке 8.1. Его удобно использовать на машинах, которые не имеют доступа к графическому дисплею; однако, для его работы вы должны установить библиотеку разработки ncurses.

c.make xconfig: это графический интерфейс для процесса конфигурации, показанный на Рисунке 8.2. Версия 2.4 использовала X, в то время как версия 2.6 использует QT. Есть ещё одна версия для 2.6, которая использует GTK и вызывается запуском make gconfig.

d.make oldconfig: часто вы хотели бы сделать минимальные изменения в существующей конфигурации. Эта опция позволяет  сборке сохранить параметры по умолчанию из существующей конфигурации и запрашивать только новые изменения. Эта опция очень полезна, когда вы хотите автоматизировать процедуру сборки с помощью сценариев.

3.Сборка объектных файлов и их компоновка, чтобы создать образ ядра: после завершения выбора компонентов для  сборки ядра необходимы следующие шаги:

a.Для ядра версии 2.4 с помощью команды make dep должна быть создана информация о зависимостях из заголовочных файлов (какой файл .c зависит от какого файла .h). В ядре версии 2.6 в этом необходимости нет.

b.Тем не менее, шаг очистки является общим для ядер обоих версий, 2.4 и 2.6; команда make clean очищает сборку от всех объектных файлов, образа ядра и всех промежуточных файлов, но сохраняет информацию о конфигурации. Существует ещё одна команда, которая делает всю это очистку вместе с очисткой конфигурации: это команда make mrpoper.

c.Последним шагом является создание образа ядра. Если вы просто наберёте команду make, то на выходе получите образ ядра с названием vmlinux. Тем не менее, сборка ядра на этом не останавливается; как правило, выполняются некоторые постобработки, которые необходимо сделать, чтобы, например, сжать его, добавить код начальной загрузки, и так далее. Именно постобработка создаёт образ, который может быть использован на целевой платформе (постобработка не стандартизирована, поскольку она варьируется в зависимости от платформы и используемых загрузчиков).

4.Сборка динамически загружаемых модулей: работу по созданию модулей выполнит команда make modules.

 

Рисунок 8.1 Конфигурация ядра на базе curses.

Рисунок 8.1 Конфигурация ядра на базе curses.

 

Рисунок 8.2 Конфигурация ядра на базе X

Рисунок 8.2 Конфигурация ядра на базе X.

 

Чтобы использовать kbuild для сборки ядра, конечному пользователя достаточно перечисленных выше команд. Однако, в случае встраиваемых системах вы бы захотели более глубокой настройки процесса сборки для себя; некоторые причины указаны ниже.

 

Вы можете захотеть добавить свой BSP в отдельный каталог и изменить конфигурацию так, чтобы kbuild собирал компоненты программного обеспечения, необходимые для вашей платы.

Вы можете захотеть добавить к процессу сборки свой собственный компоновщик, компилятор и флаги ассемблера.

Вы можете захотеть настроить постобработку образа ядра, после того, как оно будет собрано.

Вы можете захотеть добавить в kbuild дополнительные возможности выбора, чтобы выполнять сборку всей системы.

 

По этим причинам в следующем разделе будем вдаваться в тонкости процесса сборки.

 

Предыдущая  Содержание  Следующая