Tworzenie jąder Pixela

Ten przewodnik zawiera szczegółowe instrukcje pobierania, kompilowania w celu opracowania niestandardowego jądra Pixela. Dzięki GKI można teraz jest aktualizowana niezależnie od kompilacji platformy Androida. Te kroki są następujące dotyczy tylko Pixela 6 i nowszych. Dzieje się tak, ponieważ Pixel 5 wcześniejsze urządzenia wymagają zaktualizowania modułów jądra na partycji vendor, w zależności od kompilacji platformy Androida. GKI Tabela obsługiwanych gałęzi jądra Pixela zawiera Gałąź manifestu repozytorium jądra dla każdego urządzenia Pixel obsługiwanego przez GKI. Więcej informacji: sekcję dotyczącą starszej wersji rdzeni Pixela dla telefonów Pixel 5 oraz we wcześniejszych gałęziach pliku manifestu.

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) | device/google/bluejay-kernel | android-gs-bluejay-5.10-android14-qpr3 | Android13–5.10 Pixel 6 (oryginalny)
Pixel 6 Pro (kruk) | device/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | Android13–5.10

Oprócz jądra wspieranych przez fabrykę urządzenia Pixel 6 i 6 Pro są obsługiwane do celów programistycznych GKI tylko w systemie Android Common. gałęzie w obsługiwanej platformie Androida i jądrze Pixela 6/6 Pro Kombinacje. Ze względu na różnice między interfejsami UAPI dostawców między HAL platformy Androida a sterownikami jądra systemu Pixel z obsługiwanych kombinacji 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 Pixelu Urządzenia w wersji 6 i nowszych:

**Rysunek 1.** Schemat blokowy aktualizacji jądra systemu

Przeprowadź flashowanie urządzenia, korzystając z flash.android.com

.
  1. Wejdź na flash.android.com.
  2. Wybierz kompilację Androida na podstawie obsługiwanej platformy Androida i jądra systemu operacyjnego kombinacje.
  3. Wybierz te opcje:
    • Wyczyść pamięć urządzenia
    • Wymuś użycie partycji we wszystkich partycjach
    • Wyłącz weryfikację
  4. Naciśnij przycisk Zainstaluj kompilację, aby uruchomić urządzenie.

**Rysunek 2.** Przykład stacji świetlnej

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 Obsługiwane platformy i jądro Androida w telefonach Pixel 6/6 Pro Tabela kombinacji dla Pixela. 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 systemu, aby pasowało do kompilacji platformy Androida wyświetlanej urządzenia. Masz do wyboru kilka opcji.

Opcja 1. Wyodrębnij obraz Ramdisk dostawcy z fabrycznego obrazu Pixela.
  1. Pobierz obsługiwany obraz fabryczny urządzenia ze strony https://developers.google.com/android/images

  2. Rozpakuj vendor_boot.img:

    • Te polecenia używają telefonu Pixel 6 Pro AP1A.240505.004. Zastąp zipfile nazwa 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
    
  3. 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
    
  4. 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 parametr jądro należy utworzyć w systemie Kleaf.

W przypadku Pixela 6 i 6 Pro z jądrem android14 i nowszym uruchom kompilację Kleaf polecenie:

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ądrem android13-5.15 uruchom kompilację Kleaf polecenie:

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. Dla: aby zbudować jądro Pixela 6 w gałęzi android-gs-raviole-5.10-android14, uruchom polecenie:

build_slider.sh

Domyślnie skrypty build_DEVICE.sh używają parametru gotowego jądra GKI przyspieszającego proces kompilacji. Jeśli chcesz zmienić parametr jądro, a potem ustaw zmienną środowiskową BUILD_AOSP_KERNEL=1 do utworzenia ze źródeł lokalnych.

Więcej informacji na temat systemu kompilacji jądra i dostosowywania kompilacji znajdziesz w artykule Kleaf – Build Android Kernels with 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 instalujesz niestandardowe jądro platformy, to jeśli funkcja zabezpieczeń jest wyłączona, może być konieczne wyczyszczenie pamięci urządzenia niższy poziom poprawek (SPL) powiązany z nowym jądrem. Ten proces spowoduje usunięcie wszystkich Twoich danych osobistych. Pamiętaj, aby utworzyć kopię zapasową przed wymazaniem.
fastboot -w

Aby zainstalować obrazy jądra, dla każdego jądra uruchom polecenie fastboot flash partycji na urządzeniu. W przypadku partycji dynamicznych musisz zrestartować w trybie fastbootd przed rozpoczęciem lampy.

Urządzenie Partycje jądra systemu
Pixel 6 (oryginalny)
Pixel 6 Pro (kruk)
Pixel 6a (bluejay)
uruchamianie
dtbo
vendor_boot
vendor_dlkm (partycja dynamiczna)
Pixel 8 (shiba)
Pixel 8 Pro (husky)
Pixel Fold (felix)
Pixel Tablety (tangorpro)
Pixel 7a (rysi)
Pixel 7 (Panther)
Pixel 7 Pro (gepard)
uruchamianie
dtbo
vendor_kernel_boot
vendor_dlkm (partycja dynamiczna)
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 wtyczkę szeregową i chcesz ją włączyć dzienniki, polecenie będzie wyglądać tak:
fastboot oem uart enable
fastboot oem uart config 3000000
Przykładowe polecenie łączenia się z hosta:
screen -fn /dev/ttyUSB* 3000000

Przywróć obrazy fabryczne

Aby przywrócić obraz fabryczny urządzenia, możesz użyć: flash.android.com.

Starsze jądra systemu Pixel

W celach informacyjnych: starsze gałęzie jądra Pixela tabela zawiera gałęzie repozytorium jądra 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