Witam
W tym temacie przedstawię wam jak skompilować custom kernel dla waszego telefonu.
Po pierwsze musisz posiadać zainstalowanego linuxa (najlepiej którąś z dystrybucji ubuntu) na swoim pc/laptopie. Bootowanie z pendrive nie wchodzi w grę. (Ewentualnie wirtualna maszyna, ale do tego potrzebny jest mocny pc)
Po drugie, musisz znaleźć source dla swojego telefonu. Najlepiej szukać na Githubie , tam znajdziecie gotowe już projekty np.: https://github.com/Vangreen/android_kernel_lge_msm8226
Jeśli chcesz zacząć całkowicie od podstaw lub twój telefon niema jeszcze wsparcia, każdy producent powinein udostępniać źródła dla każdego z modeli (wystarczy wpisać frazę w googlu np.: "lg open source" )
LG- http://opensource.lge.com/index
Sony- http://developer.sonymobile.com/downloads/xperia-open-source-archives/
HTC- http://www.htcdev.com/devcenter/downloads
.
.
Po pobraniu i rozpakowaniu rozpakowaniu, musimy zaopatrzeć się w odpowiedni toolchains. Są dostępne różne rodzaje, zpotymalizowane pod dany procesor itd.
http://forum.xda-developers.com/showthread.php?t=2098133
Teraz musimy doinstalować dodatkowe pakiety. Otwieramy terminal i wklejamy:
sudo apt-get install mercurial mercurial-common flex bison gperf ncurses-dev texinfo gcc g++ \
autoconf automake libtool gawk patch autotools-dev libsigsegv2 libmpfr-dev libgmp-dev \
libltdl-dev libgmpxx4ldbl libmpc-dev expat libexpat1-dev libpython3.3 libpython3.3-stdlib \
libssl-dev libssl-dev zlib1g-dev subversion
Jeśli wszystko mamy pobrane ruszamy do pracy.
W folderze z źródłem kernela:
Pierw musimy się zorientować jaką nazwę kodową ma nasze urządzenie (moje LG F70 ma f70n) i wyszukać dla niego defconfig w
/arch/arm/configs/
Gdy już go znajdziemy zapamiętaj jego nazwę lub gdzieś zapisz, przyda się potem.
Prawie wszystko gotowe. Teraz tylko musimy otworzyć terminal w folderze gdzie jest nasz kernel source i wkisać
export ARCH=arm
export CROSS_COMPILE=/YOUR_TOOLCHAINS_PATH/TOOLCHAIN_FOLDER_NAME/bin/TOOLCHAIN_PREFIX-
W moim przypadku to
export ARCH=arm
export CROSS_COMPILE=/home/vangreen/Warsztat/arm-cortex_a7-linux-gnueabihf-linaro_4.9-master/bin/arm-cortex_a7-linux-gnueabihf-
Uwaga,
Niektórzy developerzy zawierają już ten patch w Makefile głównego katalogu kernela, trzeba po prostu znaleźć te linijki i zamienić na swoje wartości
Teraz tylko pozostało wklepać:
make twój_defconfig
W moim przypadku
make f70n_global_com_defconfig
Jeśli uzyskamy komunikat o poprawnym stworzeniu .config możemy rozpocząć kompilację wpisując komendę:
make -j#
# - tu wstawiasz liczbę rdzeni którą posiada twój procesor +1 (przy dwóch rdzeniach -j3 itd.)
I tyle, na koniec dostaniemy komunikat o poprawnym stworzeniu zImage. Zazwyczaj on wystarcza, jeśli jednak robimy poważniejsze zmiany typu over clocking musimy również stworzyć dt image.
./dtbToolCM -2 -o ./arch/arm/boot/dt.img -s 2048 -p ./scripts/dtc/ ./arch/arm/boot/
Uwaga jeśli twój source nie posiada plikudtbToolCM musisz go pobrać
I to tyle, jeśli chodzi o kompilację, zostaje nam jeszcze zrobić boot.img (czyli kernel)
Pobieramy AIK http://forum.xda-developers.com/showthread.php?t=2073775
Robimy kopie boot.img naszego urządzenia (w każdym modelu jest to inna ściezka więc odsyłam do wujka google)
Wklejamy nasz boot.img do folderu AIK i rozpakowujemy przeciągając pierw skrypt unpacking.sh do termianla poczym ansz kernel. Powinny pojawić się dwa foldery, jeden ramdisk, drugi split_img, wchodzimy do tego drugiego i podmieniamy zImage oraz dtb na te stworzone przez nas (nadając im te same nazwy). Teraz tylko pozostaje nam spakować z powrotem przeciagając skrypt repacking.sh do terminala i powinien ukazać się naszym oczą plik image-new.img - to jest nasz nowy kernel.
Pozostaje tylko flash za pomocą aplikacji flashify lub najnowszego twrp 3.0.x używając opcji flash image.
:cheers:
Jeśli widzisz błąd, ewentualnie chciałbyś coś dodać - napisz komentarz 😉