在arm64的机器上编译openwrt固件。
使用的是lean
的源:
https://github.com/coolsnowwolf/lede.git
大体步骤与文档中描述的基本一致,但是因为是在arm64的主机上。因此有几个点与x86机器编译不同,这里记录一下。
编译的系统是Ubuntu 20.04 aarch64。
首先安装编译环境的包就与x86不太一样。具体是:
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib-arm-linux-gnueabihf \
g++-multilib-arm-linux-gnueabihf git golang gperf haveged help2man intltool libelf-dev libglib2.0-dev \
libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
用git拉回代码后,还需要加入特别需要的包。
在 feeds.conf.default
文件中添加三行:
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git passwall https://github.com/xiaorouji/openwrt-passwall
src-git small https://github.com/kenzok8/small
更新 feeds 什么的跟官方文档一样。
./scripts/feeds update -a
./scripts/feeds install -a
接下来,重点来了。必须多做一件与x86系统不同的配置,否则会报这个错误。
Makefile:366: * go-bootstrap cannot be installed on linux/arm64. Stop.
看报错信息,是编译过程无法安装go到arm64系统上。所以需要手动安装golang,并把路径设置到编译配置中。
在配置编译参数时:
make menuconfig
要加入以下设置:
Languages > Go > Configuration > External bootstrap Go root directory
按上面的环境安装后,go应该默认在 /usr/lib/go 目录下。将 /usr/lib/go 写入这项配置。
(/usr/lib/go) External bootstrap Go root directory
选好其它需要的配置后,开始编译:
make download -j8
make V=s -j1
慢慢等待编译完成吧。编译完成后输出路径:bin/targets
需要更新代码再次编译的话:
cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)
如果需要重新配置:
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
PS:第一次编译有概率会出现一个错误。
bash: po2lmo: command not found
这个是因为包依赖关系没有处理好,被依赖的luci-base
包没有先编译出来。所以只要先编译好就可以了。
用以下命令指定编译luci-base
。
make package/feeds/luci/luci-base/compile V=99
给编译的固件加个自己的签名……
cd lede
vim package/lean/default-settings/files/zzz-default-settings
找到DISTRIB_REVISION
或者DISTRIB_DESCRIPTION
,加上想要添加的内容。比如:
(Compiled by winger. On $(date +%F))