» Прошивки

Компиляция ядра из исходников своими руками

Ядро – это, по сути, сердце любой операционной системы, и мобильная ОС Android – не исключение. Любое программное обеспечение, которое выполняет абсолютно любые функции, перед каким-либо действием с оборудованием устройства, производит это через ядро операционной системы. Сегодня мы разберемся с компиляцией ядра самостоятельно из исходников.

Для компиляции понадобится установленная операционная система из семейства UNIX. Мы будем использовать Ubuntu 10.04 LTS – Long-Term Support 32 bit, установленную на виртуальную машину VMWare Workstation. Итак, всё скачано, установлено и работает стабильно. Приступим. Проверим, все ли компоненты присутствуют в системе – вдруг какие-то пакеты придется установить дополнительно. Выполняем запуск терминала:

В запущенном терминале вводим и выполняем следующую команду:

sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline5-dev gcc-multilib g++-multilib libc6-dev  x11proto-core-dev libx11-dev libz-dev gawk texinfo automake libtool cvs libsdl-dev

 

            Если верить последней строке на снимке экрана ниже, то всё в порядке, все пакеты присутствуют:

Тем не мене, у большинства пользователей, скорее всего не будет важного пакета sun-java6-jdk on Ubuntu 10.04 (Lucid). Для того, чтобы он загрузился автоматически, добавляем в адреса репозитория дополнительные ссылки вводом в терминал следующей команды:

sudo add-apt-repository «deb http://archive.canonical.com/ lucid partner»

 

            После этого вводим:

sudo apt-get update

sudo apt-get install sun-java6-jdk

 

Когда все пакеты будут скачаны и установлены, повторяем первую команду, так, чтобы она не отображала никаких ошибок. Теперь перейдем к следующему пункту. Потребуется исходный код ядра, в нашем случае речь идет о Samsung Galaxy I9000, и их можно найти на сайте http://opensource.samsung.com/, введя поисковой запрос «I9000»:

А конкретнее, нам нужен архив JPX GT-I9000_OpenSource_Froyo_update2.zip (211 Мбайт), поэтому делаем всё, как показано на скриншоте ниже и кликаем «Continue»:

Потребуется кросс-компилятор, при помощи которого будем осуществлять, собственно, сборку ядра:

Понадобится также initramfs.cpio.

Итак, весь загруженный инструментарий будет находиться в папке /home/пользователь/Загрузки. Снова запускаем терминал, предварительно добавив в клавиатуру русский язык и переключение раскладки. В терминал вводим поочередно команды:

cd Загрузки

ls

На экране наблюдаем следующее:

Разархивируем имеющиеся архивы. Для простоты, чтобы не вводить команду вручную, можно скопировать и вставить:

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

 

unzip GT-I9000_OpenSource_Froyo_update2.zip

 

tar -xf JS8_initramfs.tar

 

Теперь должны появиться каталоги GT-I9000_OpenSource_Froyo_update2, arm-2009q3 и файл JS8_initramfs.cpio.

Вводим команду смены директории:

            cd GT-I9000_OpenSource_Froyo_update2

 

            В данном каталоге наблюдаем два архива, как на скриншоте:

Производим распаковку:

tar xzf GT-I9000_Kernel.tar.gz

 

            Теперь появилась директория Kernel:

Конфигуратор не воспринимает кириллические символы, а потому JS8_initramfs.cpio переносим на один уровень выше:

Переходим в папку Kernel:

            cd GT-I9000_OpenSource_Froyo_update2/Kernel

 

            Внутри неё находится большое количество файлов и папок:

Вводим команду и выполняем её:

            make aries_eur_defconfig

 

Выполняем:

            make menuconfig

 

 

            Не меняем текущий раздел, выбираем «Enter»:

Теперь выбираем пункт «Initramfs source file(s)»:

Подтверждаем нажатием клавиши Enter, после чего вводим путь к файлу JS8_initranfs.cpio, который немногим раньше переносили в другое место:

Теперь нажимаем «Ok» -> «Exit» -> «Exit» -> «Yes»:

Запускаем, собственно, сам компилятор, при помощи следующей команды:

make ARCH=arm CROSS_COMPILE=/home/Имя_Пользователя/Загрузки/arm-2009q3/bin/arm-none-linux-gnueabi-

Компиляция будет длится 5-10 минут в зависимости от мощности центрального процессора в компьютере и других условий. Не обращаем внимания на различные предупреждения, которые могут возникать в процессе компиляции. Главное – отсутствие ошибок, впрочем, если они и возникнут, то компиляция будет прервана сама по себе:

Всё сделано!

Скомпилированное только что ядро можно найти в директории: /home/pawill/Загрузки/GT-I9000_OpenSource_Froyo_update2/Kernel/arch/arm/boot

Созданное ядро сжимаем в .tar-архив:

tar cvf My_Super_Puper_kernel.tar zImage

 

Теперь его можно прошить на наш смартфон Samsung Galaxy I9000 и в информации о ядре наблюдать следующее:

Желаем вам удачи в ваших экспериментах над программным обеспечением вашего Android-девайса!