峯言凬语 O ever youthful O ever weeping~
本无意与众不同,怎奈何口味太重。
首页
平水韵
颜色表
ABOUT
文章分类
友情链接
OpenWrt合并编译lean固件
2019-08-16 |Nonni | Net

nh005.png
OpenWrt与其衍生版本Koolshare和Lean简要分析
OpenWrt:优点是官方原版,代码最新,稳定可靠。缺点是很多地方需要DIY。
Koolshare:优点是简单方便,小白即可操作。缺点是稳定性一般,默认开了多拨均衡,易掉线,软件中心不稳定,且移除了科学上网等插件。
Lean:优点是编译可靠,有功能集成。缺点是luci版本旧,内核升级慢。
Koolshare属于自闭症且有过大规模掉网翻车的河蟹记录,我们现在采用OpenWrt合并lean代码来编译好用的固件。


compiling environment
服务器搭建好梯子,扶梯上码
Ubuntu 18.04 LTS 64bit
若使用VMware虚拟机环境,安装VMware tools:把VMware tools解压到主文件夹,进入运行 sudo ./wmware-install.pl
不要用root来git和编译
Let`s Go~~~

sudo apt-get update

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint

或者:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex node-uglify gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint

git clone https://github.com/openwrt/openwrt

git clone https://github.com/coolsnowwolf/lede

复制/lede/packgage/lean 到/openwrt/package
自定义Luci:修改openwrt/feeds.conf.default
自定义安装包:修改openwrt的include/target.mk
在DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd 后面加上要编译的内容。
举个栗子:

DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd default-settings luci luci-app-aliddns luci-app-upnp luci-app-adbyby-plus luci-app-autoreboot luci-app-ssr-plus ddns-scripts_aliyun luci-app-vlmcsd luci-app-ramfree luci-app-flowoffload 

说明:default-settings luci 必须要有,luci-app-ddns luci-app-upnp luci-app-adbyby-plus luci-app-autoreboot luci-app-ssr-plus ddns-scripts_aliyun luci-app-vlmcsd luci-app-ramfree luci-app-flowoffload 选择使用。
在DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables处,将dnsmasq改为dnsmasq-full,把 ip6tables odhcpd-ipv6only odhcp6c去掉,否则手机浏览有ipv6地址的网站时,可能不能访问;扶墙时有问题。
举个栗子:

DEFAULT_PACKAGES.router:=dnsmasq-full iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd-ipv6only odhcp6c kmod-ipt-offload

修改目标固件包:修改/target/linux/x86/Makefile 里DEFAULT_PACKAGES
注意不要加autocore,会和新版luci冲突,导致主页错误。如果是实机写盘安装,此处要加上相关硬件驱动,可参考lean的设置。如果只编译一个固件,也可加在上一步的DEFAULT_PACKAGES 处。
应用fullconenat:拷贝lede/package/network/config/firewall/里的makefile文件及patches文件夹到openwrt下面的同目录里,覆盖openwrt官方的。
openwrt设置活动连接数:修改package/kernel/linux/files/sysctl-nf-conntrack.conf里net.netfilter.nf_conntrack_max=16384,可修改为65536 或者更大。

定义主机名和ssr-plus
修改openwrt/package/lean/default-settings/files/zzz-default-settings
文件中uci set system.@system[0].timezone=CST-8 后增加 uci set system.@system[0].hostname=LEDE
增加 echo 0xDEADBEEF > /etc/config/google_fu_mode
PPPOE自定义
添加路由器pppoe拨号账户密码:

uci set network.wan.proto='pppoe'
uci set network.wan.username='宽带账号'
uci set network.wan.password='宽带密码'
uci set network.wan.ifname='eth2'   //网络接口要根据具体的路由器WAN口情况修改
uci set network.wan6.ifname='eth2'
uci commit network  

修改管理ip地址和lan口配置
修改package/base-files/files/bin/config_generate

uci set network.lan.ipaddr='192.168.11.11'    //默认的管理ip
uci set network.lan.proto='static'          //LAN口静态IP方式
uci set network.lan.type='bridge'           //设置桥接
uci set network.lan.ifname='eth0 eth1 eth2 eth4 eth5' //网络接口要根据具体的路由器LAN口情况修改
uci commit network

v2ray及ssr-puls版本的处理
如果v2ray官方有最新版,在openwrt/package/lean/v2ray/makefile 里PKG_VERSION:=v4.18.0修改成最新版本号。
ssr-plus在新luci下需要处理下,否则安装后不能扶墙,增加服务器的时候会出现错误。 删除luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua和client-config.lua里的'local ipkg = require("luci.model.ipkg")'

安装feeds包

./scripts/feeds update -a && ./scripts/feeds install -a

OpenWrt默认kb显示内存可用数,修改为MB显示,增加CPU频率显示
/feeds/luci/modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js
在其中找到内存处,将1024改为1048576 ,后面的kb改为MB。
/feeds/luci/modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm
里面把第三个

<div class="tr"><div class="td left" width="33%"><%:Architecture%></div><div class="td left"><%=pcdata(boardinfo.system or "?")%></div></div>

修改为:

<div class="tr"><div class="td left" width="33%"><%:Architecture%></div><div class="td left"><%=pcdata(boardinfo.system or "?")%>:<%=luci.sys.exec("cat /proc/cpuinfo | grep 'core id' | sort -u | wc -l ")%>Core<%=luci.sys.exec("cat /proc/cpuinfo | grep 'processor' | wc -l")%>Thread</div></div>
<div class="tr"><div class="td left" width="33%"><%:CPU Info%></div><div class="td left"><%=luci.sys.exec("grep 'MHz' /proc/cpuinfo | cut -c11- |sed -n '1p'")%> MHz <%=luci.sys.exec("sensors | grep 'Core 0' | cut -c10-24")%></div></div>

make defconfig

make defconfig

make menuconfig
选择Soc,<*>编译进固件,<m>编译不进固件,确定路由配置

根据需要设置
target system,subtarget,target images,修改固件大小 Kernel partition size (in MB) Root filesystem partition size (in MB)。
各种驱动,支持文件,应用,以及luci-application下的web UI。

make menuconfig

编译
预下载dl库可以避免下载造成的编译失败

make download V=s

make -j1 V=s

-j1 后面是线程数,根据CPU型号线程数编译,V=s是调试显示

GoodLuck!


8899
若你懒得编译,也可使用我修改编译的版本
默认IP 192.168.11.11, 密码 nonni2019 or 空
下载地址:
http://nonni.vip/d.html

编译冲突处理

配置还原到初始状态命令: rm -f .config && rm -f .config.old
删除临时文件目录: rm tmp -rf
清除封装: make clean
清除编译中间文档: make dirclean
清除DL文件: make disclean
彻底删除: rm lede -rf

错误处理

error: ext4_allocate_best_fit_partial: failed to allocate 13 blocks, out of space?
make[5]: * [mkfs-ext4] Error 1
解决办法:
make menuconfig
菜单项"Target Images","Root filesystem partition size (in MB)"把值改大。
这种情况通常是修改编译菜单加了东西,导致编译出来的镜像比超大,在raspberry,nanopi,cubieboard等开发板上可以改大。

respond-post-350

添加新评论

请填写称呼
请填写合法的电子邮箱地址
请填写合法的网站地址
请填写内容