diff --git a/src/minimal_overlay/bundles/dropbear/01_get.sh b/src/minimal_overlay/bundles/dropbear/01_get.sh index 4276c98c2..bcf116a03 100755 --- a/src/minimal_overlay/bundles/dropbear/01_get.sh +++ b/src/minimal_overlay/bundles/dropbear/01_get.sh @@ -2,10 +2,7 @@ SRC_DIR=$(pwd) -# Find the main source directory -cd ../../.. -MAIN_SRC_DIR=$(pwd) -cd $SRC_DIR +. ../../common.sh # Grab everything after the '=' character. DOWNLOAD_URL=$(grep -i DROPBEAR_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=') @@ -33,12 +30,12 @@ fi # Delete folder with previously extracted Dropbear. echo "Removing Dropbear work area. This may take a while..." -rm -rf ../../work/overlay/dropbear -mkdir ../../work/overlay/dropbear +rm -rf $WORK_DIR/overlay/dropbear +mkdir $WORK_DIR/overlay/dropbear # Extract Dropbear to folder 'work/overlay/dropbear'. # Full path will be something like 'work/overlay/dropbear/dropbear-2016.73'. -tar -xvf $ARCHIVE_FILE -C ../../work/overlay/dropbear +tar -xvf $ARCHIVE_FILE -C $WORK_DIR/overlay/dropbear cd $SRC_DIR diff --git a/src/minimal_overlay/bundles/dropbear/02_build.sh b/src/minimal_overlay/bundles/dropbear/02_build.sh index 9fe2db003..37fed2f5e 100755 --- a/src/minimal_overlay/bundles/dropbear/02_build.sh +++ b/src/minimal_overlay/bundles/dropbear/02_build.sh @@ -2,107 +2,91 @@ SRC_DIR=$(pwd) -# Find the main source directory -cd ../../.. -MAIN_SRC_DIR=$(pwd) -cd $SRC_DIR +. ../../common.sh -# Read the 'JOB_FACTOR' property from '.config' -JOB_FACTOR="$(grep -i ^JOB_FACTOR $MAIN_SRC_DIR/.config | cut -f2 -d'=')" +cd $WORK_DIR/overlay/dropbear -# Read the 'CFLAGS' property from '.config' -CFLAGS="$(grep -i ^CFLAGS $MAIN_SRC_DIR/.config | cut -f2 -d'=')" - -# Find the number of available CPU cores. -NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l) - -# Calculate the number of 'make' jobs to be used later. -NUM_JOBS=$((NUM_CORES * JOB_FACTOR)) - -if [ ! -d $MAIN_SRC_DIR/work/glibc/glibc_prepared ] ; then - echo "Cannot continue - Dropbear SSH depends on GLIBC. Please buld GLIBC first." - exit 1 -fi - -cd $MAIN_SRC_DIR/work/overlay/dropbear +DESTDIR="$PWD/dropbear_installed" # Change to the Dropbear source directory which ls finds, e.g. 'dropbear-2016.73'. cd $(ls -d dropbear-*) echo "Preparing Dropbear work area. This may take a while..." -make clean -j $NUM_JOBS 2>/dev/null - -rm -rf ../dropbear_installed +make -j $NUM_JOBS clean +rm -rf $DESTDIR echo "Configuring Dropbear..." ./configure \ - --prefix=$MAIN_SRC_DIR/work/overlay/dropbear/dropbear_installed \ - --disable-zlib \ + --prefix=/usr \ --disable-loginfunc \ - CFLAGS="$CFLAGS" + CC="$CC" \ + CFLAGS="$CFLAGS" \ + LDFLAGS="$LDFLAGS" echo "Building Dropbear..." make -j $NUM_JOBS echo "Installing Dropbear..." -make install -j $NUM_JOBS +make -j $NUM_JOBS install DESTDIR="$DESTDIR" -mkdir -p ../dropbear_installed/lib +mkdir -p $DESTDIR/lib # Copy all dependent GLIBC libraries. -cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnsl.so.1 ../dropbear_installed/lib -cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnss_compat.so.2 ../dropbear_installed/lib -cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libutil.so.1 ../dropbear_installed/lib -cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libcrypt.so.1 ../dropbear_installed/lib +cp $SYSROOT/lib/libnsl.so.1 $DESTDIR/lib +cp $SYSROOT/lib/libnss_compat.so.2 $DESTDIR/lib +cp $SYSROOT/lib/libutil.so.1 $DESTDIR/lib +cp $SYSROOT/lib/libcrypt.so.1 $DESTDIR/lib -mkdir -p ../dropbear_installed/etc/dropbear +mkdir -p $DESTDIR/etc/dropbear # Create Dropbear SSH configuration BEGIN # Create RSA key. -../dropbear_installed/bin/dropbearkey \ +$DESTDIR/usr/bin/dropbearkey \ -t rsa \ - -f ../dropbear_installed/etc/dropbear/dropbear_rsa_host_key + -f $DESTDIR/etc/dropbear/dropbear_rsa_host_key # Create DSS key. -../dropbear_installed/bin/dropbearkey \ +$DESTDIR/usr/bin/dropbearkey \ -t dss \ - -f ../dropbear_installed/etc/dropbear/dropbear_dss_host_key + -f $DESTDIR/etc/dropbear/dropbear_dss_host_key # Create ECDSA key. -../dropbear_installed/bin/dropbearkey \ +$DESTDIR/usr/bin/dropbearkey \ -t ecdsa \ - -f ../dropbear_installed/etc/dropbear/dropbear_ecdsa_host_key + -f $DESTDIR/etc/dropbear/dropbear_ecdsa_host_key # Create user/group configuration files. -touch ../dropbear_installed/etc/passwd -touch ../dropbear_installed/etc/group +touch $DESTDIR/etc/passwd +touch $DESTDIR/etc/group # Add group 0 for root. echo "root:x:0:" \ - > ../dropbear_installed/etc/group + > $DESTDIR/etc/group # Add user root with password 'toor'. echo "root:AprZpdBUhZXss:0:0:Minimal Root,,,:/root:/bin/sh" \ - > ../dropbear_installed/etc/passwd + > $DESTDIR/etc/passwd # Create home folder for root user. -mkdir -p ../dropbear_installed/root +mkdir -p $DESTDIR/root # Create Dropbear SSH configuration END echo "Reducing Dropbear size..." strip -g \ - ../dropbear_installed/bin/* \ - ../dropbear_installed/sbin/* \ - ../dropbear_installed/lib/* + $DESTDIR/usr/bin/* \ + $DESTDIR/usr/sbin/* \ + $DESTDIR/usr/lib/* \ + $DESTDIR/lib/* cp -r \ - ../dropbear_installed/etc \ - ../dropbear_installed/bin \ - ../dropbear_installed/sbin \ - ../dropbear_installed/lib \ - $MAIN_SRC_DIR/work/src/minimal_overlay/rootfs + $DESTDIR/etc \ + $DESTDIR/usr/bin \ + $DESTDIR/usr/sbin \ + $DESTDIR/usr/lib \ + $DESTDIR/lib \ + $WORK_DIR/src/minimal_overlay/rootfs echo "Dropbear has been installed."