Ten przewodnik zawiera szczegółowe instrukcje pobierania, kompilowania i flashowania niestandardowego jądra Pixela na potrzeby programowania. Dzięki GKI można teraz aktualizować jądro niezależnie od kompilacji platformy Android. Te czynności dotyczą tylko urządzeń Pixel 6 i nowszych. Dzieje się tak, ponieważ Pixel 5 i starsze urządzenia wymagają aktualizacji modułów jądra na partycji vendor
, która zależy od wersji platformy Android na tych urządzeniach. Tabela gałęzi jądra Pixela obsługiwanych przez GKI zawiera gałąź pliku manifestu repozytorium jądra dla każdego urządzenia Pixel obsługiwanego przez GKI. Informacje o gałęziach pliku manifestu Pixela 5 i starszych wersji jądra znajdziesz w sekcji Starsze elementy jądra.
Gałęzie jądra Pixela obsługiwane przez GKI
Urządzenie | Ścieżka pliku binarnego w drzewie AOSP | Gałęzie repozytorium | Jądro GKI |
---|---|---|---|
Pixel 9 Pro Fold (kometa) | device/google/comet-kernel, | android-gs-comet-6.1-android14-qpr3-d1 | Android 14–6.1 |
Pixel 9 (Tokay) Pixel 9 Pro (Caiman) Pixel 9 Pro XL (Komodo) |
device/google/caimito-kernel, | android-gs-caimito-6.1-android14-qpr3-d1 | Android 14–6.1 |
Pixel 8a (akita) | device/google/akita-kernel, | android-gs-akita-5.15-android14-qpr3 | android14-5.15 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
device/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | android14-5.15 |
Pixel Fold (felix) | device/google/felix-kernel, | android-gs-felix-5.10-android14-qpr3 | android13-5.10 |
Pixel Tablet (Tangorpro) | device/google/tangorpro-kernel, | android-gs-tangorpro-5.10-android14-qpr3 | android13-5.10 |
Pixel 7a (lynx) | device/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | Android13–5.10 |
Pixel 7 (panther) Pixel 7 Pro (gepard) |
device/google/pantah-kernel, | android-gs-pantah-5.10-android14-qpr3 | Android13–5.10 |
Pixel 6a (bluejay) | urządzenie/google/bluejay-kernel | android-gs-bluejay-5.10-android14-qpr3 | android13-5.10 |
Pixel 6 (pomarańczowy) Pixel 6 Pro (czarny) |
urządzenie/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | Android13–5.10 |
Oprócz jąder obsługiwanych fabrycznie urządzenia Pixel 6 i 6 Pro są obsługiwane do celów związanych z rozwojem GKI tylko w odgałęziach jądra Android Common wymienionych w tabeli Obsługiwane kombinacje platformy Android i jądra dla Pixela 6/6 Pro. Ze względu na różnice w interfejsie UAPI dostawców między HAL platformy Android a sterownikami jądra systemu Pixel w tabeli znajdziesz obsługiwane kombinacje kompilacji.
Obsługiwane kombinacje platformy Android i jądra na Pixelu 6/6 Pro
Gałąź manifestu jądra Pixela | Gałąź GKI | Kompilacja platformy Androida | aosp-main – pomoc? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (6.8) | AP1A.240505.004 (11583682) | Tak |
android14-gs-pixel-6.1 | android 14 w wersji 6.1 | AP1A.240505.004 (11583682) | Tak |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | Nie |
Przygotuj urządzenie Pixel
Ten schemat przepływu danych opisuje proces aktualizacji jądra na urządzeniach Pixel 6 i nowszych:
Flashowanie urządzenia za pomocą witryny flash.android.com
- Otwórz stronę flash.android.com.
- Wybierz kompilację Androida na podstawie obsługiwanej platformy Androida i kombinacji jądra.
- Wybierz te opcje:
- Wyczyść pamięć urządzenia
- Wymuś użycie partycji we wszystkich partycjach
- Wyłączanie weryfikacji
- Naciśnij przycisk Zainstaluj kompilację, aby uruchomić urządzenie.
Pobieranie i skompilowanie jądra
Synchronizacja repozytorium jądra
Aby pobrać kod źródłowy jądra, uruchom te polecenia. Zapoznaj się z tabelą Obsługiwane kombinacje platformy Android i jądra na Pixelu 6/6 Pro, aby dowiedzieć się, jakie wersje systemu Android i jądra są obsługiwane na urządzeniuKERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Aktualizowanie pamięci RAM dostawcy
Zaktualizuj plik vendor_ramdisk-DEVICE.img
w repozytorium jądra, aby pasował do wersji platformy Android, która jest flashowana na urządzeniu. Masz kilka opcji do wyboru.
Opcja 1. Wyodrębnij obraz Ramdisk dostawcy z fabrycznego obrazu Pixela.
Pobierz obsługiwany obraz fabryczny urządzenia ze strony https://developers.google.com/android/images.
Rozpakuj
vendor_boot.img
:- W poniższych poleceniach użyto jako przykładu AP1A.240505.004 telefonu Pixel 6 Pro. Zastąp nazwę pliku ZIP nazwą pobranego obrazu fabrycznego.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Rozpakuj pakiet
vendor_boot.img
, aby uzyskać plik pamięci RAM dostawcy.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Skopiuj wyodrębniony plik
vendor-ramdisk-by-name/ramdisk_
do repozytorium jądra Pixela.Urządzenie DEVICE_RAMDISK_PATH Pixel 6 (pomarańczowy)
Pixel 6 Pro (czarny)kompilowane/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img Pixel 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 lokalnego repozytorium platformy Androida.
Urządzenie | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (pomarańczowy) Pixel 6 Pro (czarny) |
kompilowane/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Pixel 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
Kompilowanie jądra (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 wersji android13-5.15
i nowszych jądro należy utworzyć za pomocą narzędzia Kleaf.
W przypadku Pixela 6 i 6 Pro z jądrem android14
lub nowszym uruchom komendę kompilacji Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
W przypadku telefonów Pixel 6 i 6 Pro z jądrami android13-5.15
uruchom polecenie kompilacji Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
W przypadku pozostałych jąder systemu Pixel uruchom skrypt build_DEVICE.sh
znajdujący się pod adresem KERNEL_REPO_ROOT
. W większości przypadków DEVICE
musi być nazwą kodu odpowiadającą nazwie kodu użytej w kolumnie Binary Path in AOSP Tree (Ścieżka binarna w drzewie AOSP) w gałęziach jądra systemu Pixel obsługiwanego przez GKI. Może to być nazwa kodowa urządzenia, np. „akita” (Pixel 8a), lub nazwa kodowa reprezentująca grupę powiązanych urządzeń mających wspólne jądro, np. „caimito” (Pixel 9 (Tokay), Pixel 9 Pro (kajman) i Pixel 9 Pro XL (komodo). W przypadku wersji android14
i wcześniejszych użyj build_slider.sh
w przypadku Pixela 6 i Pixela 6 Pro oraz build_cloudripper.sh
w przypadku Pixela 7 i Pixela 7 Pro.
Aby na przykład utworzyć jądro dla Pixela 6 na gałęzi android-gs-raviole-5.10-android14
, uruchom to polecenie:
build_slider.sh
Domyślnie skrypty build_DEVICE.sh
korzystają z gotowego jądra GKI, aby przyspieszyć proces kompilacji. Jeśli chcesz zmodyfikować rdzeń jądra, ustaw zmienną środowiskową BUILD_AOSP_KERNEL=1
, aby utworzyć ją ze źródeł lokalnych.
Więcej informacji na temat systemu kompilacji jądra i dostosowywania kompilacji znajdziesz w artykule Kleaf – kompilacja rdzeni Androida przy użyciu Bazel.
Wgrywanie obrazów jądra systemu
Uwaga: jeśli weryfikacja nie została wyłączona, musisz ją wyłączyć przed zainstalowaniem niestandardowego jądra. Oto polecenie, które pozwala to zrobić:fastboot oem disable-verification
OSTRZEŻENIE: jeśli chcesz zainstalować niestandardowe jądro na platformie, może być konieczne wyczyszczenie urządzenia, jeśli nowe jądro powoduje obniżenie poziomu poprawek zabezpieczeń (SPL). Ten proces spowoduje usunięcie wszystkich danych osobowych. Przed wyczyszczeniem pamięci utwórz kopię zapasową danych.fastboot -w
Aby zaflashować obrazy jądra, uruchom polecenie fastboot flash
dla każdej partycji jądra wymienionej dla Twojego urządzenia. W przypadku partycji dynamicznych przed zapisaniem danych musisz ponownie uruchomić urządzenie w trybie fastbootd
.
Urządzenie | Partycje jądra systemu |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
rozruch dtbo vendor_boot vendor_dlkm (partycja dynamiczna) |
Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (panther) Pixel 7 Pro (gepard) |
rozruch dtbo vendor_kernel_boot vendor_dlkm (dynamic sama partycja) system_dlkm (partycja dynamiczna) |
Oto polecenia dotyczące migania na Pixelu 6 na urządzeniu 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 znajdziesz 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 masz szeregową wtyczkę i chcesz włączyć logi szeregowe, użyj polecenia:Przykładowe polecenie do połączenia 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 ustawień fabrycznych, możesz użyć strony flash.android.com.
Starsze jądra Pixel
W tabeli starsze gałęzie jądra znajdziesz gałęzie repozytorium jądra dla urządzeń Pixel 5 i starszych. Urządzenia nie obsługują interfejsu GKI.
Gałęzie jądra starszej wersji Pixela
Urządzenie | Ścieżka pliku binarnego w drzewie AOSP | Gałęzie repozytorium |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (czerwony) |
device/google/redbull-kernel, | android-msm-redbull-4.19-android14-qpr3, |
Pixel 4a (słońca) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (czerwony) Pixel 4 XL (koralowy) |
device/google/coral-kernel | android-msm-koralowy-4.14-android13 |
Pixel 3a (sargo) Pixel 3a XL (bonito) |
device/google/bonito-kernel, | android-msm-bonito-4.9-android12L, |
Pixel 3 (niebieska linia) Pixel 3 XL (kratka) |
urządzenie/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) |
device/google/wahoo-kernel, | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (żaglica) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-piec-qpr2 |