Menerapkan DTO melibatkan membagi pohon perangkat, membangun, mempartisi, dan menjalankan. Setelah Anda memiliki implementasi yang berfungsi, Anda juga harus menjaga kompatibilitas antara dua DT dan menentukan strategi untuk memastikan keamanan setiap partisi DT.
Membagi DT
Mulailah dengan membagi pohon perangkat menjadi dua (2) bagian:
- DT utama . Bagian SoC-only dan konfigurasi default, disediakan oleh vendor SoC.
- Hamparan DT . Konfigurasi khusus perangkat, disediakan oleh ODM/OEM.
Setelah membagi pohon perangkat, Anda harus memastikan kompatibilitas antara DT utama dan DT overlay sehingga penggabungan DT utama dan DT overlay menghasilkan DT lengkap untuk perangkat. Untuk detail tentang format dan aturan DTO, lihat Sintaks DTO . Untuk detail tentang beberapa pohon perangkat, lihat Beberapa DT .
Membangun DT utama & overlay
Untuk membangun DT utama:
- Kompilasi DT
.dts
utama menjadi file.dtb
. - Flash file
.dtb
ke dalam partisi bootloader yang dapat diakses runtime (rinci di bawah).
Untuk membangun DT overlay:
- Kompilasi overlay DT
.dts
ke dalam file.dtbo
. Meskipun format file ini sama dengan file.dtb
yang diformat sebagai pohon perangkat yang diratakan, ekstensi file yang berbeda membedakannya dari DT utama. - Flash file
.dtbo
ke dalam partisi bootloader yang dapat diakses runtime (seperti yang dijelaskan di bawah).
Untuk detail tentang kompilasi dengan DTC dan verifikasi hasil DTO pada host, lihat Mengkompilasi & Memverifikasi .
Mempartisi DT
Tentukan lokasi bootloader yang dapat diakses runtime dan tepercaya di memori flash untuk meletakkan .dtb
dan .dtbo
.
Contoh lokasi untuk DT utama:
- Bagian dari partisi boot, ditambahkan ke kernel (
image.gz
). - Pisahkan DT blob (
.dtb
) di partisi khusus (dtb
).
Contoh lokasi untuk DT overlay:
Partisi Unik |
---|
Partisi ODM |
---|
.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 diperlukan di atas blob DT utama. Biasanya, 8 MB lebih dari cukup dan memungkinkan ruang untuk tumbuh di masa mendatang jika diperlukan.
Untuk perangkat yang mendukung pembaruan tanpa batas (A/B) , A/B partisi DT utama dan overlay DT:
Contoh 1 |
---|
Contoh 2 |
---|
Berjalan di bootloader
Untuk berlari:
- Muat
.dtb
dari penyimpanan ke dalam memori. - Muat
.dtbo
dari penyimpanan ke dalam memori. - Overlay
.dtb
dengan.dtbo
menjadi DT gabungan. - Mulai kernel dengan alamat memori dari DT yang digabungkan.
Menjaga kompatibilitas
DTB utama (dari vendor SoC) diperlakukan sebagai permukaan API untuk DTBO. Setelah memisahkan pohon perangkat menjadi bagian umum SoC dan bagian khusus perangkat, Anda harus menjaga agar kedua bagian tersebut saling kompatibel di masa mendatang, termasuk:
- Definisi DT di DT utama (misalnya node, properti, label) . Setiap perubahan definisi pada DT utama dapat memicu perubahan pada DT overlay. Misalnya, untuk mengoreksi nama node di DT utama, tentukan label "alias" yang memetakan ke nama node asli (untuk menghindari perubahan overlay DT).
- Overlay lokasi penyimpanan DT (misalnya nama partisi, format toko) .
Memastikan keamanan
Bootloader harus memastikan DTB/DTBO aman, tidak dimodifikasi, dan tidak rusak. Anda dapat menggunakan solusi apa pun untuk mengamankan DTB/DTBO, misalnya, Boot image signature di VBoot 1.0 atau AVB HASH footer (VBoot 2.0).
- Jika DTB/DTBO berada di partisi unik, Anda dapat menambahkan partisi tersebut ke rantai kepercayaan AVB. Rantai kepercayaan dimulai dari akar kepercayaan yang dilindungi perangkat keras dan menuju ke bootloader, yang memverifikasi integritas dan keaslian partisi DTB/DTBO.
- Jika DTB/DTBO berada di partisi yang ada (seperti partisi
odm
), partisi tersebut harus berada dalam rantai kepercayaan AVB. (Partisi DTBO dapat berbagi kunci publik dengan partisiodm
).
Untuk detailnya, lihat Boot Terverifikasi .