From 53f1b8e7473be019e9fe6c5f72978a40a7385691 Mon Sep 17 00:00:00 2001 From: Maya Matuszczyk Date: Wed, 27 Nov 2024 17:56:01 +0100 Subject: [PATCH] loader/depthcharge: add generate_chromebook_its.sh --- loader/depthcharge/generate_chromebook_its.sh | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 loader/depthcharge/generate_chromebook_its.sh diff --git a/loader/depthcharge/generate_chromebook_its.sh b/loader/depthcharge/generate_chromebook_its.sh new file mode 100755 index 0000000..63e0b0c --- /dev/null +++ b/loader/depthcharge/generate_chromebook_its.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/linux-aarch64/generate_chromebook_its.sh + +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