Skip to content

Latest commit

 

History

History
67 lines (58 loc) · 6.25 KB

KernelBuild.wiki

File metadata and controls

67 lines (58 loc) · 6.25 KB

  1. summary Сборка ядра (на примере SK-MAT91SAM9G45)

Table of Contents

Введение


Ядро может собираться как отдельно, так и в составе [QtBuildroot]. В некоторых случаях, отдельная сборка может оказаться удобнее. Описана сборка ядра 3.7.10 для платы SK-MAT91SAM9G45.

Подготовка исходников ядра к сборке

После скачивания исходников ядра с ftp.kernel.org их следует подготовить к работе. Особенность такова, что для не x86 требуется корректировка конфигурации в исходниках. Речь о так называемых board-файлах в каталоге arch. Для SK-MAT91SAM9G45 почти подходит arch/arm/mach-at91/board-sam9m10g45ek.c. Файл надо исправить по образцу того, что находится в прилагаемом к плате. Мне были нужны работающие SD, NAND, сетевая карта и USART (ttyS1-ttyS3). USB и RS-232, выведенный на разъём DB9 (ttyS0), работают без исправлений. Кому этого достаточно, могут воспользоваться готовым патчем linux-3.7.10-SK-MAT91SAM9G45.patch. Патч копируется в корень дерева исходников ядра, после чего выполняется команда

Кроме того, патч отключает вывод предупреждения "atmel_nand: Fall back to CPU I/O".
До или после корректировки board-файла следует выполнить начальное конфигурирование исходников:

После этого можно приступить к донастройке конфигурации ядра под свои нужды:

Можно воспользоваться моим конфигом в качестве примера: config-3.7.10-SK-MAT91SAM9G45-example. Конфиг следует скопировать в корень дерева исходников и переименовать в ".config". Если конфиг будет применяться к более новому ядру, следует, после переименования, выполнить

и сделать выбор для дополнительно появившихся опций, если они будут.

Сборка ядра

Предполагается, что в переменной PATH уже присутствует путь к [CrosstoolNg] и *mkimage* из [UBoot]. Следует обратить внимание на то, что *mkimage* - удобное имя, и в системе может оказаться другое приложение с аналогичным названием. В этом случае, можно скорректировать переменную PATH для пользователя, из-под которого производится сборка, или принять какие-то другие меры. Сборку можно выполнить следующей командой:

CROSS_COMPILE - это префикс тулчейна, который получился после сборки [CrosstoolNg]. В случае успешной сборки ядра, в каталоге arch/arm/boot будет лежать готовое ядро uImage, пригодное к загрузке как с SD-карты, так и из NAND на плате, с нижеописанными нюансами.

Настройка параметров загрузки ядра

При загрузке с разных носителей ядро должно использовать разные строки параметров.
Пример для NAND:

Пример для SD:

Строку параметров можно задать как в ядре, в момент конфигурирования, так и в загрузчиках [Bootstrap] и [UBoot]:

Выбор "Use bootloader kernel arguments if available", как раз, позволяет иметь одинаковое ядро, но при условии, что правильная строка передаётся из загрузчика. Если же хочется использовать строку "Default kernel command string", необходимо или выбрать "Always use the default kernel command string", или отключить передачу параметров загрузки из загрузчика.