DHCP移植到瑞芯微RK356x平臺

zhijun發表於2024-11-10

dhcpd交叉編譯

1. 簡介

  • 專案中需要在RK3566上配置DHCP伺服器,需要移植DHCP
  • 編譯環境:Ubuntu20.04
  • DHCP版本:v4.4.3

2. zlib移植

  • dhcp交叉編譯依賴libz.so

  • zlib是一個廣泛使用的開源資料壓縮庫,提供了資料壓縮和解壓縮的功能

  • 下載zlib原始碼,選擇使用1.3.1版本,下載地址

    https://www.zlib.net/

  • 解壓,並進入原始碼目錄

    $ 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移植

  • 下載最新原始碼:

    https://github.com/isc-projects/dhcp/releases/tag/v4_4_3

  • 解壓,進入原始碼目錄

    $ 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的路徑

    • 如果重新執行了configureMakefile配置將被還原,必須重新修改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的配置,可參考如下連結,不再贅述

    https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-dhcp-configuring-server

相關文章