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等开发板上可以改大。