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 Pixela 6 i nowszych urządzeń. Dzieje się tak, ponieważ Pixel 5 i starsze urządzenia wymagają zaktualizowania modułów jądra na partycji vendor
, co zależy od wersji platformy Android na tych urządzeniach. Tabela Gałęzie jądra Pixela obsługujące GKI zawiera gałąź manifestu repozytorium jądra dla każdego urządzenia Pixel obsługującego GKI. W przypadku gałęzi manifestu jądra Pixela 5 i starszych urządzeń zapoznaj się z sekcją Starsze jądra Pixela.
Obsługiwane gałęzie jądra Pixela w GKI
Urządzenie | Gałęzie repozytorium | Jądro GKI |
---|---|---|
Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
Pixel 9 Pro Fold (comet) | android-gs-comet-6.1-android16 | android14-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
android-gs-caimito-6.1-android16 | android14-6.1 |
Pixel 8a (akita) | android-gs-akita-6.1-android16 | android14-6.1 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
android-gs-shusky-6.1-android16 | android14-6.1 |
Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
android-gs-pantah-6.1-android16 | android14-6.1 |
Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
android-gs-raviole-6.1-android16 | android14-6.1 |
Oprócz jąder obsługiwanych fabrycznie urządzenia Pixel 6 i 6 Pro są obsługiwane na potrzeby rozwoju GKI tylko w przypadku gałęzi wspólnego jądra Androida wymienionych w tabeli Obsługiwane kombinacje platformy i jądra Androida na urządzeniach Pixel 6 i 6 Pro. Ze względu na różnice w interfejsie UAPI dostawców między warstwami HAL platformy Android a sterownikami jądra Pixela tabela zawiera obsługiwane kombinacje kompilacji.
Obsługiwane kombinacje platformy Android i jądra na Pixelu 6 i 6 Pro
Pixel Kernel Manifest Branch | Gałąź GKI | Kompilacja platformy Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
android16-6.12-gs101 | android16-6.12 | android-latest-release |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Przygotuj urządzenie Pixel
Poniższy schemat blokowy przedstawia proces aktualizacji jądra na urządzeniach Pixel 6 i nowszych:
Flashowanie urządzenia za pomocą strony flash.android.com
- Otwórz stronę flash.android.com.
- Wybierz kompilację Androida na podstawie obsługiwanych kombinacji platformy Android i jądra.
- Wybierz następujące opcje:
- Wyczyść pamięć urządzenia
- Wymuś flashowanie wszystkich partycji
- Wyłączanie weryfikacji
- Aby wgrać oprogramowanie na urządzenie, naciśnij przycisk Zainstaluj kompilację.
Pobieranie i kompilowanie jądra
Synchronizowanie repozytorium jądra
Aby pobrać kod źródłowy jądra, uruchom te polecenia: Informacje o telefonie PixelKERNEL_MANIFEST_BRANCH znajdziesz w tabeli Obsługiwane kombinacje platformy Android i jądra w przypadku Pixela 6 i 6 Pro.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Aktualizowanie dysku RAM dostawcy
Zaktualizuj plik vendor_ramdisk-DEVICE.img
w repozytorium jądra, aby pasował do kompilacji platformy Android wgranej na urządzenie. Plik vendor_ramdisk-DEVICE.img
możesz zaktualizować na kilka sposobów. Jeśli używasz Androida 15
QPR2 (BP11.241025.006) lub nowszego, skorzystaj z opcji (1). W przeciwnym razie użyj opcji (2).
Opcja 1. Zaktualizuj tylko bity DTB i DLKM ramdysku partycji vendor_boot
Od wersji fastboot 35.0.2-12583183 możesz bezpośrednio flashować dysk RAM DTB i DLKM na partycji
vendor_boot
. Pobierz i wyodrębnijsdk-repo-HOST_OS-platform-tools-12583183.zip
z artefaktów v35.0.2-12583183 do środowiska na komputerze hosta, aby móc z nich korzystać.Postępuj zgodnie z instrukcjami, aby wgrać DTB i
vendor_boot:dlkm
w sekcji Wgraj obrazy jądra.Opcja 2. Wyodrębnij obraz ramdysku dostawcy z obrazu fabrycznego Pixela.
Pobierz obsługiwany obraz fabryczny dla swojego urządzenia ze strony https://developers.google.com/android/images.
Wyodrębnij
vendor_boot.img
:W tych poleceniach używamy jako przykładu Pixela 6 Pro w wersji AP1A.240505.004. 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
vendor_boot.img
, aby uzyskać dysk 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 (oriole)
Pixel 6 Pro (raven)prebuilts/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
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ń z Androidem android13-5.15
lub nowszym jądro powinno być zbudowane przy użyciu Kleaf.
Dla wygody możesz uruchomić skrypt build_DEVICE.sh
znajdujący się na stronie KERNEL_REPO_ROOT
. W większości przypadków DEVICE
musi być nazwą kodową, która może być nazwą kodową jednego urządzenia, np. „akita” (Pixel 8a), lub nazwą kodową reprezentującą grupę powiązanych urządzeń, które mają wspólne jądro, np. „caimito”, co oznacza Pixel 9 (tokay), Pixel 9 Pro (caiman) i Pixel 9 Pro XL (komodo). W przypadku wersji android14
i starszych używaj 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 w gałęzi android-gs-raviole-5.10-android14
, uruchom to polecenie:
build_slider.sh
Domyślnie w przypadku gałęzi jądra produkcyjnego skrypty build_DEVICE.sh
używają wstępnie skompilowanego jądra GKI, aby przyspieszyć proces kompilacji. Jeśli chcesz zmodyfikować podstawowy kernel, ustaw zmienną środowiskową BUILD_AOSP_KERNEL=1
, aby skompilować kernel z lokalnych źródeł. Gałęzie jądra deweloperskiego domyślnie tworzą jądro bezpośrednio ze źródła.
Więcej informacji o systemie kompilacji jądra i sposobie dostosowywania kompilacji znajdziesz w artykule Kleaf – kompilowanie jąder Androida za pomocą Bazela.
Wgraj obrazy jądra
Uwaga: jeśli nie wyłączysz weryfikacji, musisz to zrobić przed wgraniem niestandardowego jądra. Aby to zrobić, użyj tego polecenia:fastboot oem disable-verification
OSTRZEŻENIE: jeśli wgrywasz 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 aktualizacji zabezpieczeń. Ten proces spowoduje usunięcie wszystkich danych osobowych. Przed wymazaniem danych utwórz ich kopię zapasową.fastboot -w
Aby wgrać obrazy jądra, uruchom polecenie fastboot flash
dla każdej partycji jądra wymienionej dla Twojego urządzenia. W przypadku partycji dynamicznych przed rozpoczęciem flashowania musisz ponownie uruchomić urządzenie w trybie fastbootd
.
Urządzenie | Partycje jądra |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot lub vendor_boot:dlkm 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 (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (dynamic partition) system_dlkm (dynamic partition) |
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 --dtb out/slider/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Jeśli w przypadku Pixela 6, 6 Pro lub 6a zaktualizowano vendor_ramdisk
w sekcji Aktualizacja dysku RAM dostawcy, użyj tego polecenia, aby zaktualizować partycję vendor_boot
:
fastboot flash vendor_boot out/slider/dist/vendor_boot.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 klucz sprzętowy z interfejsem szeregowym i chcesz włączyć dzienniki szeregowe, użyj tego polecenia:Przykładowe polecenie nawiązania połączenia z hosta: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Przywracanie obrazów fabrycznych
Aby przywrócić urządzenie do obrazów fabrycznych, możesz użyć strony flash.android.com.
Starsze kernele Pixela
W tabeli starszych gałęzi jądra Pixela znajdziesz gałęzie repozytorium jądra dla Pixela 5 i starszych urządzeń. Są to urządzenia nieobsługujące GKI.
Starsze gałęzie jądra Pixela
Urządzenie | Ścieżka pliku binarnego w drzewie AOSP | Gałęzie repozytorium |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (sunfish) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (płomień) Pixel 4 XL (koralowy) |
device/google/coral-kernel | android-msm-coral-4.14-android13 |
Pixel 3a (sargo) Pixel 3a XL (bonito) |
device/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3 (blueline) Pixel 3 XL (crosshatch) |
device/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 (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |