Spisu treści:
- Oryginalne źródła jądra dla różnych marek:
- eksportuj CROSS_COMPILE = $ (pwd) / bin / -
- eksportuj CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-
- eksport ARCH = && eksport SUBARCH =
- export ARCH = arm64 && export SUBARCH = arm64
- Budowanie jądra
- Flashowanie jądra w Android Image Kitchen
- Flashowanie jądra w AnyKernel2
Wideo: Jak Zbudować Niestandardowe Jądro Androida
2024 Autor: Kayla Nelson | [email protected]. Ostatnio zmodyfikowany: 2023-12-17 01:33
Jeśli kiedykolwiek zastanawiałeś się, „jak zbudować jądro Androida”, ten przewodnik jest dla Ciebie. Budowanie własnego jądra może być satysfakcjonującym doświadczeniem, ponieważ da ci większy stopień kontroli nad urządzeniem z Androidem, od procesora, pamięci RAM, GPU, po baterię.
Jest to bardzo praktyczny proces, który wymaga wielu poleceń kompilacji i konsoli, ale jeśli znasz Linuksa (lub dobrze postępujesz zgodnie ze wskazówkami), nie powinno to stanowić problemu.
Należy pamiętać, że ten przewodnik dotyczy urządzeń innych niż Mediatek. Appual’s ma przewodnik kompilacji jądra dla konkretnego sojusznika dla urządzeń z Androidem opartych na Mediatek tutaj: Jak zbudować jądro Androida Mediatek ze źródła
Inne interesujące artykuły Appual to:
- Jak zbudować niestandardową pamięć ROM z projektu Android Open Source | Pt. 2
- Jak ręcznie motywować interfejs systemu Android
Jeśli budujesz zwyczaj kernel, wystarczy sklonować jądro z Gita za pomocą poleceń podanych poniżej. Ale jeśli kompilujesz podstawowe jądro, musisz wiedzieć, skąd wziąć oryginalne jądro ze źródła (z różnych powodów).
Oryginalne źródła jądra dla różnych marek:
- LG
- Samsung
- HTC
- OnePlus
- Motorola
- Sony
Aby pobrać jądro, użyj git clone lub pobierz plik tarball i rozpakuj go.
Oto polecenie git:
git clone -b
-LUB-
tar -xvf
Na przykład byłoby to polecenie pobrania najnowszego jądra Nexusa 6P Nougat 3.10 od Google: git clone -b android-msm-angler-3.10-nougat-mr2 https://android.googlesource.com/kernel/msm/ angle
Powinno to sklonować repozytorium jądra / msm do folderu angler i automatycznie pobrać plik android-msm-angler-3.10-nougat-mr2.
Ponieważ większość urządzeń z Androidem jest oparta na architekturze ARM, będziemy musieli użyć kompilatora, który będzie ukierunkowany na urządzenia ARM - oznacza to, że kompilator hosta / natywny nie będzie działać, chyba że kompilujesz na innym urządzeniu ARM. Masz tutaj kilka opcji. Możesz samemu skompilować, jeśli wiesz jak, używając czegoś takiego jak Crosstool-NG. Alternatywnie możesz pobrać wstępnie skompilowany kompilator - taki jak ten, który Google zapewnia dla Arm 32-bit i Arm64.
Przed pobraniem gotowego kompilatora musisz znać dokładną architekturę swojego urządzenia, więc użyj aplikacji takiej jak CPU-Z, aby to ustalić.
Innym popularnym łańcuchem narzędzi byłby UberTC - ale w przypadku każdego jądra wyższego niż 4.9 trzeba będzie je załatać, a kompilacja najpierw z łańcuchem narzędzi Google jest najlepszą praktyką.
W każdym razie, gdy już zdecydujesz się na łańcuch narzędzi, musisz go sklonować. git clon
Teraz wskaż Makefile swojemu kompilatorowi, uruchamiając go z folderu toolchain.
eksportuj CROSS_COMPILE = $ (pwd) / bin / -
Przykład:
eksportuj CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-
Teraz powiedz Makefile o architekturze twojego urządzenia.
eksport ARCH = && eksport SUBARCH =
Przykład:
export ARCH = arm64 && export SUBARCH = arm64
Znajdź właściwy defconfig, przechodząc do folderu arch // configs w źródle jądra (np. Arch / arm64 / configs).
Następnie znajdź właściwy plik konfiguracyjny programisty dla budowanego jądra. Zwykle powinien mieć postać _defconfig lub _defconfig. Defconfig poinstruuje kompilator, jakie opcje należy uwzględnić w jądrze.
Można również znaleźć ogólne konfiguracje Qualcomm, zwykle będzie to coś w rodzaju (msm-perf_defconfig, msmcortex-perf_defconfig).
Budowanie jądra
Kod:
czyścić uczynić mrproper Marka make -j $ (nproc –all
Gdy te polecenia się powiodą, na końcu powinien znajdować się plik Image, Image-dtb, Image.gz lub Image.gz-dtb.
Jeśli te polecenia nie powiodły się, może być konieczne określenie katalogu wyjściowego podczas tworzenia nowego jądra opartego na CAF, na przykład:
mkdir -p out spraw, aby O = na zewnątrz było czyste make O = out mrproper zrobić O = out zrobić O = out -j $ (nproc –all
Jeśli nadal nie chce działać, coś jest zepsute - sprawdź swoje nagłówki lub powiedz o tym programistom jądra.
Jeśli jądro zostało pomyślnie skompilowane, musisz je teraz sflashować. Można to zrobić na dwa różne sposoby - możesz rozpakować i przepakować bootimage za pomocą Android Image Kitchen lub AnyKernel2.
Mogą też występować pewne niuanse związane z określonymi urządzeniami - w takim przypadku musisz poprosić o pomoc programistów urządzeń.
Flashowanie jądra w Android Image Kitchen
Pobierz aplikację Android Image Kitchen
Wyodrębnij obraz rozruchowy swojego urządzenia z Androidem z najnowszego dostępnego obrazu (w standardowej lub niestandardowej pamięci ROM).
Teraz rozpakuj obraz, używając tego kodu: unpackimg.sh.im
Następnie znajdź plik zImage i zastąp go skompilowanym obrazem jądra - zmień jego nazwę na taką, jaka była w obrazie rozruchowym.
Teraz uruchom ten kod, aby przepakować obraz: repackimg.s
Teraz możesz sflashować nowy obraz rozruchowy za pomocą fastboot, TWRP itp.
Flashowanie jądra w AnyKernel2
Pobierz najnowszy AnyKernel2
Zastosuj tę poprawkę, aby wyczyścić wszystkie pliki demonstracyjne. wget https://github.com/nathanchance/AnyKernel2/commit/addb6ea860aab14f0ef684f6956d17418f95f29a.diff patch -p1 <addb6ea860aab14f0ef684f6956d17418f95f29a.diff rm addb6ea860aab14f0ef684f6956d17418f95f29a.dif
Teraz umieść obraz jądra w katalogu głównym pliku i otwórz anykernel.sh, aby zmodyfikować te wartości:
- strunowy: nazwa twojego jądra
- Nazwa#: Lista wszystkich nazw kodowych urządzenia (z /system/build.prop: ro.product.device, ro.build.product)
- blok: Ścieżka obrazu rozruchowego w pliku fstab. Fstab można otworzyć z katalogu głównego urządzenia i będzie wyglądać mniej więcej tak:
Pierwsza kolumna to wartość, na którą chcesz ustawić blok.
Teraz ponownie spakuj jądro i sflashuj je w AnyKernel2: zip -r9 kernel.zip * -x README.md kernel.zi
Ostrzegamy, że wiele jąder z CAF zawiera skrypt Pythona, który wyzwoli –Werror, co w zasadzie powoduje, że twoja kompilacja generuje błędy przy najmniejszych rzeczach. Tak więc w przypadku wyższych wersji GCC (które zawierają więcej ostrzeżeń), zazwyczaj będziesz musiał wprowadzić zmiany w pliku Makefile:
diff --git a / Makefile b / Makefile indeks 1aaa760f255f..bfccd5594630 100644 --- a / Makefile +++ b / Makefile @@ -326,7 +326,7 @@ include $ (srctree) /scripts/Kbuild.include AS = $ (CROSS_COMPILE) jako LD = $ (CROSS_COMPILE) ld -REAL_CC = $ (CROSS_COMPILE) gcc + CC = $ (CROSS_COMPILE) gcc CPP = $ (CC) -E AR = $ (CROSS_COMPILE) ar NM = $ (CROSS_COMPILE) nm @@ -340,10 +340,6 @@ DEPMOD = / sbin / depmod PERL = perl CHECK = rzadki
- # Użyj opakowania dla kompilatora. To opakowanie wyszukuje nowe pliki - # ostrzeżenia i powoduje zatrzymanie kompilacji po ich napotkaniu. -CC = $ (srctree) /scripts/gcc-wrapper.py $ (REAL_CC) - FLAGI KONTROLNE: = -D_linux_ -Dlinux -D_STDC_ -Dunix -D_unix_ / -Wbitwise -Wno-return-void $ (CF) CFLAGS_MODULE =
Używanie wyższego łańcucha narzędzi GCC (5.x, 6.x, 7.x lub nawet 8.x) będzie wymagało nuke'owego skryptu opakowującego GCC jak powyżej i użycia zunifikowanego pliku nagłówkowego GCC (wybierz następujące, jeśli masz dołączone / linux /compiler-gcc#.h):
3.4 / 3.10: 3.18
Nawet jeśli pojawia się dużo ostrzeżeń, nie trzeba ich naprawiać (zazwyczaj).
Twoje jądro jest zbudowane i gotowe do pracy!
Zalecana:
Najlepsze Niestandardowe Jądra Dla Androida
Jądro Androida jest pomostem między sprzętem a oprogramowaniem urządzenia. Informuje urządzenie, jak ma reagować na różne polecenia z aplikacji
Jak Dodać Niestandardowe Akcje Do Przycisku Głównego Androida
Producenci mają różne podejście do budowania smartfonów z Androidem. Używają różnych implementacji przycisków nawigacyjnych. Niektórzy używają klawiszy ekranowych
Jak Dodać Niestandardowe Widżety Blokady Ekranu Do Androida
Wielu użytkowników Androida często zastanawia się, jak dodać widżety do swojego ekranu blokady - była to funkcja Androida 4.0, ale została usunięta w Lollipop. Tak więc niektórzy
Jak Zaktualizować Jądro Androida Do Najnowszej Wersji Stabilnej Systemu Linux
Omówiliśmy przewodniki po jądrach Androida, takie jak „Jak zbudować niestandardowe jądro” i „Najlepsze niestandardowe jądra dla Androida”, ale dzisiaj pokażemy
Jak Zbudować Jądro Androida Na Windows 10
Appual's ma kilka świetnych przewodników po programowaniu na Androida, takich jak Jak zbudować niestandardową pamięć ROM z Android Open Source Project - ale te przewodniki są zwykle