Skocz do zawartości

    Rekomendowane odpowiedzi

    Vangreen

    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 pliku dtbToolCM 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 ;) 

     

    Edytowane przez Vangreen

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piskorfa

    Za tutka masz plus, choć definitywnie nie zgadzam się z drugim zdaniem :)

    Po pierwsze musisz posiadać zainstalowanego linuxa (najlepiej którąś z dystrybucji ubuntu) na swoim pc/laptopie. Wirtualne maszyny lub bootowanie z pendrive nie wchodzi w grę.

    Większość czasu działam na wirtualnych maszynasz i w niczym mi to nie przeszkadzało w kompilacji kerneli i romów. Oczywiście tracimy w takim wypadku na ogólnej wydajności i końcowym czasie kompilacji, ale jak ktoś musi uzywać windy, to wirtualka jak najbardziej się sprawdzi.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Vangreen

    @@piskorfa to są półśrodki. Na instalacje ubuntu i pobranie niezbędnych rzeczy wystarczy 50 gb. Wystarczy stworzyć oddzielną partyjce i mieć dualboot z windowsem. Ja z wirtualnymi maszynami zawsze miałem problemy, nie działało tak jak chciałem.

    Jeśli ktoś chce się na poważnie bawić d developerke prędzej czy później będzie i tak musiał zainstalować linuxa.

    ЛГ

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piskorfa

    Bez przesady :) Ile zajmuje kompilacja kernela? Kilka minut? Cały rom MM na czterokorowym cpu z 4GB przydzielonego ram w wirtualnej maszynie kompiluję poniżej 50minut, z ccache które raptem osiąga ~7GB pamięci dyskowej.

    I jakby co całą wirtualną maszynę mam na 128GB pendrive i mogę ją odpalić, gdziekolwiek ten pendrive podepnę.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    xyyy018

    A tak Sobie odkopię trochę temat.

    Mam source Samsunga dla Galaxy Y (GT-S5360) ze strony Samsunga

    W środku znajduje się plik readme z instrukcją odnośnie kompilacji kernela


    1. How to Build
    - get Toolchain
    Visit http://www.codesourcery.com/, download and install Sourcery G++ Lite 2009q3-68 toolchain for ARM EABI.
    Extract kernel source and move into the top directory.
    $ cd kernel/common/
    $ make bcm21553_totoro_05_defconfig
    $ make

    2. Output files
    - Kernel : kernel/common/arch/arm/boot/zImage

    3. How to make .tar binary for downloading into target.
    - change current directory to kernel/common/arch/arm/boot
    - type following command
    $ tar cvf GT-S5360_Kernel_Gingerbread.tar zImage

    So, mam robić tak jak jest napisane w poradniku czy trzymać się instrukcji Samsunga?

     

    Druga sprawa, na stronie Samsunga są różne paczki z kodem źródłowym dla różnych wersji mojego telefonu, skąd mam wiedzieć który to mój? :D

    (http://opensource.samsung.com/reception/receptionSub.do?method=sub⊂=F&searchValue=GT-S5360)

     

    I ostatnia sprawa, jak mogę tego swojego kernela zaflashować używając CWM?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Vangreen
    na stronie Samsunga są różne paczki z kodem źródłowym dla różnych wersji mojego telefonu, skąd mam wiedzieć który to mój?

    Wybierz najnowszą.
     
    Ta instrukcja jest niemal że bliźniacza do tej którą opisałem. Wzoruj się raczej na mojej wersji. 

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    A jak dodać jakieś fajne rzeczy do kernela tj. wsparcie SWAP, Z-RAM, zarządcy itp?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Vangreen
    A jak dodać jakieś fajne rzeczy do kernela tj. wsparcie SWAP, Z-RAM, zarządcy itp?

    Szukasz kernela który ma już to dodane i adaptujesz pod swoje źródła.

    G3

    dodana zawartość

    A jak dodać jakieś fajne rzeczy do kernela tj. wsparcie SWAP, Z-RAM, zarządcy itp?

    Szukasz kernela który ma już to dodane i adaptujesz pod swoje źródła.

    G3

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Komenda

    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

    nie dziala u mnie. :/

    Screenshot from 2017-04-15 23-01-59.png

    Edytowane przez kamil79123

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Vangreen

    Przecież masz napisane co jest nie tak. Wywalić te pakiety i poszukać nowszych odpowiedników.

    G3

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.