背景:尝试了各家主流版本,最终发现官方OpenWRT默认、完美支持IPv6,但不包含必要的插件。 而主流的版本,对IPv6支持度都不太理想,要么屏蔽掉了一些IPv6配置参数,要么剔除掉IPv6系统组件,版本干脆不支持IPv6。 于是只能自己动手编译了。 记录下来,以备参考。
1)编译环境OS选择个人建议Ubuntu,界面交互更多,使用更容易。且对各种环境的编译支持度极佳。 Ubuntu系统官方下载链接:
2)创建一个新帐号编译版本不能使用ROOT帐号,因此需要创建一个新的系统帐号、设置密码。 打开“终端”工具,执行: sudo adduser myname登陆新用户:xlinux@xlinux-X1:~$ su myname密码: 切换只根目录下:myname@xlinux-X1:/home/xlinux$ cd ~myname@xlinux-X1:~$
3)准备OS系统环境[ 注意 ] 从本步骤开始,务必开启全局科学,否则下载源码、编译中拉取依赖等会特别慢、超时导致失败等问题。
Ubuntu升级到最新的22.04 + 之后执行下述命令: sudo apt update sudo apt install build-essential clang flex bison g++ gawk gcc-multilib gettext \ git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev \ file wget
其他os参考官方说明:
4)下载源码并切换稳定分支下载源代码: # Download and update the sources
进入代码目录,并拉取源码: cd openwrt git pull
切换最新稳定分支: # Select a specific code revision git branch -a git tag git checkout v22.03
[说明] 这一步很重要,切换稳定分支,编译的版本是经过充分验证的稳定版本,不容易出现莫名其妙的bug, 减少很多白折腾。切身教训,供参考。
5)Feed中加入需要的组件命令行执行如下命令,编辑feeds.conf.default: vim feeds.conf.default
文件内容替换为下述内容,里面添加了必要的组件,如hellworld、passwall等组件,你也可以继续添加其他需要的组件路径:
6)更新并安装feeds# Update the feeds ./scripts/feeds update -a ./scripts/feeds install -a
7)图形化配置OpenWRT组件:[注意] 执行下述命令启动图形化配置界面之前,把“终端”命令行窗口最大化。如果窗口太小会导致启动失败!
执行下述命令启动图形化配置界面 # Configure the firmware image and the kernel make menuconfig
[注意] 这一步至关重要,决定了自己编译版本的功能完整度,如IPv6支持度等。 A)在打开的图形界面中,在第一项回车,进入目标系统选择列表,如果是intel芯片选X86,如果R2S~R5S系列选Rockchip,其他芯片类似操作。 此时,第二个选项SubTarget通常会自动变更为对应的型号,如果正确不用修改,如果不正确可进入更改。 接着,进入第三个选项Target Profile,选择对应的产品型号及规格,比如R4S 4G版本。
B)进入第四个选i项Target Images,选择需要的版本包类型,通常ext4、squashfs文件系统类型都给选上。ext4适合老手,可玩性更强。小白用squashfs,搞坏了可以恢复初始化,而不需要重新安装系统了。
[此处超级超级特别特别万分万分注意]
Kernel partition size, 根据你硬盘大小,尽量填大些,如512~1000。 Root filesystem partition size, 也尽量填大,1000~2000。 如果这里不修改,系统会默认预留极少的剩余空间给你后续安装新组件,稍微安装几个,就会告警磁盘空间不足,无法安装新组件。 当然,你如果打算选择编译进版本更多的组件,这两个数值应该设置的更大写。 这样,也避免一些攻略说的,刷完软路由后,不重启就立即用Diskginus去修改这两个分区的大小。我个人实测,10次有9次会提示磁盘某处被bitlock加密锁定了,调整分区失败,只能哭。
[此处超级超级特别特别万分万分注意]
C)进入Global build settings,找到Enable IPv6 support in packages选项,确认处于选中状态,至关重要。 [说明:IPv6配置项一
D)进入Base system, 选中dnsmasq-full, 取消dnsmasq, dnsmasq-dhcpv6两个选项。 [注意] 务必取消dnsmasq, dnsmasq-dhcpv6两个选项,否则编译会出差!!!
继续下翻,找到firewall4,确认其选中,并取消选择firewall。
E)进入kernel modules – network support, 选中kmod-ppp, kmod-pppoe, kmod-pppox, 用于软路由拨号。
继续下翻,找到kmod-wireguard, 并选中
F)进入libraries – SSL, 选中libopenssl
继续下翻,选中libustream-openssl, 取消libustream-wolfssl,或这设置为M(只编译打包,不安装) [注意] 务必取消libustream-wolfssl,或将其设置为M,否则编译最后阶段会报依赖冲突错误,且编译失败,不能正常出包!!!
G)进入Luci – 1. collections, 选中Luci, 和Luci-ssl-openssl
[说明] 如果不选择Luci-ssl-openssl,则无法进入软路由web管理后台,只能命令行管理!
H)进入Luci – 3. Applications, 开始选择各种服务、特性组件: 如adblock拦截广告:
ddns动态dns(方便出门在外访问家里设备):
passwall海淘购物:
并进入configuration选中所有协议(记住,务必选中所有协议,很多时候协议之间能够互相备份,或实现特别功能,如hysteria进行超级网络加速):
smartdns实施dns优选:
选中SSR plus, 默认选Xray-core(是v2ray的超级),并选中所有协议:
[特别重要] 务必选择uhttpd, 否则Luci界面也出不来!!
选中wireguard, 以备后用:
I)进入Luci – 4.Themes, 选择自己喜欢的OpenWRT后台web管理界面风格。
J)进入Luci – 5.Protocols, 选中openconnect, 并确认ipv6和ppp已经默认被选中:
K)进入Network – Routing and redirection, 确认ip-full已经默认选中:
继续往下翻,选中 odhcp6c, 和odhcpd-ipv6only. [重点注意] 不要再选中odhcpd, 否则会导致依赖冲突,编译失败!
至此,编译的各项配置已经完成。
8)启动首次编译执行下述命令,预下载待编译组件源码。 make -j8 download V=s 执行下述命令,启动首次编译: make -j1 V=s [超级超级注意] 首次编译,千万使用-j1, 指的是单线程编译,不容易出现莫名其妙的编译错误。 首次编译可能需要2~3小时,耐性等待即可。
9)实施二次编译当修改了target system目标系统时,如从x86修改为rockchip, 需要进行二次编译。 执行顺序如下: cd lede git pull ./scripts/feeds update -a && ./scripts/feeds install -a make defconfig make -j8 download make -j$(($(nproc) + 1)) V=s
10)将编译环境恢复初始化如果一直出现一些莫名其妙的编译错误,无法解决,可重新初始化一次编译环境。可有效解决一直出现莫名其妙的编译错误: make clean && ./scripts/feeds clean rm -rf ./tmp && rm -rf .config ./scripts/feeds update -a && ./scripts/feeds install -a make defconfig make -j8 download make -j$(($(nproc) + 1)) V=s
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|