御风灰灰
发布于 2024-07-11 / 6 阅读
0
0

dropbear移植

1. 源码下载

1.1 zlibc

wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxvf zlib-1.2.13.tar.gz

1.2 dropbear

wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2022.82.tar.bz2
tar -jxvf dropbear-2022.82.tar.bz2

2. 编译环境设置

本人习惯采用源码与构建目录分离的移植方式

2.1 目录结构如下

build
	dropbear
	zlib-1.2.13
tools
	dropbear-2022.82
	zlib-1.2.13

2.2 zlib-1.2.13构建

  • 在tools/zlib-1.2.13下创建build.sh文件,并软链接到 build/zlib-1.2.13下
  • 调用源目录的configure进行配置
  • 调用make进行编译
  • 安装到指定的目录
PWD=`pwd`
#交叉编译链 自己提供
export CROSS_COMPILE=xxx/aarch64-buildroot-linux-gnu-

CONFIURE_FILE=$PWD/../../tools/zlib-1.2.13/configure

export CC="$CROSS_COMPILE"cc
export CXX="$CROSS_COMPILE"c++
echo "cc $CC"
echo "cxx $CXX"

$CONFIURE_FILE

make -j 8

DESTDIR=$PWD/install make install

2.3 dropbear构建

  • 在tools/dropbear-2022.82下创建build.sh文件,并软链接到 build/dropbear下
  • 调用源目录的configure进行配置
  • 调用make进行编译
  • 安装到指定的目录
PWD=`pwd`
BUILD_DIR=$PWD
SOURCE_DIR=$PWD/../../tools/dropbear-2022.82

# 交叉编译链 自己想办法
export CROSS_COMPILE=xxxx/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-gnu-
ZLIBC_INSTALL=$PWD/../zlib-1.2.13

export CC="$CROSS_COMPILE"cc
export CXX="$CROSS_COMPILE"c++
export CFLAGS="-I$ZLIBC_INSTALL/install/usr/local/include"
echo "cc $CC"
echo "cxx $CXX"

$SOURCE_DIR/configure --host=aarch64-linux-gnu --with-zlib=$ZLIBC_INSTALL

make -j 8

rm -rf $PWD/install
mkdir $PWD/install
DESTDIR=$PWD/install make install

mkdir -p $PWD/install/etc/dropbear
cp -r $SOURCE_DIR/rootfs/etc/dropbear/* $PWD/install/etc/dropbear
mkdir -p $PWD/install/usr/lib/systemd/system
cp -r $SOURCE_DIR/rootfs/dropbear.service $PWD/install/usr/lib/systemd/system/
echo "packet dropbera"
rm -rf dropbear.tar.gz
cd install && tar -czvf $BUILD_DIR/dropbear.tar.gz * && cd ../

3. 安装配置

3.1 需要生成ssh等配置

这个文件可在目标机上初始化生成 或者 编译环境生成,拷贝

if [ ! -f /etc/dropbear/dropbear_rsa_host_key ] ; then
	dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
fi

if [ ! -f /etc/dropbear/dropbear_dss_host_key ] ; then
	dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
fi

3.2 systemd服务

新建 dropbear.service 文件安装在 /usr/lib/systemd/system/
我将这个文件放在tools/dropbear-2022.82下,打包时复制到安装目录

[Unit]
Description=dropbera
After=network.target
[Service]
Type=forking
User=root
Group=root
KillMode=kill dropbear
Restart=no
ExecStart=/usr/local/sbin/dropbear
PrivateTmp=true 
[Install]   
WantedBy=multi-user.target
  • 上述命令执行完成后,在build/dropbear/dropbear.tar.gz有打包文件- 在目标上解压 dropbear.tar.gz到根文件系统

评论