Как собрать ядро linux под arm

Сборка ядра linux под arm процессор.

Операционная система linux часто используется  для встраиваемых (они же embedded)  устройств, которые в свою очередь часто построены на основе контроллеров с архитектурой ARM.

Исходный код

Скачать  исходный код ядра linux можно с http://git.kernel.org

Например, если использовать код из проекта project:

git clone git://git.kernel.org/pub/scm/project

Официальную версию можно взять тут:   http://www.kernel.org/pub/linux/kernel/v2.6/

После того как исходники будут скачаны, заходим в директорию с исходным кодом ядра linux.

Для того что бы отделить результат компиляции от исходного кода, создаем директорию build

mkdir ../build

Компилятор

Если мы собираемся компилировать  под  arm-процессор, то  нам нужен компилятор, т.е. toolchain, возьмем готовый от CodeSourcery http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

Распаковываем ( например в /home/user ):

tar -xf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

И устанавливаем переменную PATH:

export PATH=${PATH}:/home/user/arm-2009q3

Задаем переменные окружения для компиляции:

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-

Конфигурирование ядра linux

Если нужная конфигурация уже существует ( например arch/arm/configs/colibri_pxa320_defconfig ), то выполняем:

make colibri_pxa320_defconfig O=../build

Если необходимо создать свою конфигурацию ядра linux, или изменить существующую то запускаем:

make menuconfig O=../build

и выбираем необходимые опции. Опции могут быть  вкомпилированны в ядро или подгружаться как модули. В первом случае перед соответствующим пунктом  меню  отображается [*] , во втором [M].

Компиляция ядра linux

Что бы скомпилировать ядро надо выполнить команду:

make uImage O=../build

Когда сборка ядра linux будет закончена, оно  будет лежать в   ../build/arch/arm/boot/uImage

Сброка модулей ядра linux

Если какие-то опции ядра были включены как модули, то их тоже надо скомпилировать

mkdir /home/user/tmp/modules
make modules  O=../build/
make modules_install O=../build/ INSTALL_MOD_PATH=/home/user/tmp/modules

Что бы изменить  директорию (папку) в которую modules_install установит модули, указываем путь, используя переменную  INSTALL_MOD_PATH.

В дальнейшем, что бы положить модули ядра на устройство, надо просто скопировать,  все что лежит в  директории /home/user/tmp/modules в корень файловой системы устройства. При этом важно сохранить структуру каталогов,  самый просто способ — упаковать папку, а затем разархивировать ее на приборе.

 

Очистка проекта

Что бы удалить все файлы, созданные при компиляции:

make clean O=../build

Если же необходимо удалить файлы, полученные при конфигурации ядра linux, нам поможет Мистер Пропер :)

make mrproper O=../build

 

 

Запись опубликована в рубрике Встраиваемые системы с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>