Menerapkan overlay hierarki perangkat (DTO) melibatkan pembagian hierarki perangkat (DT), pembuatan, membuat partisi, dan berjalan. Setelah memiliki implementasi yang berfungsi, Anda juga harus mempertahankan kompatibilitas antara kedua DT dan menentukan strategi untuk memastikan keamanan setiap partisi DT.
Bagi DT
Mulailah dengan membagi DT menjadi dua bagian:
- DT utama. Bagian khusus SoC dan konfigurasi {i>default<i}, yang disediakan oleh vendor SoC.
- DT overlay. Konfigurasi khusus perangkat, yang disediakan oleh ODM/OEM.
Setelah membagi DT, Anda harus memastikan kompatibilitas antara DT dan DT overlay sehingga penggabungan DT utama dan DT overlay menghasilkan DT untuk perangkat. Untuk mengetahui detail tentang aturan dan format DTO, lihat Sintaksis DTO. Untuk mengetahui detail tentang lebih dari satu DT, lihat Beberapa DT.
Membuat DT utama dan overlay
Untuk membuat DT utama:
- Kompilasi DT utama
.dts
menjadi file.dtb
. - Lakukan flash file
.dtb
ke partisi yang dapat diakses runtime bootloader (diuraikan dalam [DT Partisi](#partisi)).
Untuk membuat DT overlay:
- Kompilasi DT overlay
.dts
menjadi file.dtbo
. Meskipun format file ini sama dengan file.dtb
yang diformat sebagai DT rata, ekstensi file yang berbeda membedakannya dari DT utama. - Lakukan flash file
.dtbo
ke partisi yang dapat diakses runtime bootloader (diuraikan dalam [DT Partisi](#partisi)).
Untuk detail tentang mengompilasi dengan DTC dan memverifikasi hasil DTO pada host, lihat Kompilasi dan verifikasi.
DT partisi
Menentukan lokasi tepercaya dan dapat diakses runtime bootloader dalam flash
memori untuk menempatkan .dtb
dan .dtbo
.
Contoh lokasi untuk DT utama:
- Bagian dari partisi booting, ditambahkan ke kernel (
image.gz
) - Blob DT terpisah (
.dtb
) dalam partisi khusus (dtb
)
Contoh lokasi untuk DT overlay:
Gambar 1. Masukkan .dtbo ke dalam partisi unik, seperti partisi dtbo.
Gambar 2. Masukkan .dtbo ke dalam partisi odm (lakukan ini hanya jika bootloader Anda memiliki kemampuan untuk memuat data dari sistem file partisi odm).
Catatan: Ukuran partisi DT overlay tergantung pada perangkat dan jumlah perubahan yang dibutuhkan di atas blob DT utama. Biasanya, 8 MB lebih dari cukup dan memberikan ruang untuk jika diperlukan.
Untuk perangkat yang mendukung update mulus (A/B), lakukan A/B partisi DT utama dan DT overlay:
Gambar 3. Partisi DTBO A/B, contoh 1.
Gambar 4. Partisi DTBO A/B, contoh 2.
Jalankan di bootloader
Untuk menjalankan:
Gambar 5. Implementasi runtime umum untuk DTO di bootloader.
- Muat
.dtb
dari penyimpanan ke memori. - Muat
.dtbo
dari penyimpanan ke memori. - Overlay
.dtb
dengan.dtbo
untuk menjadi DT gabungan. - {i>Start kernel<i} dengan mempertimbangkan alamat memori DT yang digabungkan.
Mempertahankan kompatibilitas
DTB utama (dari vendor SoC) diperlakukan sebagai platform API untuk DTBO. Sesudah memisahkan DT menjadi bagian umum SoC dan bagian khusus perangkat, Anda harus menjaga agar kedua bagian tersebut tetap kompatibel di masa mendatang, termasuk:
- Definisi DT di DT utama. Misalnya, node, properti, label. Setiap perubahan definisi dalam DT utama dapat memicu perubahan di overlay DT. Misalnya, untuk memperbaiki nama node di DT utama, tentukan "alias" beri label itu memetakan ke nama node asli (untuk menghindari perubahan DT overlay).
- Lokasi penyimpanan DT overlay. Misalnya, nama partisi, penyimpanan format font.
Memastikan keamanan
Bootloader harus memastikan DTB atau DTBO aman, tidak dimodifikasi, dan tidak rusak. Anda dapat menggunakan solusi apa pun untuk mengamankan DTB atau DTBO, misalnya, Gambar booting signature di VBoot 1.0 atau AVB Footer HASH (VBoot 2.0).
- Jika DTB atau DTBO berada dalam partisi unik, Anda dapat menambahkan partisi itu ke rantai kepercayaan AVB. Rantai kepercayaan dimulai dari {i>root<i} yang dilindungi perangkat keras kepercayaan dan mengarahkan ke {i>bootloader<i}, yang memverifikasi integritas dan keasliannya partisi DTB atau DTBO.
- Jika DTB atau DTBO ada di partisi yang ada (seperti
odm
partisi tersebut), partisi itu harus berada dalam rantai kepercayaan AVB. (partisi DTBO dapat berbagi kunci publik dengan partisiodm
).
Untuk detailnya, lihat Terverifikasi Booting.