Редактирование ядра Андроид: лучший способ
Всем привет! Нужно отредактировать ядро Андроид 3.10. Файл boot.img. есть. Magiskboot позволяет отредактировать ramdisk прямо в телефоне, но нигде не упоминается о том, что этим инструментом можно повлиять на kernel config.
говорится о возможности редактирования ядра Clang:
ядро можно собирать компилятором Clang благодаря подготовленным проектом LLVMLinux патчам.
Подскажите, пожалуйста, оптимальный (и самый простой способ ) отредактировать kernel config, и ссылку на внятную для новичка статью на эту тему.
Перемещено hobbit из general
AnonimKA
07.06.23 03:25:28 MSK
- Ответить на это сообщение
- Ссылка

нигде не упоминается о том, что этим инструментом можно повлиять на kernel config
Потому что это невозможно. Конфигурация ядра задается во время его компиляции.
Подскажите, пожалуйста, оптимальный (и самый простой способ ) отредактировать kernel config
Пересобрать его из исходников. Для начала тебе стоит запросить у производителя твоего телефона исходный код ядра, в соответствии с лицензией GPLv2.
a1ba ★
( 07.06.23 04:12:15 MSK )
Последнее исправление: a1ba 07.06.23 04:12:26 MSK (всего исправлений: 1)
- Ответить на это сообщение
- Показать ответы
- Ссылка
Ответ на: комментарий от a1ba 07.06.23 04:12:15 MSK
Это исходный код ядра, boot.IMG которого (найден тоже в интернете) прошивается через twrp. Вопрос: как инструментом его лучше собирать?
AnonimKA
( 07.06.23 13:30:39 MSK ) автор топика
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от AnonimKA 07.06.23 13:30:39 MSK
Вот эта инструкция будет работать (OS Android 12), проживать хочу на Linux Debian?
AnonimKA
( 07.06.23 13:33:18 MSK ) автор топика
- Ответить на это сообщение
- Ссылка

Жесть какая. Не ходите дети в Африку гулять.
Как уже сказали, нужны исходники ядра. Но не просто ванильные (с kernel.org), а от производителя. Тут если очень повезет, то найдутся у производителя железки на его сайте. Либо BSP какое подойдет для плат на этом SoC (system on chip) — часто производители железок берут схему из оценочной борды почти без изменений. Там будет и какой-то конфиг под эту борду/семейство, но не факт, что все заработает с этим конфигом. Производитель телефона может поставить другую камеру, аудио и т.д. + Под конкретную embedded-железку (в отличие от PC) нужен файл описания устройств DTS. + Патчи ядра от производителя телефона. Даже со всем этим 90% что сразу не взлетит, а окирпичить девайс легко. Опять же с u-boot не все гладко может пойти.
Старый конфиг из текущего ядра вынуть практически невозможно. Если только ядро не было собрано с такой опцией, хранить в себе и показывать в /proc/config кажется, что очень маловероятно.
Какой нафиг CLang?! make, gcc кросс-средства для ARM, куча утилит. Долго объяснять.
Потренировались бы для начала собрать ядро для ПК своего на x86, потренировались бы на каких OrangePi, чтоб вкурить что к чему.
И, судя по версии ядра 3.1 в телефоне что-то типа Android 2.3 или из тех же времен (2012-й?). Вы чего добиться хотите обновлением ядра? Андроид от этого свежее не станет, а новый собрать из AOSP это еще тоже задача отдельная, опять же со всякими патчами от производителя телефона, которых 100% в 2023-м не найти.
bugs-bunny ★
( 07.06.23 21:00:16 MSK )
Последнее исправление: bugs-bunny 07.06.23 21:19:25 MSK (всего исправлений: 2)
- Ответить на это сообщение
- Показать ответы
- Ссылка
Делаем свое кастомное ядро

Кастомные ядра — настоящее раздолье для юзера. С их помощью вы можете полностью настроить смарт под себя — что вам нужно? Невероятная скорость и плавность или максимальная экономия энергии? Конечно, на первых порах прошить ядро довольно сложно, хотя что там — даже поставить рекавери очень непростая задача для новоиспеченного андроид-юзера. Думаю, многие интересовались тем, как делают такие ядра, да и как вообще самому сделать нечто похожее? Если вы относитесь к этому числу — эта статья для вас!
Подписывайтесь на наш Телеграм
Внимание! Статься содержит зубодробительное кол-во картинок и мозговзрывающий контент!
Если вы все-таки решились попробовать себя в шкуре ядродела, то наверняка будете озадачены кол-вом подобных инструкций. Многие из них написаны на английском, да и процесс компилирования ядра проходит с помощью Google NDK (в том числе инструкция на 4PDA). В моей же статье описано все о сборке и компилировании ядра с помощью довольно популярного тулчейна — Linaro 4.9.1. На самом деле уже давно как в свет вышел новый Linaro 4.9.2, но он довольно сырой(по крайней мере отвратительно работает на Nexus 5)
Все что нам потребуется для сборки ядра:
- Исходники стокового ядра
- Стоковый рамдиск
- Любой Linux дистрибутив(рекомендую Ubuntu 14.04LTS)
- Тулчейн(Linaro)
- Желание и стремление к созданию ядра
Итак, первым делом нужно установить необходимые для сборки пакеты:

Чтобы получить необходимые пакеты прописываем следующие комманды(просто скопируйте весь список и вставьте в терминал с помощью комбинации Shift+Ins) —
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind libreadline-gplv2-dev gcc-multilib g++-multilib libc6-dev x11proto-core-dev libx11-dev gawk texinfo automake libtool cvs

Как видим, все необходимые пакеты установлены. Настройка ОС завершена — переходим к следующему пункту — скачивание исходников.
Исходники моего устройства находятся по адресу android.googlesource.com/kernel/msm

Здесь также находятся исходники для N4, N7 2013. Если у вас устройство линейки Nexus — смотрите таблицу выше. Если же у вас другое устройство — ищите исходники на соответствующих ресурсах производителя.
Чтобы получить исходники достаточно прописать комманду
git clone https://android.googlesource.com/kernel/msm
После того как вы скачали исходники нужно взять необходимый бранч. Для этого заходим в папку с исходниками

Проверить список бранчей можно коммандой
git branch -a

Для моего устройства необходим бранч origin/android-msm-hammerhead-3.4-kitkat-mr2. Чтобы получить данный бранч пишем
git checkout origin/android-msm-hammerhead-3.4-kitkat-mr2
Начнется проверка файлов

После окончания проверки вы увидите папку с исходниками в той директории, в которой их скачали

Остался последний пункт и можно начинать разработку ядра! Необходимо скачать тулчейн. Получить его можно коммандой
git clone https://github.com/anarkia1976/AK-linaro.git

После этого в вашей директории появится папка AK-linaro. Из этой папки достаем нужный тулчейн. Я использую Linaro 4.9.1-2014.07.20140718.CR83
Кидаем папку с тулчейном в домашнюю директорию и переименовываем в «linaro» для удобства
Итак, подготовка завершена, теперь переходим к самому процессу создания ядра. Ах да, чуть не забыл — нам потребуется рамдиск, достать его из стокового ядра можно с помощью Android IMAGE Kitchen, всю инфу и инструкции найдете по этой ссылке — forum.xda-developers.com/showthread.php?t=2073775
После того как достали рамдиск кидаем его в домашнюю директорию, опять же, так намного удобнее. Теперь нам потребуются специальные скрипты для того, чтобы скомпилировать ядро. Ссылка на скрипты — yadi.sk/d/vN0KCGF8bB9gV
Эти скрипты необходимо распаковать в папку с исходниками

Также вам понадобится конфиг, обычно название конфига совпадает с кодовым названием вашего устройства, например у меня это «hammerhead_defconfig»
Название конфига следует написать в 29 строку в файле «env_setup.sh»

Сам же конфиг находится по пути «arch/arm/configs»
Завершающим шагом является адаптация главного Makefile под Linaro. Для этого находим строчку
REAL_CC = $(CROSS_COMPILE)gcc
CC = $(CROSS_COMPILE)gcc
Теперь найдите эти строчки:
# Use the wrapper for the compiler. This wrapper scans for new # warnings and causes the build to stop upon encountering them. CC = $(srctree)/scripts/gcc-wrapper.py $(REAL_CC)
И удалите. Все готово для первой компиляции!
Открываем терминал, переходим к папке с исходниками и прописываем следующую комманду:
./build_kernel.sh

Начнется компиляция. На варнинги(Warning) не обращайте внимание! Главное, чтобы не было ошибок! Большинство ошибок подробно опысываются, т.е. решить их довольно легко, но если же вы словите ошибку после VMLINUX, то тут придется попотеть, так как в гугле вы вряд ли что-то найдете, придется сидеть на Гитхабе и искать что-то подобное у других энтузиастов-ядроделов
Если ядро скомпилировалось правильно и без ошибок, то вы увидите подобное окно

Если все в порядке, то советую забекапить текущие исходники, мало ли что может случиться. Собственно вы только что собрали свое первое ядро, пусть оно и отличается от стокового одним лишь использованием Linaro
Теперь я расскажу про патчи — это то, чем мы будет «тюнинговать» ядро. Для примера я приведу патч, благодаря которому вы можете разогнать свой MSM8974 — github.com/franciscofranco/hammerhead/commit/104890313a73dae0e7d7a13975801cc568d231ad
Этим патчем мы повышаем максимальный вольтаж и, соответственно, частоты до 3GHz. Этот способ предназначен ТОЛЬКО для устройств на базе чипа MSM8974(Snapdragon 800(801)) Чтобы пропатчить ядро достаточно привести свои файлы в такое-же состояние, что и в патче. Проще говоря — добавить/удалить/заменить строки. Обязательно удаляйте плюсики! Для тех кто не понял, про какие плюсы я говорю:
+ < 1, < 3014400, HFPLL, 1, 157 >, L2(21), 1100000, 957 >,
Как видим, в начале стоит + Это означает, что эту строку надо добавить в ваш файл. Сам + добавлять нельзя!
После применение данного патча(изменения своих исходников под данный комент) максимальная частота повысится с 2.3GHz до 3GHz. На разных чипах это реализовано по разному!
Теперь вновь запускаем компиляцию, дожидаемся ее окончания и получаем ядро. Оно лежит в папке «Out»

Не забывайте делать «./clean_kernel.sh» перед началом компиляции!
Теперь прошиваем ядро на устройство. Если оно запустится, то поздравляю — вы только что сделали свое первое, по настоящему кастомное ядро с разгоном!

Удачи вам и не стоит отчаиваться если что-то идет не так, нельзя создать суперядро за несколько дней — на это уходят недели, а то и месяцы.
Делитесь своим опытом в комментариях!
Сборка ядра в termux для kali nethunter [Часть 1]

И так, зачем же вам может понадобиться ядро для nethunter? Ну к примеру чтобы вы могли подключить адаптер для пентестинга WI-FI сетей, и использования hid атак. Но ведь чтобы собрать ядро нужен компьютер на основе linux, не так ли? Да все верно, но теперь можно собирать ядро даже в termux! И это все благодаря относительно новому uber toolchain.
Способ работает на arm64, и сборка также происходит для arm64. Также вам нужен root

Установка всех нужных компонентов:
сначала нужно поставить ubuntu в termux, так-как не все зависимости присутствуют в termux
apt update apt upgrade echo "deb [trusted=yes arch=all] https://yadominjinta.github.io/files/ termux extras" >> $PREFIX/etc/apt/sources.list pkg in atilo atilo pull ubuntu atilo run ubuntu apt update apt upgrade apt install git wget sudo unzip libncurses5-dev python make gcc g++ bc grep nano
Теперь мы должны установить uber toolchain качаем по этой ссылке:
apt install wget wget https://bitbucket.org/UBERTC/aarch64-linux-android-4.9/get/78e5a7be6044.zip
Теперь нам нужны исходники подходящие для вашего девайса, и прошивки. У меня девайс redmi note 6 pro с прошивкой AICP. Значит я ищу в google.com «xda redmi note 6 pro ROMs, Kernels, Recoveries, & Other Development»
открыв первую попавшуюся ссылку переходим на нее:

Теперь в поиске пишем свою прошивку, у меня как уже говорилось AICP. Далее пролистываем до sources, и видим kernel source:

Переходим по ссылке и врубаем режим «Версия для ПК» далее выбираем brench, у меня это pie, теперь мы удаляем из ссылки tree/ и вместо этого вписываем -b
Получилась ссылка вида:
https://github.com/Advertpavan/kernel_xiaomi_tulip/ -b pie
Теперь надо скопировать их:
git clone https://github.com/Advertpavan/kernel_xiaomi_tulip/ -b pie
Пока качаются наши исходники, мы распаковываем toolchain:
sudo unzip 78e5a7be6044.zip mv UBERTC-aarch64-linux-android-4.9-78e5a7be6044 toolchain
Сейчас нужно установить нужные переменные для компилятора:
export CROSS_COMPILE=/root/toolchain/bin/aarch64-linux-android- export ARCH=arm64 export SUBARCH=arm64
Все готово! Теперь можно переходить к самой сборке ядра.
Сначала мы должны перейти в директорию с исходным кодом ядра.
cd .. cd kernel_xiaomi_tulip
Теперь выбираем config для сборки ядра, он находится в «arch/arm64/configs/
конфигом обычно является code name вашего девайса, у меня это. tulip
У меня есть config с именем «tulip-perf_defconfig»
Мы выбираем его, и пишем:
sudo make tulip-perf_defconfig
У меня вышла вот такая ошибка

Ее легко можно исправить, просто убрав в net/Kconfig 93 строку
Теперь все работает!

Еще надо пропатчить ядро:
wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patchpatch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch
Сейчас нам нужно править config, для этого мы введем команду:
sudo make menuconfig
Конец первой части!
Спасибо за прочтение!

- Основной канал - https://t.me/under_public
- Приватный канал - https://t.me/joinchat/AAAAAEmM-bkL9Pv7KLyL7w
- Termux, please - 100% termux
- ИБ News - самые свежие и интересные новости Информационной Безопасности.
- Чат - https://t.me/UnderChats
- Наш форум: https://darksploit.su/
- TG-канал форума:https://t.me/darksploit0x41
Со всеми предложениями и идеями для статей пишите нашему боту @undermbot
Также вы можете присылать ваши статьи в бота (оформляйте в телеграфе), я их просмотрю, если всё ОК - опубликую статью на канале с указанием автора.
Сборка ядра android
В предыдущих статьях мы детально рассмотрели процесс сборки прошивки Android. Сегодня мы попробуем собрать новое ядро Android. В первую очередь за данную статью необходимо поблагодарить сударя dimonchik230 с портала 4пда.ру, поскольку автором оригинальной статьи, а также моим наставником и учителем в сборке ядра является именно он. Мои же скромные заслуги сводятся к адаптации оригинальной инструкции под операционную систему Ubuntu.
Для наглядности будем описывать процесс сборки ядра на конкретном примере и поставив конкретную задачу.
Задачи:
- собрать рабочее ядро;
- добавить возможность разгона частоты процессора;
- добавить поддержку файловых систем ext3 и ext4;
- поскольку ядро 2,2, а родные драйвера WiFi подопытного устройства предназначены для Android 2.1, то необходимо починить WiFi-модуль.
Пример:
Сборка ядра для прошивки Android версии 2,2 Huawei U8110 (данная инструкция применима и к другим устройствам, просто экстраполируйте).
Приступим…
1. Первое, что нам понадобиться, это кроссплатформенный компилятор. Он нужен для сборки ядра.
Открываем терминал и создаем в домашней папке каталог build, в нем мы будем собирать наше ядро:
mkdir в операционной системе Unix команда для создания новой директории
Переходим в него:
Загружаем Android-ndk (кросскомпилятор):
tar xfj ~/build/android-ndk-r5b-linux-x86.tar.bz2
В каталоге ~/build, должна появиться папка android-ndk-r5b, для удобства переименовываем её:
mv ~/build/android-ndk-r5b ~/build/android-ndk
2. Работа с ядром
Исходник ядра (kernel-2.6.32-U8150-Froyo) любезно предоставлены компанией Huawei Technologies Co. Ltd. Помещаем их в домашнюю папку, а потом распаковываем в папку build:
unzip ~/kernel-2.6.32-U8150-Froyo.zip -d ~/build
В распакованном архиве еще один архив, распаковываем его. Для того, чтобы он распаковался в папке build, переходим в нее:
распаковываем сам архив:
tar xfz ~/build/kernel-2.6.32-U8150-Froyo/kernel-2.6.32-U8150-Froyo.tar.gz
переходим в проводнике в папку build и для удобства переименовываем папку kernel-2.6.32-U8150-Froyo в kernel.
2.1 патчим ядро. В принципе исходники ядра готовы для сборки, но при этом у нас не будет, ни нужного нам разгона ни рабочего модуля Wi-Fi. Для этого надо установить patch (заплатку).
Любые изменения / модификации ядра можно выполнять при помощи внесения изменений непосредственно в исходники ядра (например, обычным текстовым редактором).
Второй вариант — внесение изменений возможно при помощи применения заранее подготовленного патча/ей, в котором изначально прописано, что и где в исходника необходимо изменить. В данном примере модификацию ядра мы рассмотрим при помощи применения патча. Как создавать патчи самостоятельно мы рассмотрим в следующих статьях.
Загружаем архив, в нем есть нужный нам kernel.patch. Этот патч добавляет возможность разгона процессора, вносит изменения относительно работы wifi и host-а в целом.
Помещаем архив в домашнюю папку и извлекаем файлы из архива:
unzip ~/patch.zip -d ~/build
В папке build должен появиться файл kernel.patch и папка WORKING_kernel, она нам понадобится в будущем.
Переходим в папку kernel в директории build и применяем патч:
Для того, чтобы пропатчить исходники нам надо установить программу patch:
Выдержка из Википедии:
Заплатка, или патч (англ. patch /pt/ — заплатка) — автоматизированное отдельно поставляемое
программное средство, используемое для устранения проблем в программном обеспечении или
изменения его функционала, а также сам процесс установки патча («пропатчивание»). Исправление
может применяться к уже установленной программе, либо к её исходным кодам. Сюда входит
исправление ошибок, изменение внешнего вида, улучшение эргономичности или производительности
программ, а также любые другие изменения, которые разработчик пожелал сделать.
sudo apt-get install patch
Ubuntu попросит ввести пароль суперадминистратора, поскольку команда sudo:
Выдержка из Википедии:
sudo (англ. superuser [substitute user] do, дословно «выполнить от имени суперпользователя») — это программа, разработанная в помощь системному администратору и позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Основная идея — дать пользователям как можно меньше прав, но при этом достаточно для решения поставленных задач. Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.
Несколько раз спросят:
patching file ../kernel/arch/arm/mach-msm/acpuclock.c
patching file ../kernel/drivers/mmc/host/msm_sdcc.c,
Отвечаем — y (yes).
2.2 Применяем файл конфигурации. Для дальнейшей работы нам нужно установить дополнительные программы и библиотеки: gcc, ncurses-devel и make, устанавливаем их:
sudo apt-get install make gcc libncurses-dev
Выдержки из Википедии:
make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще
всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые
файлы или библиотеки.
GNU Compiler Collection (обычно используется сокращение GCC) — набор компиляторов для различных
языков программирования, разработанный в рамках проекта GNU. GCC является свободным
программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на
условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain. Он используется как
стандартный компилятор для свободных UNIX-подобных операционных систем.
Ncurses («new curses») — библиотека написанная на языке Си и предназначенная для управления
вводом/выводом на терминал, в том числе — задавать экранные координаты (в знакоместах) и цвет
выводимых символов. Предоставляет программисту уровень абстракции, позволяющий не беспокоиться
об аппаратных различиях терминалов и писать переносимый код. Можно рассматривать как аналог
библиотеки crt в Turbo Pascal и аналогах, таких, как Free Pascal.
Для того, чтобы собрать ядро — нужен файл конфигурации, мы можем написать его сами ответив на нехитрые вопросы при сборке (но их будет очень много), или взять уже готовый, это все же проще. Берем телефон (на нем установлена прошивка ядро которой мы желаем заменить), запускаем на телефоне программу RootExplorer и копируем файл config.gz, расположенный по адресу /proc/config.gz на карту памяти. Подключаем телефон к ПК, монтируем флешку и копируем файл config.gz в папку build домашней директории.
сonfig.gz — это архив gzip, в этом архиве находится файл конфигурации, распаковываем его (предварительно перейдя в папку build):
(Внимание, при использовании этой команды, при распаковке сам архив удаляется.)
Выдержка из Википедии:
gzip (сокращение от GNU Zip) — утилита сжатия и восстановления (декомпрессии) файлов, использующая алгоритм DEFLATE. Используется в основном в UNIX-системах, в ряде которых является стандартом де-факто для сжатия данных. Была создана Жан-лу Галли (Jean-loup Gailly) и Марком Адлером (Mark Adler). Версия 0.1 была впервые выпущена 31 октября 1992 года, а версия 1.0 — в феврале 1993 года.
Перемещаем файл config в директорию kernel, и переименовываем в .config (Внимание точка в перед config обязательна.):
mv ~/build/config ~/build/kernel/.config
Переходим в каталог kernel:
Применяем наш конфигфайл:
make -j4 ARCH=arm CROSS_COMPILE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- oldconfig
Для того, чтобы сбросить все и очистить для новой сборки (внимание .config тоже удаляется), выполняем:
make -j4 ARCH=arm CROSS_COMPILE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- mrproper
2.3 Добавляем поддержку swap, ext3, ext4:
make -j4 ARCH=arm CROSS_COMPILE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- menuconfig
Возвращаемся в предыдущее меню и сохраняем конфигурацию.
2.4 Собираем ядро:
make -j4 ARCH=arm CROSS_COMPILE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- EXTRAVERSION=.9 zImage
Описание команды:
ARCH=arm — Указываем, что у нас процессор ARM
CROSS_COMPILE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- — путь к нашему кросскомпилятору.
EXTRAVERSION=.9 — устанавливаем экстраверсию ( можно изменить на необходимое значение после точки)
zImage- указываем что собираем ядро.

О успешном завершении процедуры сборки ядра свидетельствует приблизительно такое окно:
После сборки в каталоге ~/build/kernel/arch/arm/boot должен появиться файл zImage, это и есть наше ядро.
3. Собираем модуль (драйвер) Wi-Fi.
Скачиваем atheros_wifi_driver-2.2.1.25-U8110-eclair.tar (Исходники Wi-Fi любезно предоставлены компанией Huawei Technologies Co. Ltd.), эти исходники для ядра 2.6.29, а не 2.6.32, но благодаря патчу, который мы применили, они будут работать. Помещаем исходники atheros_wifi_driver-2.2.1.25-U8110-eclair.tar.gz в домашнюю папку и распаковываем исходники в директорию build, проще всего через обычный проводник, в os Ubuntu это nautilus.
В домашней папке появиться папка atheros_2.2.1.25, переименовываем ее для удобства в wifi:
mv ~/build/atheros_2.2.1.25 ~/build/wifi
Переходим в директорию ~/build/wifi/olca_2.2.1.25/host:
Собираем модуль Wi-Fi:
make -j4 ATH_ARCH_CPU_TYPE=arm ATH_CROSS_COMPILE_TYPE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- ATH_LINUXPATH=~/build/kernel ATH_OS_SUB_TYPE=»linux_2_6 ATH_SDIO_STACK_BASE=~/build/wifi/olca_2.2.1.25/host/hif/sdio/linux_sdio
Описание команды:
ATH_CROSS_COMPILE_TYPE=~/build/android-ndk/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi- — путь к кросскомпилятору
ATH_LINUXPATH=~/build/kernel — путь к исходникам ядра
ATH_SDIO_STACK_BASE=~/build/wifi/olca_2.2.1.25/host/hif/sdio/linux_sdio — дополнительные патчи.
Для того, чтобы сбросить все и очистить для новой сборки выполняем:
После сборки в каталоге ~/build/wifi/olca_2.2.1.25/host/.output/QUALCOMM_ARM_NATIVEMMC-SDIO/image должен появиться файл ar6000.ko, это модуль wifi.
4. Собираем обновление для нашей прошивки:
Используем для этого Кухню, великолепное решение для сборки прошивок, работа в которой ранее была описана в предыдущих статьях.
После распаковки патча, у нас осталась папка WORKING_kernel в каталоге build, перемещаем его в папку с кухней (папка kitchen). Запускаем кухню, в главном меню выбираем опцию 0, и переходим на следующую страницу.
Находим опцию 20-Tools for boot image (unpack/re-pack/etc.) и вводим 20, появляется меню работы с boot.img. Для того, чтобы распаковать его (для тех кто не понял папка WORKING_kernel, которую мы ранее скопировали и есть рабочее ядро, кторое мы хотим изменить), вводим w (w = Extract kernel+ramdisk from boot.img), в каталоге kitchen появится папка BOOT-EXTRACTED, в ней лежит ядро (zImage) и папка boot.img-ramdisk. Меняем это ядро на наше (заменяем оригинальный zImage на ранее собранный нами), сделать это возможно как через терминал, так и через проводник nautilus.
Собираем новое ядро, в терминале с запущенной кухней вводим b (b = Build boot.img from BOOT-EXTRACTED folder (for working folder)). Теперь меняем старый модуль wifi на наш (старый модуль находится в папке WORKING_kernel/system/wifi/ , которую мы ранее скопировали в папку с кухней).
После собираем обновление, в кухне вводим 99 и попадаем в интерактивный режим сборки прошивки:
Would you like to optimize the APK files by zipaligning them (y/n)? (default: y):
Отвечаем (n).
It is recommended that you sign your ROM.
Sign it (y/n)? (default: y):
Отвечаем (y).
The new ROM will be named U8100_signed_хххххх_хххххх.zip
Change the name (y/n)? (default: n):
Переименовать прошивку, отвечаем (y) и переименовываем в kernel_fix.
В папке ~/build/kitchen/OUTPUT_ZIP должен появиться файл kernel_fix.zip.
Все обновление готово. Копируем его на карту памяти телефона и устанавливаем обновление через режим recovery.
З.Ы. Ссылка на оригинальный файл инструкции dimonchik230 (рассматривается на примере операционной системы Open Suse 11.4 и VirtualBox).