Мануал по сборке ядра на примере Motorola Quench XT5, GSmart 1305, Commtiva Z71, Orange BostonМаленькая ремарка: так как я использую Ubuntu - cоответственно и все пункты инструкции будут написаны с учётом использования этого дистрибутива.
| Внимание! Увага! Attention! Achtung!Статье уже больше 5 лет и я больше не интересуюсь сборкой прошивок/ядер. Убедительная просьба —
не нужно задавать мне вопросы по статье в ЛС.
Спросите в этой теме, авось кто-то поможет.
Статья подразумевает, что у вас должен быть какой-никакой опыт работы в ОС GNU/Linux, потому что если у вас возникнут трудности, например, с перемещением между папками из консоли - то разбираться вам прийдется с этим самостоятельно. Если опыта нет, но очень хочется попробовать - добро пожаловать на сайт
Убунтология, учитесь работать с ОС, а потом уже будем ядра собирать.
Так же - статья не затрагивает работу с программами fastboot и adb, копание в исходных кодах и работу с git - репозиториями.
Последние два - огромнейшие темы, которые я описать не в силах. Учитесь программировать, читайте документацию и всё получится. Некоторые ссылки есть в статье. А первый пункт мне просто лень описывать. :D
| Подготовка для компиляции ядраИтак, для начала неплохо было бы произвести с системой манипуляции, описанные в пунктах "Installing the JDK" и "Installing required packages" по ссылке -
ТЫЦ.
Создайте папку aosp и папку aosp/prebuilt в домашней директории, командами
cd
mkdir aosp
cd ~/aosp
mkdir prebuilt
cd prebuilt
Скачаем большой пак файлов с помощью команды
git clone git://github.com/CyanogenMod/android_prebuilt.git .
В последней команде точка и должна быть, это не опечатка.
После - откроем файл ~/.bashrc командой
и в самый-самый конец добавим такие строчки:
PATH=$PATH:~/aosp/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
export PATH
После чего нам нужно будет перезапустить консоль.
Внимание, если вы разархивировали архив не в папку "aosp" то в этой строчке нужно поменять путь к папкам на ваш.
| Подготовка к сборке ядраВ домашней директории создадим папку "kitchen", в которой мы и будем "готовить" ядра.
Вот отсюда скачаем два скрипта, unpack-bootimg.pl и repack-bootimg.pl в папку "kitchen".
Отсюда скачаем архив и распакуем его в папку "kitchen".
| Получаем исходники ядраВ целях примера - возьмём исходники
из моего репозитория на GitHub. После скачивания - распакуем архив в папку "aosp/commtiva-kernel-z71".
В данном примере исходники получается нами "варварским" путём - скачиванием архива. Есть куда более удобный способ - получение через Git. Кому интересно -
добро пожаловать сюда и
сюда.
| Настройка ядра и компиляцияИз консоли зайдём в папку с нашим ядром
cd ~/aosp/commtiva-kernel-z71
Произведём базовую настройку ядра из шаблона, составленного заранее.
make ARCH=arm fxx_defconfig
Тут надо сделать ремарку - в ядрах от rmcc этот шаблон называется таким образом, в стоковом ядре 2.6.29 - от называется msm7627_defconfig, посему нельзя дать точных рекомендаций.
Для владельцев других девайсов - если вы используете ядро, собранное из тех исходников, что есть у вас - конфигурационный файл можно достать прямо с телефона, с помощью команды
adb pull /proc/config.gz ~/aosp/config.gz
В папке aosp у вас появится архив с файлом config. Архив распаковать, файл переименовать по шаблону вашеназвание_defconfig, например mydevice_defconfig, и положить по пути ~/aosp/путь-к-вашим-исходникам-ядра/arch/arm/configs.
И, после, для создания файла конфигурации использовать команду
make ARCH=arm mydevice_defconfig
После конфигурации можно сделать настройку ядра с помощью команды
Но, если что-то поламаете - я не виноват. :)
Закончив с настройкой приступаем, собственно, к компиляции
make ARCH=arm CROSS_COMPILE=arm-eabi- -j4
Параметр -j4 нужен только если у вас многоядерный процессор. Цифра 4 определяет количество ядер(потоков, в случае с Intel i3, i5, i7 процессорами). К примеру у меня - Intel i5, он двухядерный, но поддерживает два потока на каждое ядро, поэтому 2 * 2 = 4.
Если всё прошло удачно, то в папке aosp/commtiva-kernel-z71/arch/arm/boot вы найдёте скомпилированный файлик "zImage".
| Запаковка ядра в boot.imgНам будет нужен boot.img, так как в примере я буду компилировать ядро от Cyanogen Mod - то и boot.img я взял из архива последнего nightly build.
Через консоль зайдём в эту папку, выполним
./unpack-bootimg.pl boot.img
На выходе получим папку с рамдиском, названную "boot.img-ramdisk" и ещё несколько файлов.
После, откроем файл repack-bootimg.pl текстовым редактором и строчку
system ("mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel $ARGV[0] --ramdisk ramdisk-repack.cpio.gz -o $ARGV[2]");
Заменим на строчку
system ("mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel $ARGV[0] --ramdisk ramdisk-repack.cpio.gz -o $ARGV[2] --base 0x12E00000");
ВНИМАНИЕ! Если у вас девайс отличный от G1305, XT5, Z71, Boston - то параметр
--base 0x12E00000 вам не подходит, вам нужно посмотреть смещение в файле boot.img с помощью HEX-редактора, либо узнать на форумах о ваших девайсах.
UPDATE: Узнать смещение так же можно с помощью команды
cat .config | grep PHYS_OFFSET
Где .config - это ВАШ конфиг. Спасибо
_Shumaher_ за подсказку.
После - берём zImage, который мы получили после компиляции ядра и копируем в эту же папку. В консоли пишем:
./repack-bootimg.pl zImage boot.img-ramdisk new-boot.img
Если сделали всё правильно - появится файлик new-boot.img, который можно прошивать на девайс, через fastboot.
| Где ещё взять исходники для z71, G1305, XT5?1.
Kernel 2.6.29 - Стоковое ядро с прошивки 2.12.
Kernel 2.6.32.9 - Стоковое ядро с прошивки 2.23.
Kernel 2.6.32.9 by CML4.
Kernel 2.6.32.9 by Edgar86| Внимание! Увага! Attention! Achtung!Статье уже больше 5 лет и я больше не интересуюсь сборкой прошивок/ядер. Убедительная просьба —
не нужно задавать мне вопросы по статье в ЛС.
Спросите в этой теме, авось кто-то поможет.
Прикрепленные файлы
z71_CML_SOURCES.tar.gz ( 94.9 МБ )
Сообщение отредактировал otro678 - 20.03.17, 13:57