aos/tools/arm-mkbootcpio.sh
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

56 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
##########################################################################
# Copyright (c) 2009, ETH Zurich.
# All rights reserved.
#
# This file is distributed under the terms in the attached LICENSE file.
# If you do not find this file, copies can be found by writing to:
# ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
##########################################################################
#
# Create a list of modules and their arguments. We use this list
# as the bootscript. It's a cleaned up version of menu.lst. The
# files named here are used to create a cpio archive that are in
# the same order as the script. This allows:
#
# 1) Writing script lines with 1:1 correspondance with files
# in archive.
#
# 2) Checking all the files specified actually exist rather than
# discovering this at boot.
#
# At some point the kernel should probably go into the generated
# archive and the bootloader do just enough to open the archive
# and setup the kernel.
#
if [ $# -ne 2 ] ; then
echo "Usage: $0 arm/menu.lst <cpio_file>"
exit 1
fi
BOOTSCRIPT=menu.lst.modules
echo ${BOOTSCRIPT} > ${BOOTSCRIPT}
cat $1 | \
sed -n -e 's/#.*//' \
-e 's/[ \t]\+/ /g' \
-e 's/ $//;s/^ //' \
-e '/^\(module\|modulenounzip\)/ { s@ *\(module\|modulenounzip\) /?*\(.*\)@./\2@ ; p }' >>${BOOTSCRIPT}
sed -e 's/ .*//' ${BOOTSCRIPT} | cpio -o -H crc > $2
if [ $? -ne 0 ] ; then
cat <<EOF
Failed to create $2.
Check files specified in $1 are being built in symbolic_target.mk.
EOF
exit 1
fi