Difference between revisions of "HIP:TS-7000:dropbear"
Jump to navigation
Jump to search
(→crosstool) |
(→configure/make) |
||
(34 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | = | + | = about = |
− | == crosstool == | + | This page describes how to compile [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] to run in [http://www.embeddedarm.com/ Technologic System's] [http://www.embeddedarm.com/linux/ARM.htm TS-Linux for ARM] distribution. Debian was used for development and cross compiling. The TS-7260's root file system uses the RedBoot NFS option. |
+ | |||
+ | = compiling = | ||
+ | == crosstool setup == | ||
=== download and setup ts crosstool package === | === download and setup ts crosstool package === | ||
− | * At the time of this writing, | + | * At the time of this writing, the '''Linux Crosstool gcc-4.0.1-glibc-2.3.5 -- unknown (05-20-2006)''' was available |
ftp://ftp.embeddedarm.com/ts-arm-linux-cd/cross-toolchains/crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar.bz2 | ftp://ftp.embeddedarm.com/ts-arm-linux-cd/cross-toolchains/crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar.bz2 | ||
=== move it to / and unpack it === | === move it to / and unpack it === | ||
− | cd / | + | $ cd / |
− | sudo tar -xf crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar | + | $ sudo tar -xf crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar |
=== add it to your path === | === add it to your path === | ||
− | + | $ cat ~/.bash_profile | grep cross | |
PATH=/opt/crosstool/gcc-4.0.1- glibc-2.3.5/arm-unknown-linux-gnu/bin:${PATH} | PATH=/opt/crosstool/gcc-4.0.1- glibc-2.3.5/arm-unknown-linux-gnu/bin:${PATH} | ||
== dropbear == | == dropbear == | ||
− | = | + | === download dropbear === |
+ | * [[http://matt.ucc.asn.au/dropbear/dropbear.html dropbear home]] | ||
+ | $ wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.49.tar.bz2 | ||
+ | $ cd dropbear-0.49/ | ||
+ | |||
+ | |||
+ | === configure/make === | ||
+ | |||
+ | * dropbear needs access to a good random pool in /dev/random and for some reason it would always hang on /dev/random and would print this message while running: | ||
+ | |||
+ | Warning: Reading the random source seems to have blocked. | ||
+ | If you experience problems, you probably need to find a better entropy source. | ||
+ | |||
+ | * so i edited options.h and changed the random device to be urandom for this error. | ||
+ | |||
+ | #define DROPBEAR_RANDOM_DEV "/dev/urandom" | ||
+ | |||
+ | * the shell script i used to automate the build process | ||
+ | |||
+ | $ cat run.sh | ||
+ | export CFLAGS="-Os -static -Wall" | ||
+ | export LDFLAGS="-static" | ||
+ | ./configure --host=arm-unknown-linux-gnu --build=arm --disable-zlib --disable-syslog --disable-lastlog (optionally add --enable-static) | ||
+ | make clean | ||
+ | make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 STATIC=1 | ||
+ | |||
+ | === move files === | ||
+ | |||
+ | * relocate files to nfs directory | ||
+ | |||
+ | $ ln -s dropbearmulti ssh | ||
+ | $ mv dropbear ssh scp dropbearmulti dropbearkey dropbearconvert ../tslinux/usr/sbin/ | ||
+ | $ mv dbclient ../tslinux/usr/bin | ||
+ | |||
+ | = booting = | ||
+ | |||
+ | == disable ssh for inetd == | ||
+ | |||
+ | $ cat etc/inetd.conf | grep ssh | ||
+ | #ssh stream tcp nowait root /usr/sbin/dropbear dropbear -i | ||
+ | $ kill -HUP <pid of inetd> | ||
+ | |||
+ | == create init.d script == | ||
+ | |||
+ | $ cat etc/init.d/dropbear | ||
+ | OPTIONS="> /dev/null 2>&1" | ||
+ | |||
+ | case "$1" in | ||
+ | start) | ||
+ | echo "Starting dropbear..." | ||
+ | /usr/sbin/dropbear $OPTIONS | ||
+ | ;; | ||
+ | stop) | ||
+ | echo "Stopping dropbear..." | ||
+ | pid=`pidof dropbear` | ||
+ | if [ "$pid" != "" ]; then | ||
+ | kill $pid | ||
+ | fi | ||
+ | ;; | ||
+ | restart) | ||
+ | $0 stop | ||
+ | $0 start | ||
+ | ;; | ||
+ | *) | ||
+ | echo "usage: start|stop|restart" | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | == create rc link == | ||
+ | $ cd etc/rc.d/rc3.d/ | ||
+ | $ ln -s ../../init.d/dropbear S99dropbear | ||
+ | |||
+ | == fix dropbear errors by recreating links == | ||
+ | |||
+ | ssh to ts-board and make create a bash script like this one: | ||
+ | * Note: TS-7260 uses sh, so use: #!/bin/sh instead of #!/bin/bash | ||
+ | |||
+ | #!/bin/sh | ||
+ | # Remove All /usr/sbin | ||
+ | rm -rf /usr/sbin/scp | ||
+ | rm -rf /usr/sbin/ssh | ||
+ | rm -rf /usr/sbin/dbclient | ||
+ | rm -rf /usr/sbin/dropbear | ||
+ | rm -rf /usr/sbin/dropbearkey | ||
+ | rm -rf /usr/sbin/dropbearconvert | ||
+ | |||
+ | # Remove All /usr/bin | ||
+ | rm -rf /usr/bin/scp | ||
+ | rm -rf /usr/bin/ssh | ||
+ | rm -rf /usr/bin/dbclient | ||
+ | rm -rf /usr/bin/dropbear | ||
+ | rm -rf /usr/bin/dropbearkey | ||
+ | rm -rf /usr/bin/dropbearconvert | ||
+ | |||
+ | # Link All /usr/sbin | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/scp | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/ssh | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/dbclient | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbear | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbearkey | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbearconvert | ||
+ | |||
+ | # Link All /usr/bin | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/scp | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/ssh | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/dbclient | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/dropbear | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/dropbearkey | ||
+ | ln -s /usr/sbin/dropbearmulti /usr/bin/dropbearconvert | ||
+ | |||
+ | = links = | ||
* [http://omnifi.cwtsecure.com/index.php?title=DMP1_SSHD DMP1 SSHD] | * [http://omnifi.cwtsecure.com/index.php?title=DMP1_SSHD DMP1 SSHD] | ||
* [http://omnifi.cwtsecure.com/index.php?title=Compile_Programs Compile Programs] | * [http://omnifi.cwtsecure.com/index.php?title=Compile_Programs Compile Programs] | ||
+ | * [http://www.nomis52.net/?section=projects§2=netgear&page=dropbear dropbear netgear] |
Latest revision as of 12:17, 20 May 2008
Contents
about
This page describes how to compile dropbear to run in Technologic System's TS-Linux for ARM distribution. Debian was used for development and cross compiling. The TS-7260's root file system uses the RedBoot NFS option.
compiling
crosstool setup
download and setup ts crosstool package
- At the time of this writing, the Linux Crosstool gcc-4.0.1-glibc-2.3.5 -- unknown (05-20-2006) was available
ftp://ftp.embeddedarm.com/ts-arm-linux-cd/cross-toolchains/crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar.bz2
move it to / and unpack it
$ cd / $ sudo tar -xf crosstool-linux-gcc-4.0.1-glibc-2.3.5.tar
add it to your path
$ cat ~/.bash_profile | grep cross PATH=/opt/crosstool/gcc-4.0.1- glibc-2.3.5/arm-unknown-linux-gnu/bin:${PATH}
dropbear
download dropbear
$ wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.49.tar.bz2 $ cd dropbear-0.49/
configure/make
- dropbear needs access to a good random pool in /dev/random and for some reason it would always hang on /dev/random and would print this message while running:
Warning: Reading the random source seems to have blocked. If you experience problems, you probably need to find a better entropy source.
- so i edited options.h and changed the random device to be urandom for this error.
#define DROPBEAR_RANDOM_DEV "/dev/urandom"
- the shell script i used to automate the build process
$ cat run.sh export CFLAGS="-Os -static -Wall" export LDFLAGS="-static" ./configure --host=arm-unknown-linux-gnu --build=arm --disable-zlib --disable-syslog --disable-lastlog (optionally add --enable-static) make clean make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 STATIC=1
move files
- relocate files to nfs directory
$ ln -s dropbearmulti ssh $ mv dropbear ssh scp dropbearmulti dropbearkey dropbearconvert ../tslinux/usr/sbin/ $ mv dbclient ../tslinux/usr/bin
booting
disable ssh for inetd
$ cat etc/inetd.conf | grep ssh #ssh stream tcp nowait root /usr/sbin/dropbear dropbear -i $ kill -HUP <pid of inetd>
create init.d script
$ cat etc/init.d/dropbear OPTIONS="> /dev/null 2>&1" case "$1" in start) echo "Starting dropbear..." /usr/sbin/dropbear $OPTIONS ;; stop) echo "Stopping dropbear..." pid=`pidof dropbear` if [ "$pid" != "" ]; then kill $pid fi ;; restart) $0 stop $0 start ;; *) echo "usage: start|stop|restart" ;; esac
create rc link
$ cd etc/rc.d/rc3.d/ $ ln -s ../../init.d/dropbear S99dropbear
fix dropbear errors by recreating links
ssh to ts-board and make create a bash script like this one:
- Note: TS-7260 uses sh, so use: #!/bin/sh instead of #!/bin/bash
#!/bin/sh # Remove All /usr/sbin rm -rf /usr/sbin/scp rm -rf /usr/sbin/ssh rm -rf /usr/sbin/dbclient rm -rf /usr/sbin/dropbear rm -rf /usr/sbin/dropbearkey rm -rf /usr/sbin/dropbearconvert
# Remove All /usr/bin rm -rf /usr/bin/scp rm -rf /usr/bin/ssh rm -rf /usr/bin/dbclient rm -rf /usr/bin/dropbear rm -rf /usr/bin/dropbearkey rm -rf /usr/bin/dropbearconvert
# Link All /usr/sbin ln -s /usr/sbin/dropbearmulti /usr/sbin/scp ln -s /usr/sbin/dropbearmulti /usr/sbin/ssh ln -s /usr/sbin/dropbearmulti /usr/sbin/dbclient ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbear ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbearkey ln -s /usr/sbin/dropbearmulti /usr/sbin/dropbearconvert
# Link All /usr/bin ln -s /usr/sbin/dropbearmulti /usr/bin/scp ln -s /usr/sbin/dropbearmulti /usr/bin/ssh ln -s /usr/sbin/dropbearmulti /usr/bin/dbclient ln -s /usr/sbin/dropbearmulti /usr/bin/dropbear ln -s /usr/sbin/dropbearmulti /usr/bin/dropbearkey ln -s /usr/sbin/dropbearmulti /usr/bin/dropbearconvert