编译环境
macOS 11.3
Docker
前言
这又是一篇迟到的文章,写于2年前,迟迟未发布,最近重新整理了一下,由于个人不喜欢各种插件的堆积固件,所以记录一下编译过程笔记。
关于OpenWrt
提到路由器都绕不过Linksys WRT54G的系统,最开始是因为思科收购了Linksys,而Linksys的路由采用了Linux内核,当时Linux开发组听说里面采用了GPL的Linux代码,要求思科开源相关代码。从此路由系统以此为蓝本发展至今。
2004年OpenWrt开始启动,同一时期出现了DD-WRT,Tomato等优秀固件,2010年后Padavan,Merlin,Pandora等固件开始流行。
2016年由于核心开发者对于OpenWrt的不满,分支出LEDE,并获得多数OpenWrt的开发者支持,2018年又合并回OpenWrt,在原LEDE团队下主导,名字仍叫OpenWrt。
国内小米,极路由等都是基于OpenWrt再次开发,也有开源内核部分代码,至于Luci部分是基于Apache协议我们可能看不到开源了。恩山Lean,KS等也发布了基于OpenWrt的定制固件,集成了不少优秀插件。KS本文不推荐。
编译固件
创建Docker容器
# 拉取Ubuntu的镜像
docker pull ubuntu
# 创建一个基于Ubuntu镜像,名为openwrt的容器
docker run -itd --name openwrt ubuntu
# 登陆到容器环境
docker exec -it openwrt bash
配置环境
# 更新apt
apt update
# 安装必要环境
apt install git gcc g++ unzip make libncurses-dev mkisofs gawk wget python2 python3 rsync file
配置OpenWrt
# 下载OpenWrt源码
git clone -b openwrt-19.07 https://github.com/openwrt/openwrt.git
# 下载OpenClash源码
git clone https://github.com/vernesong/OpenClash.git
# 复制OpenClash到OpenWrt
cp -R OpenClash/luci-app-openclash openwrt/package
# 更新本地源
./scripts/feeds update -a
# 安装包
./scripts/feeds install -a
输入make menuconfig进入交互式配置界面
修改配置,y键选择,n键排除,X86为例
Target System > x86
Subtarget > x86_64
# 添加web界面
LuCI > Collections > Luci
# 添加简体中文
LuCI > Modules > Translations > Chinese Simplified
# 添加主题
LuCI > Themes
# 添加OpenClash
LuCI > Applications > luci-app-openclash
# 添加wget
Nerwork > File Transfer > wget
# 添加kmod-tun,TUN模式必须
Kernel modules > Network Support > kmod-tun
# 设置软件包可用空间,默认安装会占用104M,建议修改扩大
Target Images > Root filesystem partition size
# 排除dnsmasq,我们需要安装dnsmasq-full,不排除会冲突
Base system > dnsmasq
# curl使用OpenSSL
Libraries > libcurl > Selected SSL library > OpenSSL
开始编译
make -j4 download V=s
make -j4 V=s
# -j为多线程编译
编译完成后的固件在openwrt/bin/targets/x86/64/目录下
参考
(1) Wikipedia OpenWrt
(2) GitHub OpenClash
(3) GitHub OpenWrt
(4) OpenWrt官网