#!/bin/bash image=$1 arch=$2 compression=$3 read -a dtb_list cat <<-ITS_HEADER_END /dts-v1/; / { description = "Chrome OS kernel image with one or more FDT blobs"; images { kernel { description = "kernel"; data = /incbin/("${image}"); type = "kernel_noload"; arch = "${arch}"; os = "linux"; compression = "${compression}"; load = <0>; entry = <0>; }; ITS_HEADER_END for i in ${!dtb_list[@]}; do dtb=${dtb_list[${i}]} cat <<-FDT_END fdt-$(expr ${i} + 1) { description = "$(basename ${dtb})"; data = /incbin/("${dtb}"); type = "flat_dt"; arch = "${arch}"; compression = "none"; hash { algo = "sha1"; }; }; FDT_END done cat <<-ITS_MIDDLE_END }; configurations { default = "conf-1"; ITS_MIDDLE_END for i in "${!dtb_list[@]}"; do compat_line="" dtb_uncompressed=$(echo ${dtb_list[${i}]} | sed "s/\(\.dtb\).*/\1/g") for compat in $(fdtget "${dtb_uncompressed}" / compatible); do compat_line+="\"${compat}\"," done cat <<-ITS_CONF_END conf-$(expr ${i} + 1) { kernel = "kernel"; fdt = "fdt-$(expr ${i} + 1)"; compatible = ${compat_line%,}; }; ITS_CONF_END done cat <<-ITS_FOOTER_END }; }; ITS_FOOTER_END