From 2161762ebc50914fe51a7923945c64e6ce4ee25f Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Tue, 28 Dec 2021 21:46:06 +0800 Subject: [PATCH] update build shell script, add system and distro --- bsp/images/build.sh | 129 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 105 insertions(+), 24 deletions(-) diff --git a/bsp/images/build.sh b/bsp/images/build.sh index 76377d6..2e8e592 100755 --- a/bsp/images/build.sh +++ b/bsp/images/build.sh @@ -18,20 +18,33 @@ # PRJ_PATH=`pwd` -IMAGE_PATH=${PRJ_PATH}/bin/ +PRJ_NAME=`basename ${PRJ_PATH}` -BOARD=imx6ull +BOARD=igkboard +BSP_BRANCH=lf-5.10.52-2.1.0 -# rootfs should be buildroot or stretch/buster/bullseye for debian system -ROOTFS=buildroot +# $SYSTEM should be buildroot, yocto or debian +# Buildroot distro should be: buildroot-2021.02 +# Yocto distro should be : hardknott +# Debian distro should be : buster or bullseye +SYSTEM=buildroot +DISTRO=v2021.02 -# linux kernel tarball path and branch +SYSTYPE=`echo $SYSTEM | tr 'A-Z' 'a-z'` +if [ $SYSTYPE == "debian" ] ; then + SYSNAME=${DISTRO} +else + SYSNAME=${SYSTYPE} +fi +ROOTFS_DIR=rootfs_${SYSNAME} + TAR_PATH=${PRJ_PATH}/../tarball +IMAGE_PATH=${PRJ_PATH}/boot/ BOOT=emmc -IMAGE_NAME=linuxsys_${BOARD}_${ROOTFS}.img -if [ $ROOTFS == buildroot ] ; then +IMAGE_NAME=linuxsys_${BOARD}_${SYSNAME}.img +if [ $SYSTEM == buildroot ] ; then IMAGE_SIZE=512 else IMAGE_SIZE=2048 @@ -48,10 +61,10 @@ BOOT_SIZE=100 -IMG_UBOOT=${IMAGE_PATH}/u-boot-imx6ull-emmc.imx +IMG_UBOOT=${PRJ_PATH}/u-boot-${BOARD}.imx IMG_KERNEL=${IMAGE_PATH}/zImage -IMG_DTB=${IMAGE_PATH}/imx6ull-emmc.dtb -ROOTFS_TAR=${TAR_PATH}/rootfs_${ROOTFS}.tar.bz2 +IMG_DTB=${IMAGE_PATH}/${BOARD}-emmc.dtb +ROOTFS_TAR=${PRJ_PATH}/../rootfs/${ROOTFS_DIR}.tar.bz2 MNT_POINT=./mnt LOOP_DEV=`losetup -f | cut -d/ -f3` @@ -59,30 +72,29 @@ set -u set -e -if [ `id -u` != 0 ] ; then - echo "ERROR: This shell script must run as root" - exit 0; -fi - -trap 'exit_handler' EXIT function exit_handler() { echo "Shell script exit now, do some clean work" echo "" + set +e + mountpoint $MNT_POINT > /dev/null 2>&1 if [ $? == 0 ] ; then + echo "umount ${MNT_POINT}" umount ${MNT_POINT} fi rm -rf ${MNT_POINT} if [ -L /dev/mapper/${LOOP_DEV}p1 ] ; then + echo "kpartx -dv /dev/${LOOP_DEV}" kpartx -dv /dev/${LOOP_DEV} fi losetup -a | grep "${LOOP_DEV}" > /dev/null 2>&1 if [ $? == 0 ] ; then + echo "losetup -d /dev/${LOOP_DEV}" losetup -d /dev/${LOOP_DEV} fi } @@ -164,22 +176,91 @@ mount -t ext4 /dev/mapper/${LOOP_DEV}p2 ${MNT_POINT} tar -xjf ${ROOTFS_TAR} -C ${MNT_POINT} && sync + chown -R root.root ${MNT_POINT} && sync umount ${MNT_POINT} } -mkdir -p ${MNT_POINT} +function do_distclean() +{ + printf "\n\n -- do distclean in `basename ${PRJ_PATH}` --\n\n" -generate_image + rm -f *${BOARD}* + rm -rf boot/*Image* + rm -rf boot/overlays/ + rm -rf boot/*${BOARD}* + exit 0; +} -format_partition +function do_image() +{ + mkdir -p ${MNT_POINT} -install_sysimg + generate_image -install_rootfs + format_partition -cp ${IMG_UBOOT} . -bzip2 ${IMAGE_NAME} + install_sysimg -rm -rf ${MNT_POINT} + install_rootfs + msg_banner " bzip2 compress system image " + rm -f ${IMAGE_NAME}*.bz2 + bzip2 ${IMAGE_NAME} + + rm -rf ${MNT_POINT} + + printf "\n\n -- generate system image done --\n\n" +} + +function do_root() +{ + echo "" + if [[ $1 == "yes" ]] && [ `id -u` != 0 ] ; then + echo "ERROR: This action must run as root!" + echo "" + exit; + elif [[ $1 != "yes" ]] && [ `id -u` == 0 ] ; then + echo "ERROR: This action cannot run as root!" + echo "" + exit; + fi +} + +function do_usage() +{ + echo "" + echo "Usage:" + echo " $0 [-b] [-c] [-h]" + echo " -b: download and build $PRJ_NAME" + echo " -c: clean all the source code" + echo " -h: show this help message" + echo "" + echo " WARNNING: This shell script must run as sudo" + echo "" + exit; +} + +trap 'exit_handler' EXIT + +while getopts "bch" OPTNAME +do + case "${OPTNAME}" in + "b") + break; + ;; + + "c") + do_root "yes" + do_distclean + ;; + + "*") + do_usage + ;; + esac +done + +do_root "yes" +do_image +exit; -- Gitblit v1.9.1