Obrazy do odzyskiwania konta

Na urządzeniach innych niż A/B obraz przywracania powinien zawierać informacje z blob drzewa urządzenia (DTB) lub Zaawansowana konfiguracja i interfejs zasilania (ACPI). Kiedy taki po włączeniu przywracania systemu, program rozruchowy może wczytać obraz nakładki jest zgodny z obrazem przywracania. Urządzenia obsługujące A/B (bezproblemowy) aktualizacje powinny w trakcie rozruchu korzystać z opcji odzyskiwania, a nie oddzielne partycje odzyskiwania (szczegóły znajdziesz w artykule Implementowanie testów A/B) Aktualizacje).

Opcje uwzględnienia DTBO/ACPIO przywracania w ramach rozruchu/przywracania różnią się w zależności od wersji Androida.

Wersja Zaktualizuj schemat Zgodność z GKI Wersja nagłówka rozruchowego (uruchamianie urządzeń) Wersja nagłówka rozruchu (uaktualnianie urządzeń) Wymagany jest specjalny obraz przywracania
11 A/B,
Wirtualne A/B
Tak 3* Nie dotyczy Nie
A/B,
Wirtualne A/B
Nie 2, 3 0, 1, 2, 3, Nie
inne niż A/B Tak 3 Nie dotyczy Tak
inne niż A/B Nie 2, 3 0, 1, 2, 3, Tak
10 (Q) A/B Nie dotyczy 2 0, 1, 2 Nie
inne niż A/B Nie dotyczy 2 0, 1, 2 Tak
9 (K) A/B Nie dotyczy 1 0, 1 Nie
inne niż A/B Nie dotyczy 1 0, 1 Tak
8 (O) A/B Nie dotyczy Nie dotyczy (uznano, że ma wartość 0) Nie dotyczy (uznano, że ma wartość 0) Nie
inne niż A/B Nie dotyczy Nie dotyczy (uznano, że ma wartość 0) Nie dotyczy (uznano, że ma wartość 0) Tak

* Urządzenia A/B z Androidem 11 lub nowszej i przy użyciu ogólnego obrazu jądra systemu (GKI) musi używać tagu główna wersja nagłówka rozruchowego 3, aby być jest zgodna z otwartą rozruchem dostawcy .

Najważniejsze kwestie:

  • Na urządzeniach A/B nie trzeba określać obrazu przywracania, ponieważ aktualizacje A/B używają 2 zbiorów partycji (w tym boot i dtbo) i przełączać się między nimi podczas eliminuje potrzebę używania obrazu odzyskiwania. Urządzenia typu A/B mogą użyj dedykowanego obrazu odzyskiwania.

  • Urządzenia inne niż A/B z Androidem 11 lub nowszym i używanie wersji 3 nagłówka rozruchowego musi wyraźnie określać nagłówek rozruchowy wersja 2 dla obrazu odzyskiwania. Na przykład:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • W przypadku architektur, które nie obsługują drzew urządzeń, obraz odzyskiwania może dodaj obraz ACPIO zamiast obrazu DTBO.

Informacje o błędach OTA i obrazach przywracania

Aby zapobiec błędom związanym z siecią bezprzewodową (OTA) na urządzeniach innych niż A/B, obraz przywracania powinny być samowystarczalne i niezależne od innych obrazów. Podczas aktualizacji OTA jeśli problem występuje po zaktualizowaniu obrazu nad powierzchnią (ale przed po ukończeniu pełnej aktualizacji), urządzenie spróbuje uruchomić się w trybie przywracania, aby przeprowadzić aktualizację OTA. Ponieważ jednak partycja nakładki została już zaktualizowany, mógł wystąpić niezgodność obrazu odzyskiwania (który nie został już zaktualizowane).

Aby zapobiec uzależnieniu od partycji DTBO/ACPIO podczas aktualizacji, urządzeń innych niż A/B i Androida 9 lub nowszego. może określić obraz DTBO/ACPIO odzyskiwania zawierający informacje z nakładki obrazu jako oddzielnej sekcji w formacie obrazu rozruchowego (musi używać nagłówka rozruchowego) wersji 1 lub 2).

Zmiany w obrazie rozruchowym

Aby obraz przywracania zawierał dane DTBO lub ACPIO odzyskiwania ze źródeł innych niż A/B urządzeń z Androidem 9 lub nowszym, zaktualizuj system rozruchu strukturę obrazu.

Sekcja obrazu rozruchowego Liczba stron
Nagłówek uruchamiania (1 strona) 1
Jądro (strony: l) L = (kernel_size + page_size – 1) / page_size
Ramdisk (liczba stron: m) m = (ramdisk_size + page_size – 1) / page_size
Program rozruchowy drugiego etapu (n stron) N = (second_size + page_size – 1) / page_size
Przywracanie DTBO lub ACPIO (liczba stron: ) O = (recovery_[dtbo|acpio]_size + page_size – 1) / page_size

Szczegółowe informacje o argumentach narzędzia mkbootimg służących do określania obrazu rozruchowego wersji nagłówka i ścieżek do obrazów nad powierzchnią patrz Nagłówek obrazu rozruchowego Obsługa wersji.

Wdróż DTBO

Urządzenia inne niż A/B z Androidem 9 lub nowszym mogą wyświetlać Sekcja recovery_dtbo obrazu odzyskiwania. Aby uwzględnić recovery_dtbo obraz w: recovery.img, na urządzeniu BoardConfig.mk:

  • Ustaw konfigurację BOARD_INCLUDE_RECOVERY_DTBO na true:

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • Rozszerz zmienną BOARD_MKBOOTIMG_ARGS, aby określić nagłówek obrazu rozruchowego wersja:

    BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • Upewnij się, że zmienna BOARD_PREBUILT_DTBOIMAGE jest ustawiona na ścieżkę parametru Obraz DTBO. System kompilacji Androida używa zmiennej do ustawienia Argument recovery_dtbo narzędzia mkbootimg podczas tworzenia obraz odzyskiwania.

Jeśli BOARD_INCLUDE_RECOVERY_DTBO, BOARD_MKBOOTIMG_ARGS i BOARD_PREBUILT_DTBOIMAGE zmiennych jest ustawionych prawidłowo, system kompilacji Androida zawiera tabelę DTBO określoną przez zmienną BOARD_PREBUILT_DTBOIMAGE w argumencie recovery.img

Wdróż ACPIO

Na urządzeniach innych niż A/B z Androidem 9 lub nowszym można: obrazu nakładki ACPIO (zamiast obrazu DTBO) i mogą wypełniać recovery_acpio (zamiast sekcji recovery_dtbo) sekcji obraz odzyskiwania. Aby uwzględnić obraz recovery_acpio w elemencie recovery.img, w urządzenie BoardConfig.mk:

  • Ustaw konfigurację BOARD_INCLUDE_RECOVERY_ACPIO na true:

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • Rozszerz zmienną BOARD_MKBOOTIMG_ARGS, aby określić nagłówek obrazu rozruchowego wersji. Aby można było obsługiwać przywracanie, zmienna musi być równa lub większa niż 1 ACPIO

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • Upewnij się, że zmienna BOARD_RECOVERY_ACPIO jest ustawiona na ścieżkę parametru Obraz ACPIO. System kompilacji Androida używa zmiennej do ustawienia Argument recovery_acpio narzędzia mkbootimg podczas tworzenia obraz odzyskiwania.

Jeśli BOARD_INCLUDE_RECOVERY_ACPIO, BOARD_MKBOOTIMG_ARGS i BOARD_RECOVERY_ACPIO zmiennych jest ustawionych prawidłowo, system kompilacji Androida obejmuje wartość ACPIO określoną przez zmienną BOARD_RECOVERY_ACPIO w recovery.img