Ten przewodnik zawiera szczegółowe instrukcje pobierania, skompilowania i flashowania niestandardowego jądra Pixela na potrzeby programowania. Dzięki GKI można teraz aktualizować jądro niezależnie od kompilacji platformy Androida. Te instrukcje 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
, co zależy od kompilacji platformy Android. Tabela Obsługiwane gałęzie jądra Pixela zawiera gałąź 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 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 (oryginalny) Pixel 6 Pro (kruk) |
urządzenie/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | Android13–5.10 |
Urządzenia Pixel 6 i 6 Pro obsługują nie tylko jądra obsługiwane przez fabrykę, ale też urządzenia Pixel 6 i 6 Pro do celów programistycznych GKI tylko w gałęziach jądra systemu Android Common uwzględnionych w tabeli Obsługiwane platformy Androida i kombinacje jądra systemu Pixel 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 Androida i jądra systemu Pixel 6 lub 6 Pro
Gałąź pliku manifestu jądra Pixela | Gałąź GKI | Kompilacja platformy Androida | Pomoc aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (wersja 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 | android 13–5.15 | TQ1A.230205.002 (9471150) | Nie |
Przygotuj urządzenie Pixel
Ten schemat blokowy opisuje proces aktualizowania jądra na urządzeniach Pixel 6 i nowszych:
Przeprowadź flashowanie urządzenia, korzystając z flash.android.com
- Wejdź na 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łącz weryfikację
- Naciśnij przycisk Zainstaluj kompilację, aby uruchomić urządzenie.
Pobieranie i skompilowanie jądra
Synchronizacja repozytorium jądra
Uruchom następujące polecenia, aby pobrać kod źródłowy jądra. Zapoznaj się z tabelą Obsługiwana platforma Androida i kombinacje jądra systemu Pixel 6/6 Pro dla telefonu Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Aktualizowanie dysku ramdisk dostawcy
Zaktualizuj plik vendor_ramdisk-DEVICE.img
w repozytorium jądra, aby pasował do kompilacji platformy Androida wyświetlanej na urządzeniu. Masz do wyboru kilka opcji.
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 (oryginalny)
Pixel 6 Pro (kruk)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 (oryginalny) Pixel 6 Pro (kruk) |
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
i nowszych uruchom polecenie 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ę w lokalizacji KERNEL_REPO_ROOT. Aby na przykład utworzyć jądro Pixela 6 w gałęzi android-gs-raviole-5.10-android14
, uruchom 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 – kompilowanie 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 kompilujesz kompilację platformy z użyciem niestandardowego jądra, a z nowym jądrem jest powiązana aktualizacja poziomu zabezpieczeń (SPL), konieczne może być czyszczenie urządzenia. Ten proces spowoduje usunięcie wszystkich Twoich danych osobistych. Nie zapomnij utworzyć kopii zapasowej danych przed wyczyszczeniem pamięci.fastboot -w
Aby zmodyfikować obrazy jądra, uruchom polecenie fastboot flash
dla każdej partycji jądra wymienionej na urządzeniu. W przypadku partycji dynamicznych musisz uruchomić ponownie
w trybie fastbootd
, zanim będzie można rozpocząć aktualizację.
Urządzenie | Partycje jądra systemu |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (kruk) 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 port szeregowy i chcesz włączyć logi szeregowe, polecenie będzie wyglądać tak:Przykładowe polecenie do łączenia się z hosta:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Przywróć obrazy fabryczne
Aby przywrócić na urządzeniu obrazy fabryczne, możesz użyć flash.android.com.
Starsze jądra systemu 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) | urządzenie/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (płomień) Pixel 4 XL (koralowy) |
urządzenie/google/jądro-koralu | 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 (krzyżowe) |
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, |
Pixel (żaglica) Pixel XL (marlin) |
device/google/marlin-kernel, | android-msm-marlin-3.18-piec-qpr2 |