DHCP移植到瑞芯微RK356x平台
1. 简介
- 项目中需要在
RK3566上配置DHCP服务器,需要移植DHCP - 编译环境:
Ubuntu20.04 DHCP版本:v4.4.3
2. zlib移植
-
dhcp交叉编译依赖libz.so -
zlib是一个广泛使用的开源数据压缩库,提供了数据压缩和解压缩的功能 -
下载
zlib源码,选择使用1.3.1版本,下载地址 -
解压,并进入源码目录
$ tar -xvf zlib-1.3.1.tar.gz $ cd zlib-1.3.1/ -
configure配置,指定编译输出路径为build目录zlib-1.3.1$ ./configure --prefix=$(pwd)/build

-
由于
zlib无法通过configure工具配置交叉编译工具链,因此需要手动修改Makefile-
修改
CC为交叉编译工具链aarch64-none-linux-gnu-gcc,最好使用绝对路径的方式

-
修改
LDSHARED中的gcc为交叉编译工具链aarch64-none-linux-gnu-gcc,最好使用绝对路径的方式

-
修改
AR为交叉编译工具链aarch64-none-linux-gnu-ar,最好使用绝对路径的方式

-
修改
RANLIB为交叉编译工具链aarch64-none-linux-gnu-ranlib,最好使用绝对路径的方式

-
-
编译,并安装到build目录
zlib-1.3.1$ make && make install -
查看编译输出目录

2. dhcp移植
-
下载最新源码:
-
解压,进入源码目录
$ tar -xvf dhcp-4_4_3.tar.gz $ cd dhcp-4_4_3 -
进入
bind目录,将bind.tar.gz解压;bind(Berkeley Internet Name Domain)是最常用的DNS服务器软件之一dhcp-4_4_3$ cd bind/ bind$ tar -xvf bind.tar.gz -
返回到
dhcp源码的顶层目录bind$ cd .. -
configue配置-
--host指定目标平台,一般设置为交叉编译工具链的前缀即可 -
--prefix指定编译输出路径 -
--with-randomdev指定用来生成随机数的随机设备 -
BUILD_CC指定为宿主机的gcc,必须设置,否则编译会报错 -
CC指定交叉编译工具链,最好使用绝对路径的方式,避免使用到错误的交叉编译工具链;比如我的编译环境中就存在多个名字相同,但是版本不同的交叉编译工具链
$ ./configure \ --host=aarch64-none-linux-gnu \ --prefix=$(pwd)/build \ --with-randomdev=/dev/urandom \ ac_cv_file__dev_random=yes \ BUILD_CC=gcc \ CC=/home/jun/work/share/IG-20/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc -
-
重新进入
bind目录,修改Makefile,指定zlib的路径为《2.zlib移植》中的编译输出路径-
在
bindconfig变量中增加配置--with-zlib=/home/jun/work/share/IG-20/zlib-1.3.1/build,指定zlib的路径 -
如果重新执行了
configure,Makefile配置将被还原,必须重新修改dhcp-4_4_3/bind/Makefile

-
-
返回顶层目录
bind$ cd .. -
编译,并安装到
build目录dhcp-4_4_3$ make && make install -
查看编译输出路径

3. 安装至目标机
-
安装时不要忘了
libz.so也需要拷贝到宿主机,确保dhcp运行时能够链接到该库,不再赘述 -
将
dhcp-4_4_3/build路径下的所有内容拷贝至目标机的/usr/local/dhcpd/路径

-
设置
PATH环境变量,在/etc/profile的末尾添加如下内容
-
使环境变量立即生效
$ source /etc/profile -
查看
dhcp版本

-
查看
dhcp应用程序路径,确保使用的是我们自行移植的程序

4. dhcpd配置
-
关于
dhcpd的配置,可参考如下链接,不再赘述 -
我的需求是:
dhcp server监听br0这个网口,给这个网口下的设备分配192.168.4.1 ~ 192.168.4.254范围的IP-
编写
dhcpd.conf配置文件如下root@avit:/# cat /etc/dhcpd.conf ddns-update-style none; option domain-name "example.org"; default-lease-time 600; max-lease-time 7200; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.2 192.168.4.254; option routers 192.168.4.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.4.255; option domain-name-servers 192.168.4.1; } -
启动
dhcp server,监听网口br0root@avit:/# dhcpd -cf /etc/dhcpd.conf br0
-
我的网口
br0下挂一个AP热点,手机连接该热点,成功获取到一个192.168.4.2的IP,验证成功
-

浙公网安备 33010602011771号