Сборка ядра linux android

Сборка ядра для Android-устройств на примере Solid Kernel для LG e975

Установим необходимые пакеты. Набирем в терминале:

Нажимаем Enter и пишем далее:

apt-get install bison build-essential curl flex lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev git-core make phablet-tools gperf 
Качаем исходники

Идем на GitHub и скачиваем исходники (исходники для каждого девайса разные, поэтому ссылок давать не буду) архивом (в правой части экрана должна находиться кнопочка «Download ZIP»). Распаковываем архив в любое удобное место (у меня это папка /home/system-exe/Solid).

Качаем тулчейн. Переходим по ссылке, отмечаем галочкой нужный тулчейн (для меня это cortex-a15, зависит от ядер процессора) и нажимаем «скачать». Распаковываем скачанный архив в папку /home/%USERNAME%/Toolchain/Linaro-4.9.3 (вместо %USERNAME% подставляем имя учетки).

Выдираем файл конфигурации из девайса

Идем по пути /proc (на телефоне) и копируем файл config.gz на комп, распаковываем и получаем файл config, которые переименовываем по шаблону %устройство%_defconfig (у меня это e975_defconfig). Кладем получившийся файл по пути /home/%USERNAME%/Solid/arch/arm/configs

Сборка ядра

Заходим в терминал и набираем команду:

(таким образом мы перешли в папку с нашими исходниками)

make %устройство%_defconfig 

(у меня надо так: make e975_defconfig)

(здесь правим нужные значения конфигурации. Тут все предельно просто, думаю разберетесь.)

После завершения начинаем сборку:

Параметр -j8 нужен только если у вас многоядерный процессор. Цифра 8 определяет количество ядер(потоков, в случае с Intel i3, i5, i7 процессорами). К примеру у меня — Intel i7, он четырехядерный, но поддерживает два потока на каждое ядро, поэтому 2 * 4 = 8.

В конце должна появиться надпись «zImage is ready».

Идем по пути /home/%USERNAME%/Solid/arch/arm/boot и видим там наше ядро — zImage.

Тестирование

Теперь нам осталось заставить работать этот самый zImage на нашем устройстве.

А вот теперь трижды подумайте надо ли вам это? Уверены ли вы в своих силах и в том, что правильно собрали ядро?

Подумали? Уверены? Точно уверены? Тогда продолжаем.

Извлекаем boot.img из нашего девайса. Набираем в терминале на телефоне:

su dd if=dev/block/platform/. /by-name/boot of=sdcard/boot.img 

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Переносим boot.img, который лежит на карте памяти, на комп. Распаковываем его (в интернете есть множество описаний распаковки и запаковки boot.img), меняем оригинальный zImage на наш и собираем boot.img.

Читайте также:  Инструментальное по для linux

Закидываем наш собранный образ на карту памяти под именем new_boot.img
В терминале набираем:

su dd if=sdcard/new_boot.img of=dev/block/platform/. /by-name/boot 

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Перезагружаем девайс. Если телефон загрузился, то все сделано правильно, если — нет, то читаем инструкцию внимательней и пробуем снова.

Для отката в случае неудачи используем наш оригинальный boot.img, который надо было оставить на карте памяти. Для отката в терминале набираем:

su dd if=sdcard/boot.img of=dev/block/platform/. /by-name/boot 

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Эпилог

Как видно, ничего сложного в таком процессе, как сборка ядра системы для Android, нету. Не исключено, что может получиться даже с первого раза, но бэкап на всякий случай иметь нужно.

Источник

Строим Android x86

Существует множество задач, для которых требуется пересборка ядра и операционной системы Android в целом. Например, создание и отладка собственных модулей, включение поддержки профилирования системы и просто тестирование своих приложений на новой версии Android.
Возможность запуска Android x86 внутри виртуальной машины VirtualBox позволяет энтузиастам и создателям прошивок покопаться в настройках системы, настроить и пересобрать ядро и при этом не «кирпичизировать» настоящее устройство. VirtualBox предоставляет возможность использования привычных для Linux-разработчика средств отладки ОС. Для рядовых разработчиков Android-приложений отлично подходит эмулятор, использующий технологию Intel Hardware Accelerated Execution Manager. (подробнее можно прочесть здесь)
В статье приведен ряд практических советов по сборке образа Android x86 для запуска под виртуальной машиной VirtualBox и сборке эмулятора. Исходный код Android взят из официального репозитория проекта AOSP (Android Open Source Project), в качестве ядра использована адаптированная версия ядра Linux 2.6 от Intel.

Установка окружения для сборки

Для сборки Android потребуется 64 битная версия Linux. Еще один важный момент: обратите внимание на версию GCC, которая установлена на системе. Google поддерживает версию GCC 4.4 и выше. Так же на системе должна быть установлена реализация Java от Oracle.
Установка дополнительных зависимостей для Ubuntu 12.04:

sudo -i apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so 

Загрузка дерева исходных кодов

Установка Repo

Repo — утилита управления репозиториями, упрощающая работу с Git для Android. Более подробную информацию можно прочесть здесь (http://source.android.com/source/version-control.html)
Для установки, инициализации и настройки Repo выполните следующие шаги:
• Убедитесь, что у вас есть директория bin в вашем домашнем каталоге и она прописана в PATH:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo 
Инициализация Repo клиента

После установки Repo, настройте доступ к репозиториям исходных кодов Android:
• Создайте пустую директорию для исходных файлов и перейдите в нее. Например, это может выглядеть так:

repo init -u https://android.googlesource.com/platform/manifest 

Эта команда подключит ветку master из дерева исходных кодов Android. Вы можете указать любую другую, используя ключ -b:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6 
git --git-dir .repo/manifests/.git/ branch -a 

Загрузка файлов

Сборка ядра

Android разработан прежде всего для устройств, управляемых жестами и он не поддерживает мышь по умолчанию. Поэтому, в качестве примера, пересоберем ядро из исходников с включенной поддержкой мыши.
Создадим директорию для хранения исходников ядра:

mkdir ~/android_kernel cd ~/android_kernel 
wget http://software.intel.com/sites/landingpage/android/Intel_x86_sysimg_2.3.7_Source_Files.zip unzip Intel_x86_sysimg_2.3.7_Source_Files.zip tar -xvf kernel_sdk_x86.tar.gz 

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

cp arch/x86/configs/vbox_defconfig .config make ARCH=x86 menuconfig 

image

Через несколько секунд загрузится графическое меню настройки ядра. Стрелками «вверх», «вниз» вы можете передвигаться по пунктам меню, «Enter» чтобы зайти в подменю. Все точно так же как с обычным ядром Linux.

Читайте также:  Gnu linux distribution timeline

Чтобы включить поддержку мыши:
• Зайдите в «Device Drivers»
• Выберите «Input device Support»
• Отметьте «Mice»
Вы можете зайти в подменю «Mice» и посмотреть дополнительные настройки драйверов.
Затем выйдите из меню конфигурации ядра. Это можно сделать с помощью нескольких нажатий на «Esc». Не забудьте сохранить настройки, когда меню конфигурации предложит это сделать.
Сделав необходимые настройки ядра, соберем его. Это не займет много времени, особенно если вы используете многоядерную машину — можете указать опцию команды make: -j N, где N — число ядер (например, для написания статьи использовалась make -j 32).

Kernel: arch/x86/boot/bzImage is ready 
Подмена ядра
grep "LOCAL_KERNEL : bash">LOCAL_KERNEL := prebuilt/android-x86/kernel/kernel-vbox 
cp ~/kernel/arch/x86/boot/bzImage ~/aosp/prebuilt/android-x86/kernel/kernel-vbox 

Построение Android

Теперь все готово к тому, чтобы начать компиляцию исходников Android. Первым шагом необходимо указать цель для сборки:

============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.1.1 TARGET_PRODUCT=vbox_x86 TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=x86 TARGET_ARCH_VARIANT=x86 HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-2.6.32-131.0.15.el6.x86_64-x86_64-with-redhat-6.1-Santiago HOST_BUILD_TYPE=release BUILD_ID=JRO03R OUT_DIR=out ============================================ 

Затем необходимо запустить сборку исходников командой make. Хорошим тоном считается сохранять лог сборки, это можно сделать с помощью утилиты tee.

make –j 16 | tee vbox_build.log 

Процесс сборки может занять значительное время, конкретные цифры зависят от мощности центрального процессора и объема оперативной памяти машины. На системе, которая использовалась для подготовки статьи это заняло около часа. Рекомендуемое число потоков для сборки можно определить из расчета 2GB оперативной памяти на поток.
При успешной компиляции, последняя строка вывода будет содержать путь и размер образа:

Install system fs image: out/target/product/vbox_x86/system.img out/target/product/vbox_x86/system.img+ total size is 268435456 
Done with VirtualBox bootable installer image -[ out/target/product/vbox_x86/installer.vdi ]- 

Настройка VirtualBox

Теперь приступим к настройке VirtualBox. Необходимо создать новую виртуальную машину, назовем ее “Android_ICS”, выберем Linux в качестве операционной системы, а версию выставим Other, как наиболее подходящую для Android.
image
Следующий шаг – выделение оперативной памяти. Рекомендуется 512 мегабайт и больше. В нашем случае это будет гигабайт.
image
Далее настраивается размер жесткого диска. Главное, чтобы после завершения настройки все жесткие диски VirtualBox были подключены к контроллеру IDE.
Установим загрузочный образ Android в качестве второго раздела нашей виртуальной машины.
image
При первом запуске виртуальной машины нам необходимо запустить установку Android. Во время старта нажмите F12, чтобы зайти в меню настроек BIOS. Выберете 2 “Primary Slave”, именно там и содержится установочный образ Android.
В случае успешной установки вы увидите «Done processing installer config». Иногда при первой установке могут возникнуть ошибки, просто запустите ее еще раз. Затем перезагрузите виртуальную машину в свой только что установленный Android!
image

Читайте также:  Настройка домена alt linux

Эмулятор Jelly Bean

Сборка эмулятора мало чем отличается от сборки версии для VirtualBox. Если у вас уже есть исходные коды, то приступайте к сборке с шага инициализации окружения. Для чистоты эксперимента, будет процесс постройки эмулятора будет изложен с самого начала. Поэтому создадим отдельную директорию для Jelly Bean Emulator и повторим уже знакомые шаги.

repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6 
============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.1.1 TARGET_PRODUCT=full_x86 TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=x86 TARGET_ARCH_VARIANT=x86-atom HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-2.6.32-131.0.15.el6.x86_64-x86_64-with-redhat-6.1-Santiago HOST_BUILD_TYPE=release BUILD_ID=JRO03L OUT_DIR=out ============================================ 
make –j 16 | tee emulator_build.log 
cd kernel cp arch/x86/configs/goldfish_defconfig .config make ARCH=x86 -j16 

Например, можно запустить с только что собранным ядром, с разрешением 480×800, объемом оперативной памяти 512 мегабайт и включенным аппаратным ускорением графики.

emulator -kernel ~/kernel/arch/x86/boot/bzImage -skin WVGA800 -memory 512 -gpu on 

image

Более подробно о возможностях и настройках эмулятора можно прочитать здесь

Заключение

В данной статье рассмотрен способ установки Android x86 версии Jelly Bean для VirtualBox, сборка кастомизированного ядра и эмулятора. Существует множество разных трюков и подходов к постройке и настройке различных версий Android, которые остались за пределами данной статьи. Здесь был изложен базовый материал для того, чтобы начать свой путь в мир OS Android.

Источник

Оцените статью
Adblock
detector