學校的校園網要使用銳捷認證,於是想把認證客戶端裝到刷了 OpenWrt 的路由器上面。然而認證客戶端 Linux 版只支援 x86 架構,我的路由器處理器卻是 AArch64 架構,裝不了,所以只能想辦法找 AArch64 架構的解決方案。
經過一番搜尋,我找到了 minieap-sysu 這個專案,不過需要自己編譯可執行檔案。下面記錄了我的編譯過程。
Prerequisites
編譯可執行檔案首先需要有 toolchain
(編譯工具鏈)。我們需要找到自己路由器平臺所對應的 toolchain
。OpenWrt 專案已經為我們預編譯好了各種路由器平臺上的 toolchain
,所以我們不用再自己手動編譯 toolchain
了。開啟 Firmware Selector,搜尋你的路由器型號,並選擇韌體版本,在搜尋結果中點選最左側的資料夾圖示進入構建倉庫:
- OpenWrt Firmware Selector
- ImmortalWrt Firmware Selector
在構建倉庫的底部可以找到我們需要的 toolchain
:
下載並解壓 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
-
克隆並進入程式碼庫:
git clone https://github.com/WeiMXi/minieap-sysu.git cd minieap-sysu
-
編輯配置檔案
config.mk
,這裡要把編譯器(CC
)改為我們剛剛下載的toolchain
裡的。檢視toolchain
的bin
目錄,這裡我可以找到我的編譯器為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
-
開始編譯:
make
編譯產物是專案根目錄下的
minieap
。
Run
-
將
minieap
上傳到路由器:scp -O minieap root@OpenWrt:
-
登入路由器,啟動
minieap
:ssh root@OpenWrt ./minieap -u <student-id> -p <password> -n eth1 --module rjv3 --fake-serial AABB