#!/bin/bash # This shell script used to system tools # AArch32 for iMX6ULL and AArch64 for iMX8MP AARCH=AArch32 LY_FTPURL=http://main.iot-yun.club:2211 # display in red function pr_error() { echo -e "\033[40;31m --E-- $1 \033[0m\n" } # display in green function pr_info() { echo -e "\033[40;32m --I-- $1 \033[0m\n" } if [ `id -u` != 0 ] ; then pr_error "This shell script must be excuted as root privilege" exit; fi function install_systools() { if command -v jq > /dev/null 2>&1 ; then pr_info "All system tools already installed, skip it" return 0; fi pr_info "start apt install system tools(commands)" systools="coreutils jq wget curl tree gawk sed unzip cpio bc lzop zstd rsync kmod kpartx \ desktop-file-utils iputils-ping xterm diffstat chrpath asciidoc docbook-utils help2man \ build-essential gcc g++ make cmake automake groff socat flex texinfo bison texi2html \ git cvs subversion mercurial autoconf autoconf-archive parted dosfstools \ python3 python3-pip python3-pexpect python3-git python3-jinja2 \ lib32z1 libssl-dev libncurses-dev libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev " apt update > /dev/null 2>&1 apt install -y $systools } function install_devtools() { if command -v debootstrap > /dev/null 2>&1 ; then pr_info "All development tools already installed, skip it" return 0; fi pr_info "start apt install devlopment tools(commands)" devtools="u-boot-tools mtd-utils device-tree-compiler binfmt-support \ qemu qemu-user-static debootstrap debian-archive-keyring " apt install -y $devtools } # NXP document suggest cross compiler from ARM Developer: # https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads function install_crosstool() { ARMTOOL_VER=10.3-2021.07 # install AArch32/AArch64 cross compiler from ARM Developer: if [ $AARCH == "AArch64" ] ; then CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-aarch64-none-linux-gnu CortexA_NAME=gcc-aarch64-$ARMTOOL_VER CROSS_TOOL=aarch64-none-linux-gnu- else CortexA_PACK=gcc-arm-$ARMTOOL_VER-`uname -p`-arm-none-linux-gnueabihf CortexA_NAME=gcc-aarch32-$ARMTOOL_VER CROSS_TOOL=arm-none-linux-gnueabihf- fi CortexA_TAR=$CortexA_PACK.tar.xz CortexA_URL=https://developer.arm.com/-/media/Files/downloads/gnu-a/$ARMTOOL_VER/binrel/ if [ -d /opt/$CortexA_NAME ] ; then pr_info "$AARCH crosstool $CortexA_NAME installed already, skip it" else pr_info "start download $AARCH cross compiler from ARM Developer" if [ ! -s $CortexA_TAR ] ; then wget $CortexA_URL/$CortexA_TAR fi tar -xJf $CortexA_TAR -C /opt rm -f $CortexA_TAR mv /opt/$CortexA_PACK /opt/$CortexA_NAME /opt/$CortexA_NAME/bin/${CROSS_TOOL}gcc -v pr_info "$AARCH cross compiler installed to \"/opt/$CortexA_NAME\" successfully" fi } install_buildroot() { BUILDROOT_VER=gcc-10.4-armhf-v2023.02 BUILDROOT_TAR=buildroot-${BUILDROOT_VER}.tar.xz INST_PATH=/opt/buildroot/ if [ -d $INST_PATH/$BUILDROOT_VER ] ; then pr_info "Buildroot crosstool $BUILDROOT_VER installed already, skip it" return ; fi pr_info "start download buildroot cross compiler from LingYun IoT studio file server" if [ ! -f $BUILDROOT_TAR ] ; then wget $LY_FTPURL/imx/igkboard-6ull/tools/$BUILDROOT_TAR fi mkdir -p $INST_PATH tar -xJf $BUILDROOT_TAR -C $INST_PATH rm -f $BUILDROOT_TAR $INST_PATH/$BUILDROOT_VER/bin/arm-linux-gcc -v pr_info "Buildroot cross compiler installed to \"$INST_PATH/$BUILDROOT_VER/\" successfully" } echo "" set -e install_systools install_devtools install_crosstool install_buildroot