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) SRC_DIR=$(pwd)
# Find the main source directory . ../../common.sh
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Grab everything after the '=' character. # Grab everything after the '=' character.
DOWNLOAD_URL=$(grep -i DROPBEAR_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=') 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. # Delete folder with previously extracted Dropbear.
echo "Removing Dropbear work area. This may take a while..." echo "Removing Dropbear work area. This may take a while..."
rm -rf ../../work/overlay/dropbear rm -rf $WORK_DIR/overlay/dropbear
mkdir ../../work/overlay/dropbear mkdir $WORK_DIR/overlay/dropbear
# Extract Dropbear to folder 'work/overlay/dropbear'. # Extract Dropbear to folder 'work/overlay/dropbear'.
# Full path will be something like 'work/overlay/dropbear/dropbear-2016.73'. # 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 cd $SRC_DIR

View File

@ -2,107 +2,91 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory . ../../common.sh
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Read the 'JOB_FACTOR' property from '.config' cd $WORK_DIR/overlay/dropbear
JOB_FACTOR="$(grep -i ^JOB_FACTOR $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
# Read the 'CFLAGS' property from '.config' DESTDIR="$PWD/dropbear_installed"
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
# Change to the Dropbear source directory which ls finds, e.g. 'dropbear-2016.73'. # Change to the Dropbear source directory which ls finds, e.g. 'dropbear-2016.73'.
cd $(ls -d dropbear-*) cd $(ls -d dropbear-*)
echo "Preparing Dropbear work area. This may take a while..." echo "Preparing Dropbear work area. This may take a while..."
make clean -j $NUM_JOBS 2>/dev/null make -j $NUM_JOBS clean
rm -rf $DESTDIR
rm -rf ../dropbear_installed
echo "Configuring Dropbear..." echo "Configuring Dropbear..."
./configure \ ./configure \
--prefix=$MAIN_SRC_DIR/work/overlay/dropbear/dropbear_installed \ --prefix=/usr \
--disable-zlib \
--disable-loginfunc \ --disable-loginfunc \
CFLAGS="$CFLAGS" CC="$CC" \
CFLAGS="$CFLAGS" \
LDFLAGS="$LDFLAGS"
echo "Building Dropbear..." echo "Building Dropbear..."
make -j $NUM_JOBS make -j $NUM_JOBS
echo "Installing Dropbear..." 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. # Copy all dependent GLIBC libraries.
cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnsl.so.1 ../dropbear_installed/lib cp $SYSROOT/lib/libnsl.so.1 $DESTDIR/lib
cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnss_compat.so.2 ../dropbear_installed/lib cp $SYSROOT/lib/libnss_compat.so.2 $DESTDIR/lib
cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libutil.so.1 ../dropbear_installed/lib cp $SYSROOT/lib/libutil.so.1 $DESTDIR/lib
cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libcrypt.so.1 ../dropbear_installed/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 Dropbear SSH configuration BEGIN
# Create RSA key. # Create RSA key.
../dropbear_installed/bin/dropbearkey \ $DESTDIR/usr/bin/dropbearkey \
-t rsa \ -t rsa \
-f ../dropbear_installed/etc/dropbear/dropbear_rsa_host_key -f $DESTDIR/etc/dropbear/dropbear_rsa_host_key
# Create DSS key. # Create DSS key.
../dropbear_installed/bin/dropbearkey \ $DESTDIR/usr/bin/dropbearkey \
-t dss \ -t dss \
-f ../dropbear_installed/etc/dropbear/dropbear_dss_host_key -f $DESTDIR/etc/dropbear/dropbear_dss_host_key
# Create ECDSA key. # Create ECDSA key.
../dropbear_installed/bin/dropbearkey \ $DESTDIR/usr/bin/dropbearkey \
-t ecdsa \ -t ecdsa \
-f ../dropbear_installed/etc/dropbear/dropbear_ecdsa_host_key -f $DESTDIR/etc/dropbear/dropbear_ecdsa_host_key
# Create user/group configuration files. # Create user/group configuration files.
touch ../dropbear_installed/etc/passwd touch $DESTDIR/etc/passwd
touch ../dropbear_installed/etc/group touch $DESTDIR/etc/group
# Add group 0 for root. # Add group 0 for root.
echo "root:x:0:" \ echo "root:x:0:" \
> ../dropbear_installed/etc/group > $DESTDIR/etc/group
# Add user root with password 'toor'. # Add user root with password 'toor'.
echo "root:AprZpdBUhZXss:0:0:Minimal Root,,,:/root:/bin/sh" \ echo "root:AprZpdBUhZXss:0:0:Minimal Root,,,:/root:/bin/sh" \
> ../dropbear_installed/etc/passwd > $DESTDIR/etc/passwd
# Create home folder for root user. # Create home folder for root user.
mkdir -p ../dropbear_installed/root mkdir -p $DESTDIR/root
# Create Dropbear SSH configuration END # Create Dropbear SSH configuration END
echo "Reducing Dropbear size..." echo "Reducing Dropbear size..."
strip -g \ strip -g \
../dropbear_installed/bin/* \ $DESTDIR/usr/bin/* \
../dropbear_installed/sbin/* \ $DESTDIR/usr/sbin/* \
../dropbear_installed/lib/* $DESTDIR/usr/lib/* \
$DESTDIR/lib/*
cp -r \ cp -r \
../dropbear_installed/etc \ $DESTDIR/etc \
../dropbear_installed/bin \ $DESTDIR/usr/bin \
../dropbear_installed/sbin \ $DESTDIR/usr/sbin \
../dropbear_installed/lib \ $DESTDIR/usr/lib \
$MAIN_SRC_DIR/work/src/minimal_overlay/rootfs $DESTDIR/lib \
$WORK_DIR/src/minimal_overlay/rootfs
echo "Dropbear has been installed." echo "Dropbear has been installed."