diff options
| author | Rob Landley <rob@landley.net> | 2020-05-08 03:16:38 -0500 | 
|---|---|---|
| committer | Rob Landley <rob@landley.net> | 2020-05-08 03:16:38 -0500 | 
| commit | 4761d756dde03e62de0c3f3d7f25067a4f207fa3 (patch) | |
| tree | a562276a01feba9667ef9387b2f5391b9655a92d | |
| parent | 9c6a08e1c36fb7f3b056cc24581cc5467d81ad12 (diff) | |
| download | toybox-4761d756dde03e62de0c3f3d7f25067a4f207fa3.tar.gz | |
beat the dropbear build and module support a little further into shape.
| -rwxr-xr-x | scripts/mkroot.sh | 15 | ||||
| -rwxr-xr-x | scripts/root/dropbear | 18 | 
2 files changed, 24 insertions, 9 deletions
| diff --git a/scripts/mkroot.sh b/scripts/mkroot.sh index 43500ef1..b6386eac 100755 --- a/scripts/mkroot.sh +++ b/scripts/mkroot.sh @@ -94,7 +94,7 @@ if [ $$ -eq 1 ]; then    [ "$(date +%s)" -lt 10000000 ] && sntp -sq time.google.com    # Run expansion scripts (if any) -  for i in $(/etc/rc/* | sort); do [ -e "$i" ] && . $i; done +  for i in $(echo /etc/rc/* | sort); do [ -e "$i" ] && . $i; done    [ -z "$CONSOLE" ] && CONSOLE="$(</sys/class/tty/console/active)"    [ -z "$HANDOFF" ] && HANDOFF=/bin/sh && echo Type exit when done. @@ -109,7 +109,7 @@ chmod +x "$ROOT"/init &&  # Google's nameserver, passwd+group with special (root/nobody) accounts + guest  echo "nameserver 8.8.8.8" > "$ROOT"/etc/resolv.conf &&  cat > "$ROOT"/etc/passwd << 'EOF' && -root::0:0:root:/root:/bin/sh +root:x:0:0:root:/root:/bin/sh  guest:x:500:500:guest:/home/guest:/bin/sh  nobody:x:65534:65534:nobody:/proc/self:/dev/null  EOF @@ -120,6 +120,9 @@ announce toybox  make clean ${CONF:-defconfig KCONFIG_ALLCONFIG=<(echo $'CONFIG_SH=y\nCONFIG_ROUTE=y')} &&  LDFLAGS=--static PREFIX="$ROOT" make toybox install || exit 1 +# Build any modules +for i in $PKG; do announce "$i"; PATH="$PKGDIR:$PATH" source $i; done +  if [ -z "$LINUX" ] || [ ! -d "$LINUX/kernel" ]; then    echo 'No $LINUX directory, kernel build skipped.'  else @@ -188,7 +191,7 @@ else    fi    # Write the qemu launch script -  echo "qemu-system-$QEMU" '"$@"' -nographic -no-reboot -m 256 \ +  echo qemu-system-"$QEMU" '"$@"' $QEMU_MORE -nographic -no-reboot -m 256 \         "-kernel $(basename "$VMLINUX") -initrd ${CROSS_BASE}root.cpio.gz" \         "-append \"quiet panic=1 HOST=$TARGET console=$KARGS \$KARGS\"" \         ${DTB:+-dtb "$(basename "$DTB")"} ";echo -e '\e[?7h'" \ @@ -228,8 +231,8 @@ else    cp "$VMLINUX" "$OUTPUT" && cd .. && rm -rf linux && popd || exit 1  fi -# Build any modules, clean up, and package root filesystem for initramfs. -for i in $PKG; do announce "$i"; PATH="$PKGDIR:$PATH" source $i; done +# clean up and package root filesystem for initramfs.  rmdir "$MYBUILD" "$BUILD" 2>/dev/null  announce "${CROSS_BASE}root.cpio.gz" -(cd "$ROOT" && find .|cpio -o -H newc|gzip) > "$OUTPUT/$CROSS_BASE"root.cpio.gz +(cd "$ROOT" && find . | cpio -o -H newc --no-preserve-owner | gzip) \ +  > "$OUTPUT/$CROSS_BASE"root.cpio.gz diff --git a/scripts/root/dropbear b/scripts/root/dropbear index 79a9d8c3..60654c45 100755 --- a/scripts/root/dropbear +++ b/scripts/root/dropbear @@ -28,17 +28,29 @@ setupfor dropbear  echo 'echo "$@"' > config.sub &&  ZLIB="$(echo ../zlib*)" &&  CFLAGS="-I $ZLIB -O2" LDFLAGS="-L $ZLIB" ./configure --enable-static \ -  --host=${CROSS_BASE%-} && +  --disable-wtmp --host=${CROSS_BASE%-} &&  sed -i 's@/usr/bin/dbclient@ssh@' options.h &&  sed -i 's@\(#define NON_INETD_MODE\) 1@\1 0@' default_options.h &&  make -j $(nproc) PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 SCPPROGRESS=1 &&  ${CROSS_COMPILE}strip dropbearmulti && -mkdir -p "$ROOT/bin" && +mkdir -p "$ROOT"/{bin,etc/dropbear,var/log} && +touch "$ROOT"/var/log/lastlog &&  cp dropbearmulti "$ROOT"/bin || exit 1 -for i in "$ROOT"/bin/{ssh,sshd,scp,dropbearkey} +for i in "$ROOT"/bin/{ssh,dropbear,scp,dropbearkey}  do    ln -s dropbearmulti $i || exit 1  done  cleanup  rm -rf zlib-* + +# user root password root, user guest no password +echo -e 'root:$1$939UTPzb$/PfVYAsF2Hqi/AQ3UBjbK/:::::::\nguest::::::::' > "$ROOT"/etc/shadow && +chmod 600 "$ROOT"/etc/shadow && + +# file to run on host to ssh into guest +echo 'ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" ${1:+$1@}127.0.0.1 -p 2222' > "$OUTPUT"/ssh2dropbear.sh && +chmod +x "$OUTPUT"/ssh2dropbear.sh + +# Forward 127.0.0.1:2222 into qemu instance +QEMU_MORE="-nic user,hostfwd=tcp:127.0.0.1:2222-:22" | 
