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, wirtualna 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 |
nie A/B | Nie dotyczy | 2 | 0, 1, 2 | Tak | |
9 (K) | A/B | Nie dotyczy | 1 | 0, 1 | Nie |
nie A/B | Nie dotyczy | 1 | 0, 1 | Tak | |
8 (O) | A/B | Nie dotyczy | Nie dotyczy (uważane za 0) | Nie dotyczy (uznano, że ma wartość 0) | Nie |
nie A/B | Nie dotyczy | Nie dotyczy (uważane za 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
idtbo
) 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 wprowadzone na rynek 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 odzyskiwania od partycji DTBO/ACPIO podczas aktualizacji, urządzenia inne niż A/B z Androidem 9 lub nowszym mogą określać obraz DTBO/ACPIO odzyskiwania zawierający informacje z obrazu nakładki jako oddzielną sekcję w formacie obrazu rozruchowego (musisz użyć nagłówka rozruchowego w 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 |
Kernel (l pages) | L = (kernel_size + page_size –
1) / page_size |
Ramdisk (m stron) | 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 wersji nagłówka obrazu rozruchu i ścieżek obrazów nakładki znajdziesz w sekcji Wersja nagłówka obrazu rozruchu.
Wdróż DTBO
Urządzenia inne niż A/B z Androidem 9 lub nowszym mogą wypełniać sekcję recovery_dtbo
obrazu odzyskiwania. Aby uwzględnić obraz recovery_dtbo
w recovery.img
na urządzeniu BoardConfig.mk
:
Ustaw konfigurację
BOARD_INCLUDE_RECOVERY_DTBO
natrue
: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ę do obrazu DTBO. System kompilacji Androida używa zmiennej do ustawienia Argumentrecovery_dtbo
narzędziamkbootimg
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 recovery.img
na urządzeniu BoardConfig.mk
:
Ustaw konfigurację
BOARD_INCLUDE_RECOVERY_ACPIO
natrue
:BOARD_INCLUDE_RECOVERY_ACPIO := true
Rozszerz zmienną
BOARD_MKBOOTIMG_ARGS
, aby określić wersję nagłówka obrazu rozruchowego. Aby można było obsługiwać przywracanie, zmienna musi być równa lub większa niż 1 ACPIOBOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
Upewnij się, że zmienna
BOARD_RECOVERY_ACPIO
jest ustawiona na ścieżkę do obrazu ACPIO. System kompilacji Androida używa zmiennej do ustawienia Argumentrecovery_acpio
narzędziamkbootimg
podczas tworzenia obraz odzyskiwania.
Jeśli zmienne BOARD_INCLUDE_RECOVERY_ACPIO
, BOARD_MKBOOTIMG_ARGS
i BOARD_RECOVERY_ACPIO
są prawidłowo ustawione, system kompilacji Androida uwzględnia ACPIO określone przez zmienną BOARD_RECOVERY_ACPIO
w recovery.img
.