OTA berbasis blok

Anda dapat mengaktifkan update over the air (OTA) berbasis blok untuk perangkat baru yang menjalankan Android 5.0. OTA adalah mekanisme yang digunakan OEM untuk mengupdate partisi sistem perangkat dari jarak jauh:

  • Android 5.0 dan versi yang lebih baru menggunakan update OTA blok untuk memastikan bahwa setiap perangkat menggunakan partisi yang sama persis. Alih-alih membandingkan setiap file dan menghitung patch biner, OTA blok menangani seluruh partisi sebagai satu file dan menghitung satu patch biner, sehingga memastikan partisi yang dihasilkan berisi bit yang diinginkan. Hal ini memungkinkan image sistem perangkat mencapai status yang sama melalui fastboot atau OTA.
  • Android 4.4 dan versi sebelumnya menggunakan update OTA file, yang memastikan perangkat berisi konten, izin, dan mode file yang serupa, tetapi memungkinkan metadata seperti stempel waktu dan tata letak penyimpanan pokok bervariasi di antara perangkat berdasarkan metode update.

Karena OTA blok memastikan bahwa setiap perangkat menggunakan partisi yang sama, OTA blok memungkinkan penggunaan dm-verity untuk menandatangani partisi sistem secara kriptografis. Untuk mengetahui detail tentang dm-verity, lihat Booting Terverifikasi.

Catatan: Anda harus memiliki sistem OTA blok yang berfungsi sebelum menggunakan dm-verity.

Rekomendasi

Untuk perangkat yang diluncurkan dengan Android 5.0 atau yang lebih baru, gunakan pemblokiran update OTA di ROM pabrik. Untuk membuat OTA berbasis blok untuk update berikutnya, teruskan opsi --block ke ota_from_target_files.

Untuk perangkat yang diluncurkan dengan Android 4.4 atau yang lebih lama, gunakan update OTA file. Meskipun perangkat dapat ditransisikan dengan mengirimkan OTA blok penuh Android 5.0 atau yang lebih baru, Anda harus mengirimkan OTA penuh yang jauh lebih besar daripada OTA inkremental (dan oleh karena itu tidak direkomendasikan).

Karena dm-verity memerlukan dukungan bootloader yang hanya ditemukan di perangkat baru yang dikirimkan dengan Android 5.0 atau yang lebih baru, Anda tidak dapat mengaktifkan dm-verity untuk perangkat yang ada.

Developer yang bekerja pada sistem OTA Android (image pemulihan dan skrip yang menghasilkan OTA) dapat mengikuti perubahan dengan berlangganan milis android-ota@googlegroups.com.

OTA file versus blok

Selama OTA berbasis file, Android mencoba mengubah konten partisi sistem di lapisan sistem file (berdasarkan file per file). Pembaruan tidak dijamin akan menulis file dalam urutan yang konsisten, memiliki waktu terakhir diubah atau superblock yang konsisten, atau bahkan menempatkan blok di lokasi yang sama pada perangkat blok. Oleh karena itu, OTA berbasis file gagal di perangkat yang mengaktifkan dm-verity; setelah upaya OTA, perangkat tidak akan melakukan booting.

Selama OTA berbasis blok, Android akan mengirimkan perbedaan antara dua image blok (bukan dua kumpulan file) ke perangkat. Update memeriksa build perangkat terhadap server build yang sesuai di tingkat blok (di bawah sistem file) menggunakan salah satu metode berikut:

  • Pembaruan lengkap. Menyalin image sistem lengkap itu sederhana dan memudahkan pembuatan patch, tetapi juga menghasilkan image besar yang dapat membuat penerapan patch menjadi mahal.
  • Update inkremental. Menggunakan alat perbedaan biner akan menghasilkan image yang lebih kecil dan memudahkan penerapan patch, tetapi membutuhkan banyak memori saat membuat patch itu sendiri.

Catatan: adb fastboot menempatkan bit yang sama persis di perangkat sebagai OTA lengkap, sehingga flashing kompatibel dengan OTA blok.

Mengupdate sistem yang tidak dimodifikasi

Untuk perangkat dengan partisi sistem yang tidak dimodifikasi yang menjalankan Android 5.0, proses download dan penginstalan untuk OTA blok tetap sama seperti untuk OTA file. Namun, update OTA itu sendiri mungkin menyertakan satu atau beberapa perbedaan berikut:

  • Ukuran download.

    Update OTA blok penuh berukuran kira-kira sama dengan update OTA file lengkap, dan update inkremental dapat berukuran lebih besar beberapa megabyte.

    perbandingan ukuran OTA

    Gambar 1. Membandingkan ukuran OTA Nexus 6 antara rilis Android 5.0 dan Android 5.1 (perubahan build target yang bervariasi)

    Secara umum, update OTA blok inkremental lebih besar daripada update OTA file inkremental karena hal berikut:

    • Preservasi data. OTA berbasis blok mempertahankan lebih banyak data (metadata file, data dm-verity, tata letak ext4, dll.) daripada OTA berbasis file.
    • Perbedaan algoritma komputasi. Dalam update OTA file, jika jalur file identik di kedua build, paket OTA tidak berisi data untuk file tersebut. Dalam update OTA blok, menentukan sedikit atau tidak ada perubahan dalam file bergantung pada kualitas algoritma komputasi patch dan tata letak data file di sistem sumber dan target.
  • Sensitivitas terhadap flash dan RAM yang rusak. Jika file rusak, OTA file akan berhasil selama tidak menyentuh file yang rusak, tetapi OTA blok akan gagal jika mendeteksi kerusakan pada partisi sistem.

Mengupdate sistem yang diubah

Untuk perangkat dengan partisi sistem yang diubah yang menjalankan Android 5.0:

  • Update OTA blok inkremental gagal. Partisi sistem mungkin diubah selama adb remount atau sebagai akibat dari malware. OTA file menerima beberapa perubahan pada partisi, seperti penambahan file yang bukan bagian dari build sumber atau target. Namun, OTA blok tidak mengizinkan penambahan ke partisi, sehingga pengguna harus menginstal OTA lengkap yang menimpa modifikasi partisi sistem) atau mem-flash image sistem baru untuk mengaktifkan OTA mendatang.
  • Upaya untuk mengubah file yang dimodifikasi menyebabkan kegagalan update. Untuk update OTA file dan blok, jika OTA mencoba mengubah file yang telah diubah, update OTA akan gagal.
  • Upaya untuk mengakses file yang diubah akan menghasilkan error (khusus dm-verity). Untuk update OTA file dan blok, jika dm-verity diaktifkan dan OTA mencoba mengakses bagian sistem file yang diubah, OTA akan menghasilkan error.