From 217452ab6277deb825756e46ac0fcf3783a7000f Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Wed, 10 Nov 2021 22:09:26 +0800
Subject: [PATCH] add rootfs build shell script

---
 bsp/rootfs/build.sh |  148 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/bsp/rootfs/build.sh b/bsp/rootfs/build.sh
new file mode 100755
index 0000000..f85a06b
--- /dev/null
+++ b/bsp/rootfs/build.sh
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+PRJ_PATH=`pwd`
+
+BOARD=imx6ull
+
+TAR_PATH=/home/guowenxue/imx6ull/bsp/tarball
+
+# rootfs should be buildroot or stretch/buster/bullseye for debian system
+ROOTFS=buster
+
+ROOTFS_DIR=rootfs_${ROOTFS}
+ARCH=armhf
+
+# rootfs configuration
+DEF_PASSWD=123456
+DEF_HOSTNAME=${BOARD}
+
+APT_UPDATE=0
+
+EXTRA_APPS="vim net-tools network-manager tree file parted locales lsb-release tzdata  wireless-tools openssh-server"
+
+if [ `id -u` != 0 ] ; then
+   echo "ERRROR: This shell script must excuted as root privilege."
+   exit 0;
+fi
+
+set -u
+set -e
+
+trap 'ctrlC_handler' INT
+
+function ctrlC_handler()
+{
+    echo "Ctrl+C is captured, do some clean work" 
+    rm -f  ${ROOTFS_DIR}/usr/bin/qemu-arm-static
+}
+
+STAGE=0
+
+function msg_banner()
+{ 
+    STAGE=`expr $STAGE + 1`
+    
+    echo ""
+    echo "+---------------------------------------------+" 
+    printf " Stage $STAGE: $1\n" 
+    echo "+---------------------------------------------+"
+    echo ""
+}
+
+function do_systools()
+{
+    msg_banner " install system tools"
+
+    debootstrap --version > /dev/null 2>&1
+    if [ $? == 0 ] ; then
+       echo "system tools already installed, skip it"
+       return ;
+    fi
+
+    apt install binfmt-support qemu qemu-user-static debootstrap debian-archive-keyring
+}
+
+function do_fetch()
+{
+    if [ ! -d ${ROOTFS_DIR} ] ; then
+        if [ -s ${TAR_PATH}/${ROOTFS_DIR}.tar.bz2 ]  ; then 
+            msg_banner " decompress ${ROOTFS_DIR}.tar.bz2 "
+            mkdir -p ${ROOTFS_DIR}
+            tar -xjf ${TAR_PATH}/${ROOTFS_DIR}.tar.bz2 -C ${ROOTFS_DIR}
+            APT_UPDATE=1
+        else 
+            msg_banner " debootstrap fetch " 
+            debootstrap --arch=${ARCH} --foreign ${ROOTFS} ${ROOTFS_DIR} http://ftp.cn.debian.org/debian/
+            DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ${ROOTFS_DIR} debootstrap/debootstrap --second-stage
+            APT_UPDATE=1
+        fi
+    else
+       msg_banner "debain rootfs already fetch, skip it"
+    fi
+
+    if [ $APT_UPDATE == 0 ] ; then
+        return ;
+    fi
+
+	msg_banner " debootstrap config "
+    cp -f /usr/bin/qemu-arm-static ${ROOTFS_DIR}/usr/bin/
+    DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ${ROOTFS_DIR} dpkg --configure -a 
+    DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ${ROOTFS_DIR} apt update
+
+	msg_banner " debootstrap apt install "
+    DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ${ROOTFS_DIR} apt install -y ${EXTRA_APPS}
+    DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ${ROOTFS_DIR} sh -c "echo root:${DEF_PASSWD} | chpasswd"
+
+    rm -f ${ROOTFS_DIR}/usr/bin/qemu-arm-static
+}
+
+function do_modify()
+{
+    msg_banner " modify rootfs environment"
+
+    # update hostnmae and issue
+    echo $DEF_HOSTNAME > ${ROOTFS_DIR}/etc/hostname
+    echo "Debian GNU/Linux $ROOTFS \n \l, default password '$DEF_PASSWD'." > ${ROOTFS_DIR}/etc/issue
+
+    # update dns server
+    echo "nameserver 114.114.114.114" > ${ROOTFS_DIR}/etc/resolv.conf
+    echo "nameserver 223.5.5.5" >> ${ROOTFS_DIR}/etc/resolv.conf
+
+    # add ls alias for display with color
+    grep "color=auto" ${ROOTFS_DIR}/etc/profile > /dev/null 2>&1
+    if [ $? != 0 ] ; then
+       echo "alias ls='ls --color=auto'" >> ${ROOTFS_DIR}/etc/profile
+    fi
+
+    # permit root ssh login
+    grep "^PermitRootLogin" ${ROOTFS_DIR}/etc/ssh/sshd_config > /dev/null 2>&1
+    if [ $? != 0 ] ; then
+       echo "PermitRootLogin yes" >> ${ROOTFS_DIR}/etc/ssh/sshd_config
+    fi
+}
+
+function do_pack()
+{
+    msg_banner " generate rootfs packet "
+
+    cd ${ROOTFS_DIR}
+
+    tar -cjf ../${ROOTFS_DIR}.tar.bz2 *
+
+    cd ${PRJ_PATH}
+}
+
+if [ $ROOTFS == buildroot ]  ;then
+    echo "INFO: buildroot no need build."
+    exit 0;
+fi
+
+do_systools
+
+do_fetch
+
+set +e
+do_modify
+
+do_pack
+

--
Gitblit v1.9.1