Сборка ядра 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