為 OpenWrt 路由器編譯 minieap-sysu 專案

Undefined443發表於2024-08-23

學校的校園網要使用銳捷認證,於是想把認證客戶端裝到刷了 OpenWrt 的路由器上面。然而認證客戶端 Linux 版只支援 x86 架構,我的路由器處理器卻是 AArch64 架構,裝不了,所以只能想辦法找 AArch64 架構的解決方案。

經過一番搜尋,我找到了 minieap-sysu 這個專案,不過需要自己編譯可執行檔案。下面記錄了我的編譯過程。

Prerequisites

編譯可執行檔案首先需要有 toolchain(編譯工具鏈)。我們需要找到自己路由器平臺所對應的 toolchain。OpenWrt 專案已經為我們預編譯好了各種路由器平臺上的 toolchain,所以我們不用再自己手動編譯 toolchain 了。開啟 Firmware Selector,搜尋你的路由器型號,並選擇韌體版本,在搜尋結果中點選最左側的資料夾圖示進入構建倉庫:

  • OpenWrt Firmware Selector
  • ImmortalWrt Firmware Selector

image

在構建倉庫的底部可以找到我們需要的 toolchain

image

下載並解壓 toolchain,並將 toolchain 的路徑新增到 PATH:

export PATH="/path/to/toolchain/bin:$PATH"

如:

export PATH="/home/ubuntu/openwrt-toolchain-23.05.4-mediatek-filogic_gcc-12.3.0_musl.Linux-x86_64/toolchain-aarch64_cortex-a53_gcc-12.3.0_musl/bin:$PATH"

如果沒有對應版本的 toolchain 怎麼辦:如果沒有對應版本的 toolchain,那我們就自己編譯一個。編譯 OpenWrt 的過程可以參見部落格編譯 OpenWrt,在編譯時 toolchain 會被自動構建並儲存到 staging_dir

Build

  1. 克隆並進入程式碼庫:

    git clone https://github.com/WeiMXi/minieap-sysu.git
    cd minieap-sysu
    
  2. 編輯配置檔案 config.mk,這裡要把編譯器(CC)改為我們剛剛下載的 toolchain 裡的。檢視 toolchainbin 目錄,這裡我可以找到我的編譯器為 aarch64-openwrt-linux-musl-gcc-12.3.0,於是用它替換原來的 CC:

    # 將
    CC := mipsel-openwrt-linux-gcc-8.4.0
    # 替換為
    CC := aarch64-openwrt-linux-musl-gcc-12.3.0
    
  3. 開始編譯:

    make
    

    編譯產物是專案根目錄下的 minieap

Run

  1. minieap 上傳到路由器:

    scp -O minieap root@OpenWrt:
    
  2. 登入路由器,啟動 minieap

    ssh root@OpenWrt
    ./minieap -u <student-id> -p <password> -n eth1 --module rjv3 --fake-serial AABB
    

相關文章