标签 openwrt 下的文章

如果按前面文章中描述的openwrt编译中,加添的feed源:

src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git passwall https://github.com/xiaorouji/openwrt-passwall

那么默认集成的是普通的geodata文件。
而事实上有一份科学爱好者制作的加强版文件,可以更方便的制定各种策略。

我们可以通过修改Makefile来让编译出来的固件直接集成加强版文件。
对应的Makefile的路径为:

package/feeds/packages/v2ray-geodata/Makefile

编辑这个文件,找到Download/geoipDownload/geosite两个节点分别替换为以下内容:
geoip

GEOIP_VER:=202212042209
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
define Download/geoip
  URL:=https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/$(GEOIP_VER)/
  URL_FILE:=geoip.dat
  FILE:=$(GEOIP_FILE)
  HASH:=8c58d22cb94bf98a42b1b2dff8ac9c39f42f1e83f52dc1ab016c72e8a22c5fcb
endef

geosite

GEOSITE_VER:=202212042209
GEOSITE_FILE:=geosite.dat.$(GEOSITE_VER)
define Download/geosite
  URL:=https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/$(GEOSITE_VER)/
  URL_FILE:=geosite.dat
  FILE:=$(GEOSITE_FILE)
  HASH:=f9d475afa5f2f5bacef596a49fda433224fb8da30d9d7966a3bb1e8a7309472a
endef

然后开始正常编译就可以直接集成加强版的文件了。

因为加强版文件更新非常活跃,基本上每日更新。所以想自己集成最新的文件,只需要修改VER对应的版本号,和文件HASH的哈希值。至于哈希值从哪里来?那就要到他的发布页上去查看了。

自己编译了openwrt固件,朋友试用之后,说web管理界面太丑了……
我是实用派,一开始完全没在意外观的问题。听朋友这么一说决定给换个默认主题。

看了一下目前lean使用的主流界面是argon,就决定用它了。

https://github.com/jerrykuku/luci-theme-argon.git

根据argon官方文档的说法,他的主分支是跟随openwrt官方版本的。而lean目前只支持18.06这个分支。

首先进入lede的根目录中,拉取最新的代码:

cd lede
rm -rf package/lean/luci-theme-argon
git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git package/lean/luci-theme-argon

替换默认主题:

sed -i 's/luci-theme-bootstrap/luci-theme-argon/' feeds/luci/collections/luci/Makefile

因为个人有点小洁癖,不喜欢带不需要的东西,所以只想带一个主题。运行:

make menuconfig

进入LUCI->Theme,选中Luci-theme-argon,并去掉原来默认的luci-theme-bootstrap主题。

接下来正常编译就行了。

使用的是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))