Fixed dropbear bundle

This commit is contained in:
bauen1 2017-07-06 18:15:14 +02:00
parent 159efbb767
commit c671c639de
No known key found for this signature in database
GPG Key ID: FF0AAF5E0812BA9C
2 changed files with 41 additions and 60 deletions

View File

@ -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

View File

@ -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."