Как собрать кастомное ядро для андроид

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

Ядро – это, по сути, сердце любой операционной системы, и мобильная ОС 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 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/пользователь/Загрузки. Снова запускаем терминал, предварительно добавив в клавиатуру русский язык и переключение раскладки. В терминал вводим поочередно команды:

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

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

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

tar -xf JS8_initramfs.tar

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

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

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

tar xzf GT-I9000_Kernel.tar.gz

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

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

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

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

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

Не меняем текущий раздел, выбираем «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-девайса!

Источник

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

Подготовка

Что нам потребуется
  • 64 битная система Linux (я использую Ubuntu 14.04)
  • Рутованый телефон/планшет/иной девайс на Android’е с процессором QUALCOMM
Подготовка системы

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

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

Качаем исходники

Идем на 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 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 из нашего девайса. Набираем в терминале на телефоне:

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

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

Читайте также:  Обнаружены наложения андроид как исправить zte

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

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

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

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

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

Источник

Как собрать кастомное ядро для андроид

Этот материал не претендует на абсолютную истину, может быть, что-то можно сделать проще и быстрее. Автор как знает, так и делает. Кроме того он не является большим экспертом в области nix-систем. Всё, что написано ниже, найдено на просторах интернета, в большинстве своём на не русскоязычных форумах, систематизировано и изложено на родном для автора языке — русском.

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

Сообщение отредактировал PaWill — 08.03.16, 14:54

Часть 1. Необходимые инструменты и исходники

Для компиляции ядра нам потребуется nix-подобная операционная система. Я использовал Ubuntu 10.04 LTS — Long-term support 32-bit, которую установил на виртуальную машину VMware Workstation. Где всё это добро скачать/купить, как установить мы здесь обсуждать не будем. Если вы это не смогли сделать самостоятельно или с помощью гугла, то читать эту статью для вас ещё рано (или уже поздно). 🙂
И так, у нас всё установлено и работает. Теперь проверим все ли необходимые компоненты присутствуют в системе, возможно какие то пакеты придётся доустановить.
Запускаем терминал:

В терминале вводим следующую команду [1]:

Судя по последней строке у меня все пакеты на месте:

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

После того как всё скачается и установится опять команда [1] пока не будет ошибок. Будем считать что с Ubuntu покончили.

Теперь нам потребуются собственно сами исходники ядра. Их можно найти на http://opensource.samsung.com/. В строке поиска вводим «I9000» и получаем:

Нас интересует JPX GT-I9000_OpenSource_Froyo_update2.zip (211 МБ), делаем как на скрине и жмём «Continue».

Ещё нам потребуется кросс-компилятор, которым будем собирать ядро:
http://www.codesourcery.com/sgpp/lite/arm/. nux-gnu.tar.bz2 (80 МБ)

И последнее что потребуется — это initramfs.cpio. Я выдрал его из JS8. Как это сделать расскажу как-нибудь отдельно.
JS8_initramfs.tar ( 2.64 МБ )

Пока всё, продолжение следует.

Сообщение отредактировал PaWill — 19.03.11, 19:38

Часть 2. Распаковка исходников

Всё что вы скачали будет находится в каталоге /home/имя_пользователя/Загрузки. У меня этот путь выглядит как:

Источник

С чего начать создание своего кастомного ядра на андроид?

Хочу попробовать собрать кастомное ядро для mi9 lite, ибо с ядрами там тухло. С чего начать, что почитать и т.д.? Все ссылки, которые я сам нашёл — старые. После подготовки машины идёт пункт «ищем исходники» и там ищут исходники для нексус устройств, которые легко найти. А что и где мне искать?

ищи исходники для mi9 lite в интернете

Хочу попробовать собрать кастомное ядро для mi9 lite, ибо с ядрами там тухло.

С поиска хоть какого-нибудь смысла в жизни начни, хобби там найди, например, на улицу выйди. Там глядишь и выяснится, что по телефону разговаривать надо, а не ядра собирать.

Девушку найди, сразу не до ядра станет.

Исходники ядра для твоего ми9, очевидно же.

Ну почему же? Как она помешает?

Так он же нашел — ядра собирать.

Ну так блин, есть же какие-то места, в которых обычно ищут. Алгоритмы поиска, сложнее, чем «kernel source mi 9 lite pyxis» в гугле.

Ну так из исходников надо же еще знать, как именно собрать.

Ну так из исходников надо же еще знать, как именно собрать.

Это следующая часть твоего квеста. Выполни сначала первую.
И вообще, как ты себе этот процесс представлял?
И зачем оно тебе вообще?

В чем твой детерминизм?

Ядро понятно где искать, на кернел.орг, ну а дальше все просто – накатываешь, патчишь, собираешь, тестируешь, собираешь, патчишь, тестируешь, накатываешь, собираешь…

Обычно отнимает время и внимание

Обычно всё что под gpl выкладывают на сайте производителя в разделе support.(но не все это делают)

В идеале алгоритм действий такой:

берешь ядро от производителя (по лицензии должен предоставить), сравниваешь с ядром точно той же версии с патчами Android, делаешь из этих отличий патч и адаптируешь его для свежайшего ядра с патчами Android (даже человеку не разбирающемуся в C должно быть видно куда вставлять изменения от производителя).

Только вот если ветка стухла и не обновляется, тут уже без навыков никак.

Это следующая часть твоего квеста. Выполни сначала первую.

вгуглускыр недавно клятвенно обещал что сольет в кернелл всё сильно андроид-зависимое. так что можно будет юзать ваниль напрямки… и придет в вселенную андроид щастье свежих ядер и обновляемых операционок.
но пока да, только вот так.

По состоянию на февраль 2018 года ядро Android имело около 32 000 дополнений и 1,5 тысячи удалённых фрагментов сравнительно с оригинальным Linux 4.14.0

это про размер андроид-патчика и вероятности допилинга грубым напильником нового ядра.

С чего начать создание своего кастомного ядра на андроид?

С осознания ненужности данной затеи и бессмысленности своего существования, если эта идея вообще пришла тебе в голову.

Так-то оно так, но через 20 лет Far на Линукс всё-таки портировали…

От чего он нормальным людям нужнее не стал.

Ну, это-то понятно. Я к тому, что при должных усилиях у ТС может получиться лет за 20. Нужнее его работа от этого не станет.

Запилить ванильное ядро для него и помочь проекту postmarketos

Источник

Читайте также:  Ttk tv для андроид
Оцените статью