xref: /OK3568_Linux_fs/buildroot/board/chromebook/elm/sign.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun# This script creates u-boot FIT image containing the kernel and the DT,
4*4882a593Smuzhiyun# then signs it using futility from vboot-utils.
5*4882a593Smuzhiyun# The resulting file is called uImage.kpart.
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunBOARD_DIR=$(dirname $0)/${BOARD_NAME}
8*4882a593Smuzhiyunmkimage=$HOST_DIR/bin/mkimage
9*4882a593Smuzhiyunfutility=$HOST_DIR/bin/futility
10*4882a593Smuzhiyundevkeys=$HOST_DIR/share/vboot/devkeys
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunrun() { echo "$@"; "$@"; }
13*4882a593Smuzhiyundie() { echo "$@" >&2; exit 1; }
14*4882a593Smuzhiyuntest -f $BINARIES_DIR/Image  || \
15*4882a593Smuzhiyun	die "No kernel image found"
16*4882a593Smuzhiyuntest -x $mkimage || \
17*4882a593Smuzhiyun	die "No mkimage found (host-uboot-tools has not been built?)"
18*4882a593Smuzhiyuntest -x $futility || \
19*4882a593Smuzhiyun	die "No futility found (host-vboot-utils has not been built?)"
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun# kernel.its references Image and mt8173-elm.dtb, and all three
22*4882a593Smuzhiyun# files must be in current directory for mkimage.
23*4882a593Smuzhiyunrun cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1
24*4882a593Smuzhiyunecho "# entering $BINARIES_DIR for the next command"
25*4882a593Smuzhiyun(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun# futility requires non-empty file to be supplied with --bootloader
28*4882a593Smuzhiyun# even if it does not make sense for the target platform.
29*4882a593Smuzhiyunecho > $BINARIES_DIR/dummy.txt
30*4882a593Smuzhiyun
31*4882a593Smuzhiyunrun $futility vbutil_kernel \
32*4882a593Smuzhiyun	--keyblock $devkeys/kernel.keyblock \
33*4882a593Smuzhiyun	--signprivate $devkeys/kernel_data_key.vbprivk \
34*4882a593Smuzhiyun	--arch aarch64 \
35*4882a593Smuzhiyun	--version 1 \
36*4882a593Smuzhiyun	--config $BOARD_DIR/kernel.args \
37*4882a593Smuzhiyun	--vmlinuz $BINARIES_DIR/uImage.itb \
38*4882a593Smuzhiyun	--bootloader $BINARIES_DIR/dummy.txt \
39*4882a593Smuzhiyun	--pack $BINARIES_DIR/uImage.kpart || exit 1
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunrm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt
42