Bootloader dan Proses Booting pada Android

Bootloader dan Proses Booting pada Android

Dalam proses booting, bootloader berperan penting dalam mengetahui slot mana yang sedang di-booting. Salah satu cara bootloader mengetahui slot tersebut adalah dengan menggunakan DT attribute /firmware/android/slot_suffix atau parameter command-line androidboot.slot_suffix.

Bootsloader juga harus mendukung HAL (Hardware Abstraction Layer) boot_control, serta mengirimkan parameter kernel seperti ro root=/dev/[node] rootwait skip_initramfs init=/init. Jika tidak ada parameter skip_initramfs, maka proses booting akan dilakukan melalui recovery.

Bootsloader juga harus menentukan slot mana yang akan di-boot. Alur prosesnya dapat dilihat pada diagram di bawah ini:

  1. Menentukan slot yang akan di-boot. Jika slot tidak dapat di-boot, maka bootloader tidak boleh membooting slot tersebut.
  2. Jika slot yang sedang di-boot adalah slot-unbootable, maka bootloader harus menghapus status "successfully booted" dan meningkatkan retry count.
  3. Mereka menentukan slot mana yang akan di-boot.
  4. Menjelaskan status slot dan menghapus status "unbootable".
  5. Jika tidak ada slot yang dapat di-boot, maka proses booting akan dilakukan melalui recovery.

Proses Booting pada Android A/B

Pada Android A/B, bootloader juga harus mendukung HAL boot_control, serta mengirimkan parameter kernel seperti ro root=/dev/[node] rootwait skip_initramfs init=/init. Jika tidak ada parameter skip_initramfs, maka proses booting akan dilakukan melalui recovery.

Bootsloader juga harus menentukan slot mana yang akan di-boot. Alur prosesnya dapat dilihat pada diagram di bawah ini:

  1. Menentukan slot yang akan di-boot.
  2. Jika slot tidak dapat di-boot, maka bootloader tidak boleh membooting slot tersebut.
  3. Mereka menentukan slot mana yang akan di-boot.
  4. Mengirimkan parameter kernel seperti ro root=/dev/[node] rootwait skip_initramfs init=/init.
  5. Menjelaskan status slot dan menghapus status "unbootable".

A/B以外のアップデート

A/B以外のアップデートをサポートするためには、以下の基準を満たす必要があります。

  1. 復旧パーティションには、システムイメージを読み込み、書き込むことができるイメージが存在している必要があります。
  2. Bootsloaderは、復旧モードで直接再起動することをサポートする必要があります。
  3. ラジオ画像アップデートをサポートしている場合は、復旧パーティションもラジオをフラッシュすることができる必要があります。 これは、以下の二つの方法中の一つにより実現することができます。
  • Bootsloaderがラジオをフラッシュする。 この場合、復旧パーティションからBootsloaderに再起動し、アップデートを完了します。
  • 復旧イメージがラジオをフラッシュする。 これは、バイナリーライブラリやユーティリティーの形態で提供されることができます。

Dalam proses booting, bootloader berperan penting dalam mengetahui slot mana yang sedang di-booting. Bootsloader juga harus mendukung HAL boot_control dan mengirimkan parameter kernel seperti ro root=/dev/[node] rootwait skip_initramfs init=/init. Jika tidak ada parameter skip_initramfs, maka proses booting akan dilakukan melalui recovery.

Pada Android A/B, bootloader juga harus mendukung HAL boot_control dan mengirimkan parameter kernel seperti ro root=/dev/[node] rootwait skip_initramfs init=/init. Bootsloader juga harus menentukan slot mana yang akan di-boot. Alur prosesnya dapat dilihat pada diagram di bawah ini.

A/B以外のアップデートをサポートするためには、復旧パーティションにシステムイメージを読み込み書き込むことができるイメージが存在している必要があります。また、ラジオ画像アップデートをサポートしている場合は、復旧パーティションもラジオをフラッシュすることができる必要があります。

Leave a comment