使用SDK和imagebuilder编译自己使用的openwrt固件
系统
本次使用的是ubuntu18.04LTS mini,其他版本可能编译出来的固件会不停的重启
依赖安装
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc zip python下载对应的sdk和imagebuilder
下载链接见官网
编译自己需要的包
- adbyby
- luci-app-adbyby-plus
- frpc
- luci-app-frpc
- luci-app-ttyd
- vlmcsd
- luci-app-vlmcsd
- luci-app-vsftpd
- vsftpd-alt
编译步骤
解压下载的SDK,并切换到sdk的package目录,然后下载源码
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/luci-app-adbyby-plus
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/adbyby
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/luci-app-frpc
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/frpc
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/luci-app-ttyd
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/vsftpd-alt
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/luci-app-vsftpd
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/autosamba
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/luci-app-vlmcsd
svn co https://github.com/coolsnowwolf/lede/trunk/package/lean/vlmcsd更新上面package里需要的依赖feeds
./scripts/feeds update -a
./scripts/feeds install luci uci libubox lua libev生成需要编译包的shell script,并修改删除不要的一些行,然后运行这个脚本
ll package/ |awk '{print "make package/"$9"compile V=99"}' >willCompile.sh
chmod +x a.sh
bash ./willCompile.sh将编译好的ipk,复制到imagebuilder解压后生成的目录下的packages目录里
find . -name *.ipk -exec mv {} imagebuilder/packages/ \;切换到imagebuilder目录,修改repositories.conf 文件,添加翻墙需要的包的仓库
src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/base/mips_24kc
src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/luci注意路由器的架构,修改对应的mips_24kc
[root@NETGEAR:/root]# opkg print-architecture | awk '{print $2}' # 查看路由器架构
all
noarch
mips_24kchttp://www.zhangjun.sh.cn/index.php/other/openwrt-ss-chinadns.html
NETGEAR wndr4300v1 还要修改 target/linux/ar71xx/image/legacy.mk 文件,使用完整的128MB空间(已测试于OpenWrt 18.06.5)
sed -i s/'23552k(ubi),25600k@0x6c0000(firmware)'/'120832k(ubi),122880k@0x6c0000(firmware)'/ target/linux/ar71xx/image/legacy.mkhttps://www.right.com.cn/forum/thread-521490-1-1.html
https://forum.openwrt.org/t/netgear-wndr4300-extra-flash-space/38183
添加必备的一些设置,比如自动挂载U盘脚本,设置lan口ip、科学上网设置等,这些可以在imagebuilder目录下新建 files/etc/uci-defaults 目录,然后在其中添加对应功能的uci命令的shell脚本,比如:
#!/bin/sh
uci add_list dhcp.@dnsmasq[0].confdir=/etc/dnsmasq.d
uci add_list dhcp.@dnsmasq[0].cachesize=10000
uci commit dhcp
最后,开始编译固件
NETGEAR wndr4300v1
make image PROFILE=WNDR4300V1 PACKAGES="-dnsmasq dnsmasq-full -wpad-mini wpad curl coreutils-base64 \
wget ca-certificates ca-bundle iptables-mod-tproxy ChinaDNS luci-app-chinadns shadowsocks-libev luci-app-shadowsocks simple-obfs \
luci-app-adbyby-plus luci-app-frpc luci-app-ttyd luci-app-vsftpd luci-i18n-adbyby-plus-zh-cn luci-i18n-ttyd-zh-cn luci-i18n-vsftpd-zh-cn \
luci luci-base luci-i18n-base-zh-cn \
luci-i18n-firewall-zh-cn block-mount \
kmod-fs-cifs kmod-fs-ext4 kmod-fs-msdos kmod-fs-vfat ntfs-3g \
kmod-nls-base kmod-nls-cp437 kmod-nls-cp936 kmod-nls-iso8859-1 kmod-nls-utf8 \
samba36-hotplug luci-app-samba luci-i18n-samba-zh-cn samba36-server \
kmod-usb-core kmod-usb-ohci kmod-usb-storage kmod-usb-storage-extras kmod-usb-uhci kmod-usb2 kmod-usbmon usbutils \
hd-idle luci-app-hd-idle luci-i18n-hd-idle-zh-cn \
luci-app-wol luci-i18n-wol-zh-cn \
minidlna luci-app-minidlna luci-i18n-minidlna-zh-cn \
wifischedule luci-app-wifischedule luci-i18n-wifischedule-zh-cn \
fdisk lrzsz openssh-sftp-server \
vlmcsd luci-app-vlmcsd luci-i18n-vlmcsd-zh-cn" FILES=files/TP-LINK WR720N
make image PROFILE=tl-wr720n-v3 PACKAGES="-dnsmasq dnsmasq-full -wpad-mini wpad curl coreutils-base64 \
wget ca-certificates ca-bundle iptables-mod-tproxy ChinaDNS luci-app-chinadns shadowsocks-libev luci-app-shadowsocks simple-obfs \
luci-app-adbyby-plus luci-app-frpc luci-app-ttyd luci-app-vsftpd luci-i18n-adbyby-plus-zh-cn luci-i18n-ttyd-zh-cn luci-i18n-vsftpd-zh-cn \
luci luci-base luci-i18n-base-zh-cn \
luci-i18n-firewall-zh-cn block-mount \
kmod-fs-cifs kmod-fs-ext4 kmod-fs-msdos kmod-fs-vfat ntfs-3g \
kmod-nls-base kmod-nls-cp437 kmod-nls-cp936 kmod-nls-iso8859-1 kmod-nls-utf8 \
autosamba luci-app-samba luci-i18n-samba-zh-cn samba36-server \
kmod-usb-core kmod-usb-ohci kmod-usb-storage kmod-usb-storage-extras kmod-usb-uhci kmod-usb2 kmod-usbmon usbutils \
hd-idle luci-app-hd-idle luci-i18n-hd-idle-zh-cn \
luci-app-wol luci-i18n-wol-zh-cn \
minidlna luci-app-minidlna luci-i18n-minidlna-zh-cn \
wifischedule luci-app-wifischedule luci-i18n-wifischedule-zh-cn \
fdisk lrzsz openssh-sftp-server \
vlmcsd luci-app-vlmcsd luci-i18n-vlmcsd-zh-cn" FILES=files/最后,4300刷机步骤
文件名:openwrt-15.05-ar71xx-nand-wndr4300-ubi-factory.img
推荐直接 tftp 刷机:
1.电脑设置静态 IP:
IP:192.168.1.2
子网掩码:255.255.255.0
默认网关:192.168.1.1
2.将电脑连接至路由器任一 LAN 口
3.在 Windows 控制面板 -> 程序 -> 启用或关闭Windows功能 中,开启 TFTP 客户端
4.关闭路由器电源,使用牙签(或其他类似物)捅住路由器背面的 reset 按钮不放,打开路由器电源,待电源指示灯呈绿色并有规律闪动即可松开 reset 按钮
5.传送固件,打开命令行窗口,使用
tftp -i 192.168.1.1 put <路径>/openwrt-15.05-ar71xx-nand-wndr4300-ubi-factory.img
传送固件至路由器,出现如下提示则固件传送成功:
传输成功: 3 秒 12451969 字节,4150656 字节/秒
6.静待路由器重启并完成固件刷新,切不可着急强制切断电源
7.待确认路由器重启成功后(比如可以登录http://192.168.1.1),直接关闭路由器电源30秒以上,然后再打开电源,否则可能出现 5G WiFi 不可用的问题。
科学上网设置
http://www.zhangjun.sh.cn/index.php/other/openwrt-ss-chinadns.html
所有设置好,并测试完毕,可以备份设置,再次编译并刷机,这样,恢复出厂设置也不要设置很多地方。
其他事项
查看已安装的包
echo $(opkg list-installed | sed -e "s/\s.*$//")常用设置
uci del dhcp.lan.dhcp_option
uci add_list dhcp.lan.dhcp_option='6,223.5.5.5,223.6.6.6'
# /etc/config/network
uci del network.lan.dns
uci add_list network.lan.dns='223.5.5.5'
uci add_list network.lan.dns='223.6.6.6'编译的默认设置
xxx@debian:~/openwrt/openwrt-imagebuilder-22.03.5-ramips-mt7620.Linux-x86_64$ cat files/etc/uci-defaults/abc.sh
#!/bin/sh
uci add_list dhcp.@dnsmasq[0].confdir=/etc/dnsmasq.d
uci add_list dhcp.@dnsmasq[0].cachesize=10000
uci commit dhcp
uci set luci.main.lang=zh_cn
uci commit luci
uci set system.@system[0].hostname='Lenovo'
uci set system.@system[0].timezone=CST-8
uci set system.@system[0].zonename=Asia/Shanghai
uci commit system
uci del dhcp.lan.dhcp_option
uci add_list dhcp.lan.dhcp_option='6,223.5.5.5,223.6.6.6'
# /etc/config/network
uci del network.lan.dns
uci add_list network.lan.dns='223.5.5.5'
uci add_list network.lan.dns='223.6.6.6'
uci set network.lan.ipaddr='192.168.99.1'
uci commit
sed -i '/option disabled/d' /etc/config/wireless
sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh
sed -i 's/OpenWrt/Lenovo/' /lib/wifi/mac80211.sh
cat >> /etc/profile <<EOF
export PS1='[\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h\[\033\[0m\]:\[\033[32;1m\]$PWD\[\033[0m\]]\$ '
alias df='df -Th'
alias free='free -m'
alias la='ll -A'
alias ll='ls -alh --color=auto'
alias ls='ls --color=auto'
[ -x /bin/more ] || alias more=less
[ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
alias ll='ls -alF --color=auto'
EOF
exit 0无线密码
# /etc/config/wireless
uci set wireless.radio0.cell_density='0'
uci set wireless.default_radio0.ssid='Lenovo-5G'
uci set wireless.default_radio0.encryption='psk2'
uci set wireless.default_radio0.key='---------'
uci set wireless.radio1.cell_density='0'
uci set wireless.default_radio1.ssid='Lenovo'
uci set wireless.default_radio1.encryption='psk2'
uci set wireless.default_radio1.key='----------'


