Ten przewodnik zawiera instrukcje krok po kroku dotyczące pobierania, kompilowania i flashowania niestandardowego jądra Pixela na potrzeby programowania. Dzięki GKI możliwa jest teraz aktualizacja jądra niezależnie od wersji platformy Android. Te kroki dotyczą tylko urządzeń Pixel 6 i nowszych. Dzieje się tak, ponieważ urządzenia Pixel 5 i starsze wymagają aktualizacji modułów jądra na partycji vendor
, co zależy od wersji platformy Android dla tych urządzeń. Tabela rozgałęzień jądra pikseli obsługiwanych przez GKI zawiera gałąź manifestu repozytorium jądra dla każdego urządzenia Pixel obsługiwanego przez GKI. Aby zapoznać się z gałęziami manifestu jądra Pixela 5 i wcześniejszych wersji, zapoznaj się z sekcją Starsze jądra pikseli .
GKI obsługiwało gałęzie jądra Pixel
Urządzenie | Ścieżka binarna w drzewie AOSP | Gałęzie repozytorium | Jądro GKI |
---|---|---|---|
Piksel 8 (shiba) Pixel 8 Pro (husky) | urządzenie/google/shusky-kernel | android-gs-shusky-5.15-android14-d1 | Android14-5.15 |
Składanie pikseli (Felix) | urządzenie/google/felix-kernel | android-gs-felix-5.10-android14 | android13-5.10 |
Tablet pikselowy (tangorpro) | urządzenie/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14 | android13-5.10 |
Pixel 7a (ryś) | urządzenie/google/lynx-kernel | android-gs-lynx-5.10-android14 | android13-5.10 |
Pixel 7 (pantera) Pixel 7 Pro (gepard) | urządzenie/google/pantah-kernel | android-gs-pantah-5.10-android14 | Android13-5.10 |
Piksel 6a (Bluejay) | urządzenie/google/bluejay-kernel | android-gs-bluejay-5.10-android14 | android13-5.10 |
Pixel 6 (wilga) Pixel 6 Pro (kruk) | urządzenie/google/raviole-kernel | android-gs-raviole-5.10-android14 | android13-5.10 |
Oprócz fabrycznie obsługiwanych jąder urządzenia Pixel 6 i 6 Pro są obsługiwane na potrzeby programowania GKI tylko w gałęziach jądra Android Common uwzględnionych w tabeli Obsługiwane platformy Android i kombinacje jądra Pixel 6/6 Pro . Ze względu na różnice w interfejsie UAPI dostawców między pakietami HAL i sterownikami jądra Pixel dla platformy Android, tabela zawiera obsługiwane kombinacje kompilacji.
Obsługiwane kombinacje platformy i jądra Androida Pixel 6/6 Pro
Oddział manifestu jądra pikseli | Oddział GKI | Kompilacja platformy Android | aosp-main support? |
---|---|---|---|
gs-android-gs-raviole-mainline | Android-mainline ( znacznik v6.7 ) | UP1A.231005.007.A1 (10762838) | Tak |
android14-gs-pixel-6.1 | Android14-6.1 | UP1A.231005.007.A1 (10762838) | Tak |
gs-android13-gs-raviole-5.15 | Android13-5.15 | TQ1A.230205.002 (9471150) | NIE |
Przygotuj urządzenie Pixel
Poniższy schemat opisuje proces aktualizacji jądra na urządzeniach Pixel 6 i nowszych:
Zflashuj urządzenie za pomocą witryny flash.android.com
- Przejdź do witryny flash.android.com
- Wybierz wersję Androida w oparciu o obsługiwane kombinacje platformy Android i jądra .
- Wybierz następujące opcje:
- Wyczyść urządzenie
- Wymuś flashowanie wszystkich partycji
- Wyłącz weryfikację
- Naciśnij przycisk Zainstaluj kompilację , aby sflashować urządzenie.
Pobierz i skompiluj jądro
Zsynchronizuj repozytorium jądra
Uruchom następujące polecenia, aby pobrać kod źródłowy jądra. Zapoznaj się z tabelą obsługiwanych platform Android i kombinacji jądra Pixel 6/6 Pro dla Pixel KERNEL_MANIFEST_BRANCH .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Zaktualizuj ramdysk dostawcy
Zaktualizuj plik vendor_ramdisk- DEVICE .img
w repozytorium jądra, aby był zgodny z wersją platformy Android wgraną na urządzeniu. Istnieje kilka opcji, które możesz zastosować.
Opcja 1) Wyodrębnij obraz dysku RAM dostawcy z obrazu fabrycznego Pixela .
Pobierz obsługiwany obraz fabryczny swojego urządzenia ze strony https://developers.google.com/android/images.
Wyodrębnij plik
vendor_boot.img
:- Poniższe polecenia wykorzystują przykład Pixel 6 Pro UP1A.231005.007.a1 . Zastąp nazwę pliku zip nazwą pliku pobranego obrazu fabrycznego.
unzip raven-up1a.231005.007.a1-factory-5d927f3e.zip
cd raven-up1a.231005.007.a1
unzip image-raven-up1a.231005.007.a1.zip vendor_boot.img
Rozpakuj plik
vendor_boot.img
aby uzyskać ramdysk dostawcy.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Skopiuj wyodrębniony plik
ramdisk_
do repozytorium jądra Pixel.Urządzenie DEVICE_RAMDISK_PATH Pixel 6 (wilga)
Pixel 6 Pro (kruk)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img Piksel 6a (Bluejay) private/devices/google/bluejay/vendor_ramdisk -bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Opcja 2) Skopiuj vendor_ramdisk
z lokalnie zbudowanego repozytorium platformy Android.
Urządzenie | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (wilga) Pixel 6 Pro (kruk) | prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img |
Piksel 6a (Bluejay) | private/devices/google/bluejay/vendor_ramdisk -bluejay.img |
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img
Skompiluj jądro (Kleaf)
W Androidzie 13 skrypt build.sh
został zastąpiony nowym systemem kompilacji jądra o nazwie Kleaf . W przypadku urządzeń korzystających z android13-5.15
i nowszych, jądro powinno zostać zbudowane przy użyciu Kleafa.
W przypadku Pixela 6 i 6 Pro z jądrem android14
i nowszym uruchom polecenie kompilacji Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
W przypadku Pixela 6 i 6 Pro z jądrem android13-5.15
uruchom polecenie kompilacji Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
W przypadku wszystkich innych jąder Pixela uruchom skrypt build_ DEVICE.sh
znajdujący się w KERNEL_REPO_ROOT . Na przykład, aby zbudować jądro dla Pixela 6 w gałęzi android-gs-raviole-5.10-android14
, uruchom komendę:
build_slider.sh
Domyślnie skrypty build_ DEVICE .sh
korzystają z prekompilowanego jądra GKI, aby przyspieszyć proces kompilacji. Jeśli chcesz zmodyfikować jądro rdzenia, ustaw zmienną środowiskową BUILD_AOSP_KERNEL=1
aby zamiast tego zbudować jądro ze źródeł lokalnych.
Więcej szczegółów na temat systemu kompilacji jądra i sposobów dostosowywania kompilacji można znaleźć w dokumentacji Kleafa .
Flashuj obrazy jądra
Uwaga: Jeśli nie wyłączyłeś weryfikacji, musisz to zrobić przed flashowaniem niestandardowego jądra. Oto polecenie, aby to zrobić:fastboot oem disable-verification
OSTRZEŻENIE: Jeśli flashujesz niestandardowe jądro na kompilację platformy, może być konieczne wyczyszczenie urządzenia, jeśli z nowym jądrem wiąże się obniżenie poziomu poprawki zabezpieczeń (SPL). Ten proces usuwa wszystkie Twoje dane osobowe. Przed wyczyszczeniem pamiętaj o utworzeniu kopii zapasowej danych.fastboot -w
Aby sflashować obrazy jądra, uruchom polecenie fastboot flash
dla każdej partycji jądra wymienionej dla twojego urządzenia. W przypadku partycji dynamicznych przed flashowaniem należy ponownie uruchomić komputer w trybie fastbootd
.
Urządzenie | Partycje jądra |
---|---|
Pixel 6 (wilga) Pixel 6 Pro (kruk) Piksel 6a (Bluejay) | uruchomić dtbo sprzedawca_boot sprzedawca_dlkm (partycja dynamiczna) |
Piksel 8 (shiba) Pixel 8 Pro (husky) Składanie pikseli (Felix) Tablet pikselowy (tangorpro) Pixel 7a (ryś) Pixel 7 (pantera) Pixel 7 Pro (gepard) | uruchomić dtbo dostawca_kernel_boot sprzedawca_dlkm (partycja dynamiczna) system_dlkm (partycja dynamiczna) |
Oto polecenia flashowania dla Pixela 6 na android-mainline
:
fastboot flash boot out/slider/dist/boot.img
fastboot flash dtbo out/slider/dist/dtbo.img
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Obrazy jądra można znaleźć w DIST_DIR .
Gałąź jądra | DIST_DIR |
---|---|
wersja 5.10 | out/mixed/dist |
wersja 5.15 i nowsze | out/ DEVICE /dist |
Uwaga: Jeśli posiadasz klucz sprzętowy szeregowy i chcesz włączyć dzienniki szeregowe, poleceniem jest:Przykładowe polecenie umożliwiające połączenie z hosta:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Przywróć obrazy fabryczne
Aby przywrócić urządzenie do stanu fabrycznego, możesz skorzystać z witryny flash.android.com .
Starsze jądra Pixela
Dla porównania, tabela rozgałęzień jądra starszego Pixela zawiera gałęzie repozytorium jądra dla urządzeń Pixel 5 i wcześniejszych. Są to urządzenia nieobsługiwane przez GKI.
Starsze gałęzie jądra Pixela
Urządzenie | Ścieżka binarna w drzewie AOSP | Gałęzie repozytorium |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (jeżyna) Piksel 5 (czerwony) | urządzenie/google/jądro-redbull | android-msm-redbull-4.19-android14 |
Pixel 4a (samogłów) | urządzenie/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Piksel 4 (płomień) Pixel 4 XL (koralowy) | urządzenie/google/koral-jądro | android-msm-coral-4.14-android13 |
Pixel 3a (żart) Pixel 3a XL (bonito) | urządzenie/google/bonito-jądro | android-msm-bonito-4.9-android12L |
Piksel 3 (niebieska linia) Pixel 3 XL (kreskowanie) | urządzenie/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) | urządzenie/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Piksel (żaglica) Pixel XL (marlin) | urządzenie/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |