Universal Kernel Flash е помощна програма за вграждане на персонализирано ядро ​​за редица устройства с Android. Изучаване на Android

Инсталирайте пакет, който интегрира отварянето на терминал във файловия мениджър

1. Отворете терминал и въведете следната команда (от Ubuntu 15.10 терминалът вече е вграден във файловия мениджър на Nautilus)

За 32-битови системи:

sudo apt-get инсталирайте nautilus-open-terminal:i386

За 64-битови системи:

sudo apt-get инсталирайте nautilus-open-terminal

2. След това изпълнете командата за рестартиране на файловия мениджър

3. Инсталирайте пакета, необходим за работа с ядрото на Android

sudo apt-get install abootimg

В текстовия редактор на Gedit премахнете отметката от опцията „създайте резервно копие“.

Работа с ядрото

1. Създайте папка в домашната папка с всяко удобно име и преместете там ядрото на Android - boot.img. (Примерът ще посочи папката на ядрото)

2. Отидете в папката ядро, във всяко празно пространство щракнете с десния бутон и изберете „Отваряне в терминал“

3. В терминала, който се отваря, въведете командата:

abootimg -x boot.img

След това в папката ядроще видите, че са се появили нови файлове (ядрото е разопаковано)

4. Нека създадем нова папка (да я наречем rw) вътре в папката ядро, в терминала пишем

5. Напишете команда в терминала за по-нататъшно разопаковане на дяла initrd.img

zcat ../initrd.img | cpio -i

6. След това в папката rwще намерите много файлове

7. Намерете и отворете файла init.rc

8. В края на файла добавете следните редове

# Изпълнение на файлове в /etc/init.d по време на зареждане
услуга sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
клас late_start
потребител root
групов корен
един изстрел

и запазете файла и излезте от него

9. В терминала създайте файла initrd.img и напишете командата

намирам . | cpio -o -H newc | gzip > ../initrd.img

10. Връщаме се обратно в папката на ядрото, за това пишем в терминала

11. Компилиране на ядрото на Android с направените промени

и след това още една команда

abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img

Ако получите грешка, че ядрото е станало голямо:

boot.img: актуализиран е твърде голям за изображението за зареждане

тогава се събираме с такъв екип

abootimg --create boot.img -k zImage -r initrd.img

abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img -c "bootsize=size_what_in_error"

Ядрото на Android с пълна поддръжка на init.d! След това трябва да флашнете!

пясъчник

дръпнете 6 юни 2015 г. в 19:41 ч

Изграждане на ядро ​​за устройства с Android по примера на Solid Kernel за LG e975

  • програмиране,
  • Android разработка

Подготовка

Какво ни трябва
  • 64-битова Linux система (използвам Ubuntu 14.04)
  • Руутнат Android телефон/таблет/друго устройство с процесор QUALCOMM
Подготовка на системата
Да инсталираме необходимите пакети. Нека напишем в терминала:

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-инструменти xsltproc zip zlib1g-dev git-core make phablet-tools gperf
Системата е готова.

Изтеглете източниците
Отиваме в GitHub и изтегляме източниците (източниците са различни за всяко устройство, така че няма да давам връзки) в архива (трябва да има бутон „Изтегляне на ZIP“ от дясната страна на екрана). Разопаковаме архива на всяко удобно място (за мен това е папка /home/system-exe/Solid).

Изтеглете инструменталната верига.Следвайте връзката, поставете отметка в квадратчето за необходимата верига инструменти (за мен това е cortex-a15, зависи от ядрата на процесора) и щракнете върху „изтегляне“. Разопаковайте изтегления архив в папка /начало/%ПОТРЕБИТЕЛСКО ИМЕ%/Toolchain/Linaro-4.9.3(вместо %USERNAME% заместваме името на акаунта).

Изваждаме конфигурационния файл от устройството
Да вървим по пътя /процес(на телефона) и копирайте файла config.gz на компютъра, разопаковайте го и вземете конфигурационния файл, който преименуваме с шаблона %device%_defconfig (за мен това е e975_defconfig). Поставете получения файл по пътя /home/%USERNAME%/Solid/arch/arm/configs

Готови сме с подготовката.

Изграждане на ядрото

Отидете до терминала и въведете командата:

CD солиден
(затова отидохме в папката с нашите източници)

Направете %device%_defconfig
(Имам нужда от това: make e975_defconfig)

След завършване пишем:

Направете menuconfig
(тук редактираме необходимите конфигурационни стойности. Всичко тук е изключително просто, мисля, че ще го разберете.)

След завършване започваме сглобяването:

Направете -j8
Опцията -j8 е необходима само ако имате многоядрен процесор. Числото 8 определя броя на ядрата (нишки, в случай на процесори Intel i3, i5, i7). Например, имам Intel i7, той има четири ядра, но поддържа две нишки на ядро, така че 2 * 4 = 8.

Всичко. чакаме

В края трябва да се появи съобщението „zImage е готов“.

Да вървим по пътя /home/%USERNAME%/Solid/arch/arm/bootи виждаме нашето ядро ​​там - zImage.

Тестване

Сега просто трябва да накараме този zImage да работи на нашето устройство.

Сега помислете три пъти, имате ли нужда от това? Уверени ли сте в способностите си и че сте сглобили правилно ядрото?

мислили ли сте за това Сигурен? Сигурен ли си? Тогава да продължим.

Извличаме boot.img от нашето устройство. Пишем в терминала на телефона:

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

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

Качваме нашето сглобено изображение на картата с памет под името new_boot.img
В терминала въвеждаме:

Su dd if=sdcard/new_boot.img of=dev/block/platform/.../by-name/boot
Вместо... заместваме пътя към папката с имена (трябва да заменя msm_sdcc.1).

Рестартирайте устройството. Ако телефонът се стартира, тогава всичко е направено правилно, ако не, прочетете инструкциите по-внимателно и опитайте отново.

За да се върнем в случай на повреда, използваме нашия оригинален boot.img, който трябваше да остане на картата с памет. За връщане назад в терминала въвеждаме:

Su dd if=sdcard/boot.img of=dev/block/platform/.../by-name/boot
Вместо... заместваме пътя към папката с имена (трябва да заменя msm_sdcc.1).

Епилог

Както можете да видите, няма нищо сложно в такъв процес като сглобяването на системното ядро ​​за Android. Възможно е да работи дори от първия път, но трябва да имате резервно копие за всеки случай.

Етикети: android, разработка на android, android os, ядро, ядра, персонализиран фърмуер

Как да флашна ядрото?



Има моменти, когато устройство, работещо с Android, се нуждае от фърмуер на ядрото. Ядрото в този случай означава централната част на операционната система, която осигурява взаимодействието между хардуерните и софтуерните компоненти на системата.

Тази статия ще говори за това как правилно да флашнете ядрото.

Фърмуер на ядрото

  1. Първата стъпка е да изтеглите необходимото ядро. Ако има корекция за него, тогава трябва да го изтеглите. За да регулирате честотата на процесора, трябва да изтеглите и специалната програма SetCPU.
  2. На устройство C трябва да създадете папка и не забравяйте да я наименувате Android. За да може фърмуерът на ядрото да бъде флашнат правилно, посоченият път трябва да бъде: C:Android/име на изображението на ядрото. Изображението на ядрото е name_of_boot.img.
  3. Сега трябва да активирате USB отстраняване на грешки на телефона си и да рестартирате телефона в режим на зареждащо устройство и да стартирате Fastboot. След това трябва да свържете устройството към компютъра с помощта на същия кабел. На екрана ще се появи следното съобщение: Fastboot USB. След това можете да стартирате командния ред на CMD на вашия компютър.
  4. След това трябва да въведете кодовете, например, това може да бъде следният код: fastboot flash boot и името на изображението на ядрото. Ако срещнете някакви проблеми на този етап, трябва да проверите кабела: понякога може да има проблем с него, а понякога HTC Sync с драйвери не е инсталиран или USB отстраняването на грешки не е активирано.
  5. Сега трябва да рестартирате телефона си и да оставите файла с корекцията на SD картата. В режим на възстановяване трябва да инсталирате тази корекция и да рестартирате устройството отново. Ето как се флашва фърмуера на ядрото.

За да научите как можете да мигате смартфони с Android, прочетете статията.

Много собственици на устройства с Android в различни форуми и сайтове често се натъкват на споменаване на нещо неразбираемо, което се нарича ядро ​​или на английски kernel. Може да се променя и се споменава в менюто с настройки на устройството, в секцията „За таблета (телефона)“.

Ако се заровите по-дълбоко, ще откриете, че ядрото е част от операционната система и не само Android го има, но и други операционни системи: Windows, iOS, MacOS и други. Но ще се интересуваме от ядрото на Android и ще се опитам да обясня какво е то на ниво начинаещи потребители.

Вероятно знаете, че всяка операционна система, включително Android, като цяло е набор от програми, които управляват работата на цялото устройство и отговарят за стартирането на потребителски приложения като игри, файлови мениджъри, уеб браузъри и други.

А ядрото на Android е практически най-важната част от операционната система, която отговаря за взаимодействието между цялата хардуерна и софтуерната част на системата. Ядрото се състои от набор от драйвери за цялото оборудване в устройството и подсистема за управление на паметта, мрежата, сигурността и други основни функции на операционната система.
Например, когато докоснете екрана, за да стартирате приложение, драйверът на тъчпада на екрана определя мястото, където е станало докосването, и съобщава координатите на други програми, които, отново използвайки ядрото, ще намерят желаното приложение в паметта на устройството и ще стартират то. Това, разбира се, е много опростен модел, но той отразява същността на операционната система.

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

Ядрото контролира абсолютно цялото оборудване: Wi-Fi, Bluetooth, GPS, памет и други устройства. „Сърцето“ на устройството – неговият процесор – не прави изключение. Ядрото може да контролира своята честота и захранване.
Ядрото на операционната система Android е заимствано от нейните разработчици Google от операционната система Linux.

Тъй като ядрото контролира целия хардуер, а хардуерът на всички таблети и телефони е различен, основното ядро ​​на Android се модифицира от производителя за всяко устройство поотделно.

Подобно на фърмуера, ядрата могат да бъдат стокови (фабрични) и персонализирани - алтернативни, създадени от независими разработчици.

Защо се нуждаем от персонализирани ядра? Базовото ядро ​​е максимално оптимизирано от производителя за конкретно устройство, но обикновено блокира такива важни функции на ядрото като например контрол на честотата на процесора. И ако трябва да овърклокнете процесора на вашия таблет, ще трябва да смените ядрото на персонализирано, в което функцията за контрол на честотата на процесора е отключена.

В допълнение, персонализираните ядра обикновено се базират на по-нови версии на ядрата на Linux. Ето приблизителен списък с функции, които персонализираните ядра ни дават:

  • Променете честотата на процесора в широк диапазон;
  • Овърклок на графичната подсистема (GPU);
  • Намаляване на честотата и напрежението на процесора, което позволява по-дълъг живот на батерията;
  • По-нови и висококачествени драйвери, например ускоряване на GPS или добавяне на нови функции;
  • Широка гама от опции за персонализиране и конфигуриране на звук и цветове на екрана;
  • Поддръжка на алтернативни файлови системи (XFS, ReiserFS и други).

Тъй като алтернативните ядра са създадени от независими разработчици, няма гаранция, че вашият таблет или телефон ще работят без проблеми след инсталиране на персонализирано ядро. Ето защо, преди да флашнете ново ядро, препоръчително е да направите пълно архивиране на системата.

Приятели, започвам поредица от статии с подробни обяснения как да направите свое собствено ядро ​​за вашия телефон.

Темата на тази статия е компилирането на ядрото, което всъщност отговаря за работата на цялото телефонно и комуникационно оборудване. Текстът ще бъде редактиран и допълван - пишете, коригирайте, пробвайте!

За да компилирам ядра, използвам или Linux (UBUNTU), или Windows Bash UBUNTU под Windows 10.

Ще напиша как да настроя всички програми по-късно (тъй като това също изисква моята подготовка), сега ще премина към основното

Компилация

Компилацията на ядрото се извършва на 2 етапа + DTB асемблиране + ядро ​​асемблиране за фърмуер:

  1. Компилиране на конфигурацията на бъдещото ядро
  2. Компилиране на самото ядро ​​+ евентуално библиотеки на ниво ядро ​​(не съм виждал това за MTK, само за MSM и друг процесор)
  3. Допълнително събрани DTBконфигурационен файл на устройството, ако настройката за конфигурация на ядрото го изисква
  4. Освен това трябва да съберете boot.img

Първото нещо, което се прави, е да се зададат глобалните променливи на параметрите на процесора (ARM или ARM64) и пътя до компилатора (набор от програми, които преобразуват текста на изходния код в двоичен файл), всичко това се прави с команди:

износ ARCH=arm
износ TARGET=вън

износ означава, че променливата ще бъде достъпна за всички работещи програми и ще се съхранява в глобалния списък с променливи (bash среда).
АРХ— тип процесорна архитектура, за която ще бъде компилирано ядрото
CROSS_COMPILE— указва пътя, където компилаторът ще търси програми за компилиране и изграждане на ядрото.
МИШЕНА— папката, в която компилаторът ще постави всички свои файлове.

make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE X5PRO_6735m_defconfig

направи — стандартна програма за сглобяване на програми с помощта на скриптове
О=
$TARGET— папката, където ще се съхраняват всички компилирани файлове и конфигурации, тя трябва да бъде посочена, тъй като много модули на ядрото я използват за свои собствени цели, взета е от глобалната променлива, зададена в примера по-горе
АРХ=$АРХ- тип архитектура на процесора, обикновено ръкаили arm64, в примера е взет от глобалната променлива, зададена по-горе.
CROSS_COMPILE=— път към компилатора, задаваме глобална променлива в горния пример
5PRO_6735m_defconfig— името на конфигурационния файл за компилиране на ядрото на вашия телефон, разположен по пътя arch/$ARCH/configs/и зависи от избрания тип конфигурация на процесора, задаваме го в глобална променлива $ARCH

Тези. същата команда като по-горе, но без да посочвате конфигурационния файл.
-j4- този параметър казва колко процесора (компилационни процеси) да се използват по време на работа. Имам 4 физически процесора в моя компютър и използвам числото 4, ако имате 8 процеса в компютъра си, използвайте числото 8! Но колкото по-голямо е числото, толкова повече памет се използва. Ако имате слаб компютър, използвайте по-ниско число.

В края на компилацията, при мен трае около 10 минути, в зависимост от версията на ядрото и процесора, ще се получат няколко файла - части от бъдещия файл boot.imgили възстановяване.imgи се поставят в папката $TARGET/arch/$ARCH/bootи се наричат ​​по различен начин в зависимост от архитектурата и процесора:

  • Image.gz- архивирано ядро, когато телефонът стартира, ядрото се разопакова в RAM и се стартира, DTB файлът се намира отделно
  • Изображение- разопаковано ядро, DTB файлът се намира отделно
  • Image.gz-dtb- архивирано ядро ​​с вграден DTB файл за ARM64
  • zImage-dtb- архивирано ядро ​​с вграден DTB файл за ARM

За да компилирате DTB файл ( DTB- двоичен файл, описващ настройките на цялото телефонно оборудване, DTS- формат на текстов файл DTB) за Qualcomm изпълнявам допълнително командата

dtbToolCM -2 -o $TARGET/arch/$ARCH/boot/dtb -s 2048 -p $TARGET/scripts/dtc/ $TARGET/arch/$ARCH/boot/dts/

Създава се файл, готов за вмъкване в ядрото dtbот отделно компилирани DTB файлове, намиращи се в$TARGET/arch/$ARCH/boot/dts/

За да търся и копирам всички евентуално компилирани модули за Qualcomm, използвам команда, която търси файлове по модел и ги копира в една папка.

намери "$TARGET/" -name *.ko -exec cp () "modules/" \;

Примери

MTKза телефон DOOGEE X5PRO

git клонинг https://github.com/SnowCat6/DOOGEE-kernel-3.18.git
cd DOOGEE-ядро-3.18
износ ARCH=arm
експортиране CROSS_COMPILE=prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
износ TARGET=вън
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE X5PRO_6735m_defconfig
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE -j4

Източник на ядрото за DOOGEE X5PROще намерите тук.
По-добре е да го вземете чрез екипа git клонинг https://github.com/SnowCat6/DOOGEE-kernel-3.18.gitтогава винаги можете да актуализирате до най-новата версия с командата git тегли

Компилиране на ядро ​​за процесор Qualcommза телефон Archos 50 Diamond

git клонинг https://github.com/SnowCat6/android_kernel_cyanogen_msm8916.git
cd android_kernel_cyanogen_msm8916
експортиране ARCH=arm64
експортиране CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
износ TARGET=вън
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE lineageos_D50_defconfig
make O=$TARGET ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE -j4
dtbToolCM -2 -o $TARGET/arch/$ARCH/boot/dtb -s 2048 -p $TARGET/scripts/dtc/ $TARGET/arch/$ARCH/boot/dts

Какво е ядрото в Android и защо са необходими персонализирани ядра?

Много собственици на устройства с Android в различни форуми и уебсайтове често се натъкват на споменаване на нещо неразбираемо, което се нарича ядро ​​или на английски ядро. Той може да бъде променен и споменаването му може да бъде намерено в менюто с настройки на устройството, в раздела „Относно таблета (телефона)“.

Ако се задълбочите, ще откриете, че ядрото е част от операционната система и се намира не само в Android, но и в други операционни системи: Windows, iOS, MacOS и други. Но ние ще се интересуваме от ядрото на Android и ще се опитаме да обясним какво е то на ниво начинаещи потребители.

Вероятно знаете, че всяка операционна система, включително Android, като цяло е набор от програми, които контролират работата на целия ви смартфон и телефон, както и таблет, и отговарят за стартирането на потребителски приложения като игри, файл мениджъри, уеб браузъри и други.

А ядрото на Android е практически най-важната част от операционната система, която отговаря за взаимодействието между цялата хардуерна и софтуерната част на системата. Ядрото се състои от набор от драйвери за цялото оборудване в устройството и подсистема за управление на паметта, работата в мрежа, сигурността и други основни функции на операционната система.
Например, когато докоснете екрана, за да стартирате приложение, драйверът на сензорния панел на екрана определя местоположението, където е станало докосването, и съобщава координатите на други програми, които отново, използвайки ядрото, ще намерят желаното oe приложение и ще го стартират.

Създавате Android за конкретно устройство?

Това, разбира се, е много опростен модел, но той отразява същността на операционната система.

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

Ядрото контролира абсолютно цялото оборудване: Wi-Fi, Bluetooth, GPS, памет и други устройства. „Сърцето“ на устройството – неговият процесор – не прави изключение. Ядрото може да контролира своята честота и захранване.
Ядрото на операционната система Android е заимствано от нейните разработчици Google от операционната система Linux.

Тъй като ядрото контролира цялото оборудване и оборудването на всички таблети и телефони е различно, основното ядро ​​на Android се модифицира от производителя за всяко устройство поотделно.

Подобно на фърмуера, ядрата могат да бъдат стокови (фабрични) и персонализирани - алтернативни, създадени от независими разработчици.

Защо се нуждаем от персонализирани ядра?
Базовото ядро ​​е максимално оптимизирано от производителя за конкретно устройство, но обикновено блокира такива важни функции на ядрото като например контрол на честотата на процесора. И ако трябва да овърклокнете процесора на вашия таблет, ще трябва да смените ядрото на персонализирано, в което функцията за контрол на честотата на процесора е отключена.

В допълнение, персонализираните ядра обикновено се базират на по-нови версии на ядрата на Linux. Ето приблизителен списък с възможности, които персонализираните ядра ни дават:

Променете честотата на процесора в широк диапазон;
Овърклок на графичната подсистема (GPU);
Намаляване на честотата и напрежението на захранването на процесора, което ви позволява да постигнете по-дълъг живот на батерията;
По-нови и висококачествени драйвери, например ускоряване на GPS или добавяне на нови функции;
Широка гама от опции за настройка и конфигуриране на звук и цветове на екрана;
Поддръжка на алтернативни файлови системи (XFS, ReiserFS и др.).

Тъй като алтернативните ядра са създадени от независими разработчици, няма гаранция, че след инсталиране на персонализирано ядро ​​вашият таблет или телефон ще работят без грешки. Ето защо, преди да флашнете ново ядро, препоръчително е да направите пълно резервно копие на системата.

Самостоятелно компилиране на ядрото от източници

Дистрибуциите, стартирани чрез Linux Deploy, работят с ядрото на Android (модифицирано ядро ​​на Linux) и следователно можете да промените конфигурацията на ядрото или да свържете нови модули само чрез повторно изграждане на това ядро ​​или сглобяване на модули за дадена версия на ядрото.

Инструкции

  • Изтеглете и подгответе Android NDK:
  • Изтеглете и подгответе Android SDK, ще ви трябват помощните програми adb и fastboot:
  • Вземете изходните кодове на ядрото за това устройство (в нашия случай tinykernel-flo за Nexus 7 (2013) или изтеглете подобна версия от kernel.org):
  • Вземете конфигурационния файл на ядрото от устройството (ядрото трябва да бъде изградено, за да поддържа тази функция):

    или от boot.img (как да извлечете boot е описано по-долу):

  • Ако не сте успели да получите конфигурационния файл на ядрото, можете да използвате предварителната конфигурация от разпространението на ядрото (списък с конфигурации arch/arm/configs):
  • Разберете точната версия на ядрото на устройството:

    Отборен резултат:

    В този случай пълната версия на ядрото ще бъде редът „3.4.0-g03485a6“.

  • Инсталирайте локалната версия на ядрото (това, което се показва след основната версия 3.4.0):
  • Променете конфигурацията на ядрото в .config файла или с командата:

    В нашия случай следните редове са променени в .config файла (поддръжката на модула е активирана и модулът binfmt_misc е активиран):

  • Започнете изграждането на ядрото:

    или само модули:

  • Изтеглете помощни програми за работа с изображението за зареждане (boot.img):
  • Вземете изображение за зареждане от устройството (ядрото се съхранява на специален дял за зареждане):

    Пътят може да се различава на други устройства, можете да го определите с командата:

  • Вземете информация за изображението:

    Резултатът изглежда така:

  • Извлечете ядрото и рамдиска от boot.img, сменете ядрото и го опаковайте обратно:
  • Флашнете устройството с ново ядро:
  • Заредете модула на устройството:
  • Моля, обърнете внимание, че вермагията на модула трябва напълно да съответства на версията на ядрото (с точност до символ), в противен случай няма да е възможно да се зареди нов модул.

    Трябва да разберете вермагията на модула и да го сравните с модулите, които вече присъстват на устройството:

    Резултатът изглежда нещо подобно:

Автор на Антон Скшидлевски (meefik) ядрото, linuxdeploy

„Стартиране на всяка GNU/Linux дистрибуция от imageManaging Linux Deploy от командния ред“

Намерих ръководство, където форматират флашка за fat и ext2. На veal хвърлят zImage, а на ext2 дистрибуцията е Debian + hfse. Сега искам да сложа „това“ не на SD картата, а в таблета (ROM), има 5 дяла (/dev/mmcblk1p0, /dev/mmcblk1p1, ...) (система, данни, ядро, кеш, потребител). SD картата се дефинира като /dev/mmcblk0p0 (fat) и /dev/mmcblk0p1 (ext2).

В една от секциите на „ядрото“ на ROM има Android zImage и той го стартира Android. Ако го промените на Debian, той стартира Debian.

Изграждане на Linux ядро ​​и Android модули

АКТУАЛНО АКО ИМА SD КАРТА С EXT2 дял.

Ако създадете дял на таблета и поставите там Debian + HFS, той пак не стартира (замръзва по време на зареждане). Най-интересното е, че по време на зареждането няма нищо освен логото и мигащото „_“, така че не се знае на какво се задържа. Вероятно просто не намира Debian + hfse, а именно /dev/mmcblk0p1 (ext2).

zImage (3MB) не е ли компресирано ядро? (https://www.ibm.com/developerworks/ru/edu/l-embedded-distro/section5.html)

cyanogenmod · repo · компилация от източник · croot · закуска · брънч · make clean

Преди няколко месеца научих какво означава да настроя среда в Ubuntu за компилиране на CyanogenMod от източника. Оттогава мина много време, но това не означава, че съм правил кой знае какво :) Не просто се мотаех, но пренесох CyanogenMod на моя смартфон и натрупах опит по този въпрос. Въпреки това, преди да напиша статия за другите, трябваше да подредя всичко в собствената си глава. Сега ще направим още една малка стъпка - ще научим как да изтегляме източници от хранилището на CyanogenMod и ще се запознаем с няколко често използвани команди. Така че последния път създадох android директория в моята домашна директория, но сега промених решението си и я нарекох CyanogenMod:

cd ~/ && mkdir CyanogenMod
cd CyanogenMod

Забавлявайте се с git и repo

Докато работех с източниците, осъзнах необходимостта да се запозная с git и дори създадох свое собствено хранилище в GitHub. Там публикувам работата си върху дървото на устройствата за Alcatel OT-986. Първо трябва да инсталирате git:

sudo apt-get инсталирайте git

Сега е време да използвате помощната програма за репо и да изтеглите изходния код на CyanogenMod от GitHub на вашия компютър. Все още работя с клона ICS 4.0.4 (CyanogenMod 9.1.0):

repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0

Има и клонове cm-10.1, cm-10.2 (вероятно по-нови към момента на четене на тази статия). Изберете по свое усмотрение. Ако вие, като мен, пренасяте CyanogenMod на устройство, за което няма фърмуер на трети страни, тогава първо опитайте да изградите клон, който съответства на версията на фабричния софтуер (стоков ROM) - това ще улесни получаването Над земята. Alcatel OT-986 има Android 4.0.3 от кутията, така че започнах да работя с CM 9.1 - системата се стартира почти моментално, но версии 10.1 и 10.2 все още не са стартирани напълно за мен.

Наблюдаваме как репото се оплаква, когато се опитва да изпълни командата init:

*** Моля, кажете ми кой сте.

git config --global user.email " [имейл защитен]»
git config --global user.name "Вашето име"

за да зададете самоличността по подразбиране на вашия акаунт.

Ние ще посочим нашите данни, като следваме внимателно подканените команди. След това repo init трябва да се повтори и този път всичко ще приключи успешно. Кажете „да“ на предложението за оцветяване на репо изхода (забавно е, боже):

Да се ​​активира ли цветен дисплей в този потребителски акаунт (да/не)? г

Нека декларираме нашия манифест

На този етап официалното ръководство от екипа на CyanogenMod предлага да започнете да изтегляте източниците, но лично аз преди това трябва да направя още един трик с ушите си - да инсталирам моя персонализиран манифест. Това е XML файл, който ми позволява да кажа на репото, че не се нуждая от определени части от проекта. Също така не искате ли да виждате браузър по подразбиране в бъдещия си фърмуер? Моля те:

remove-project name=”CyanogenMod/android_packages_apps_Browser”

По този начин не само се отърваваме от нежеланите компоненти на бъдещия фърмуер, но и спестяваме място на твърдия диск и време за синхронизация с хранилището.

Направи си сам сглобяване на фърмуера на Android

От друга страна, манифестът може да се използва за добавяне на файлове към източниците, например ще свържа моето хранилище с дървото на устройствата:

път на проекта=”устройство/alcatel/cedarlite” име=”yareg-com/device_alcatel_cedarlite”

Този ред означава, че съдържанието на хранилището https://github.com/yareg-com/device_alcatel_cedarlite.git ще бъде копирано в директорията ~/CyanogenMod/device/alcatel/cedarlite. Тези файлове стават част от целия изходен код на бъдещия фърмуер, а в конкретния случай - особено важен компонент от него, дървото на устройствата. По този начин е възможно да се свързват хранилища от други източници, не само от GitHub.

Цялата информация в манифеста трябва да бъде форматирана във валиден XML формат и записана във файл с произволно име и разширение.xml в директорията.repo/local_manifests. По-горе посочих само фрагменти от код за яснота; вижте точната версия на манифеста в GitHub. Можете да създадете локално копие, като използвате git нещо подобно:

cd .repo && git клонинг https://github.com/yareg-com/manifest_alcatel_cedarlite.git
mv manifest_alcatel_cedarlite локални_манифести

Компютърът бъка, а ние си почиваме

След като направихме всички необходими приготовления, за да работи репото, нека започнем процеса на изтегляне на изходния код на вашия компютър:

cd ~/CyanogenMod
репо синхронизация

Сега всичко зависи от ширината на вашия интернет канал и скоростта на дисковата подсистема на компютъра. Искам да ви предупредя, че размерът на директорията на CyanogenMod ще нарасне до няколко десетки гигабайта, така че трябва да се погрижите за свободното място предварително. Освен това е най-добре да имате бърз SSD, няколко процесорни ядра и поне 4 GB RAM. Моята конфигурация е AMD A4 / 4 GB RAM / 2.5″ HDD 5400 rpm @ 75 Mbit/sec. Доста е удобно, но все още имам време да се разходя по време на репо синхронизация :) Добре е, че трябва да направите това само веднъж.

Вечеряте ли вече? И още закусваме!

Когато синхронизирането на репото приключи, ще инициализираме средата. Изтегляме някои зависимости на CyanogenMod, всъщност има много боклук - вече сглобен Rom Manager, Terminal Emulator (въпреки че това е полезно нещо) и така нататък, без които монтажът няма да се осъществи:

cd ~/CyanogenMod/доставчик/cm
./get-prebuilts

cd ~/CyanogenMod
източник build/envsetup.sh

Често използвани команди

Командата croot прави само едно нещо - тя ви телепортира в корена на изходната директория, в моя случай ~/CyanogenMod. Командата закуска подготвя средата за дървото на устройствата:

закуска cedarlite

Командата brunch стартира процеса на изграждане на фърмуера въз основа на конфигурационните файлове на дървото на устройството:

брънч кедърлит

Командата make clean ще премахне всички следи от предишната компилация, ако искате да започнете отначало. Изходният код не се изтрива, така че няма нужда да изтегляте всичко отново от хранилищата. Използвам make clean след големи промени в файловете на дървото на устройството.

Командата за синхронизиране на репо ще актуализира източниците до последното състояние. Ако промених нещо онлайн в моето хранилище на GitHub или екипът на CyanogenMod поправи някои грешки в кода, тогава е необходимо синхронизиране на репо.

Всички тези команди трябва да се изпълняват от главната директория на изходния код на CyanogenMod, тоест след изпълнение на командата croot.

Дискусия

Влезте в сайта, за да се присъедините към дискусията.