在这个手机流量富余,WIFI无处不在的时代,TP-Link的TL-WR720N这种便携式路由的使用价值已极低,本着不浪费的原则,给它刷个OpenWRT做为家庭的旁路由可能也是一种出路,不过720N只有4M的运存,因此不得不拆腾一下。
第一步,在Openwrt官网上查询一下设备的支持版本 17.01.X是LEDE和OpenWRT合并前,LEDE的最后一个版本,可以通过官方或是国内镜像进行下载,目前比较多用的是openwrt镜像包括以下几个:
清华大学:mirrors.tuna.tsinghua.edu.cn/openwrt
中科大:mirrors.ustc.edu.cn/openwrt
腾讯:mirrors.cloud.tencent.com/openwrt
一般来说,直接下载.bin的固件可以进行刷机,但由于小内存的问题,直接装完含Luci的固件,设备将什么也做不了,几个分区都会变成只读状态,无法正常使用。WR720N在“3G”的模式下,可以使用外接USB设备,因此利用这个特点,可以外加一个U盘做为存储空间,解决小内存的问题。因此计划是自编译一个不含Luci的固件,把相关挂载的支持放进去,完成挂载后再安装Luci。
第二步,自编译固件。通过ImageBuilder的方法,可以大大减少自编译的工作量,通过ImageBuilder包,把内核和要用的ipk做成固件,也可以加入自定义的一些修改。详细的方法可以自行搜索。
编译环境我使用的是CentOS 7,VMware虚拟机。
# 解压
$ tar -xvJf lede-imagebuilder-17.01.5-ar71xx-generic.Linux-x86_64.tar.xz
# 进入项目目录
$ cd lede-imagebuilder-17.01.5-ar71xx-generic.Linux-x86_64
# 查看所有PROFILE参数,包括packages
$ make info
# 看profile
$ make info |grep 720
tl-wr720n-v3:
TP-LINK TL-WR720N v3
tl-wr720n-v4:
TP-LINK TL-WR720N v4
# 由于make image会下载需要的交叉编译环境,可以设置终端代理(根据自己的情况填入 host 和 port),下载无问题也可以不设
$ export http_proxy=http://[host]:[port]
$ export https_proxy=http://[host]:[port]
# 使用以下命令编译
$ make image PROFILE="tl-wr720n-v3" PACKAGES="kmod-usb-storage kmod-fs-ext4 e2fsprogs block-mount -firewall -ip6tables -iptables -kmod-ipt-nathelper -odhcp6c"
编译过程中可能会有报错,主要是因为依赖库没有安装,根据相关的报错补齐就可以顺利完成。
Build dependency: Please install the GNU C Compiler (gcc)
yum -y install gcc
Build dependency: Please reinstall the GNU C Compiler - it appears to be broken
Build dependency: Please install the GNU C++ Compiler (g++)
Build dependency: Please reinstall the GNU C++ Compiler - it appears to be broken
yum -y install gcc-c++
Build dependency: Please install ncurses. (Missing libncurses.so or ncurses.h)
yum -y install ncurses-devel
Build dependency: Please install a static zlib. (Missing libz.a or zlib.h)
yum -y install zlib-static
Build dependency: Please install the openssl library (with development headers)
yum -y install openssl-devel
Build dependency: Please install the Perl Thread::Queue module
yum -y install perl-Thread-Queue
Build dependency: Please install GNU 'patch'
yum -y install patch
Build dependency: Please install 'unzip'
yum -y install unzip
Build dependency: Please install 'bzip2'
yum -y install bzip2
Build dependency: Please install GNU 'wget'
yum -y install wget
Build dependency: Please install the Subversion client
yum -y install svn
找了一个其他大神总结的,供参考。
编译完成后在 ./bin/targets/ar71xx/generic/ 可以看到编译好的固件。
刷新固件:lede-17.01.5-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
升级已有的 OpenWRT固件:lede-17.01.5-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
刷新固件的,连接以后,登录路由器,在系统升级页面选择刷机包,选择不配置,确定升级,在升级过程不可断电。升级结束后,就刷好了。
已经升级过OpenWRT的,可以按以下步骤完成刷机:
- 通过
scp lede-17.01.5-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin root@192.168.2.1:/tmp
拷贝到路由器的/tmp
目录- 进入openwrt以后
mtd write /tmp/lede-17.01.5-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin firmware
刷入。- 完成以后重启。
reboot
第三步,挂载U盘。刷机完成后,将设备的开关调到“3G”档,并插入U盘。U盘需提前改为EXT4分区,在WIN机器上可以用DiskGenius软件来完成。
使用LAN口将WR720N接入网络,SSH登录192.168.1.1,用户名为:root
ls /dev/sda*
如果无显示,则U盘未识别到,请确认开关调到“3G”档且U盘是好的。如果只显示一个“/dev/sda”,说明U盘识别到了,但主分区没有识别到,请重新制作EXT4分区,正常应至少有一个“/dev/sda1”。
编辑 /etc/config/fstab 文件,删除 config global 标签项以外的所有内容。完后逐条执行以下命令,或编写在sh后执行。
cd
DEVICE="$(sed -n -e "/\s\/overlay\s.*$/s///p" /etc/mtab)"
uci -q delete fstab.rwm
uci set fstab.rwm="mount"
uci set fstab.rwm.device="${DEVICE}"
uci set fstab.rwm.target="/rwm"
uci commit fstab
DEVICE="/dev/sda1"
mkfs.ext4 ${DEVICE}
eval $(block info ${DEVICE} | grep -o -e "UUID=\S*")
uci -q delete fstab.overlay
uci set fstab.overlay="mount"
uci set fstab.overlay.uuid="${UUID}"
uci set fstab.overlay.target="/overlay"
uci commit fstab
mkdir -p /tmp/cproot
mount --bind /overlay /tmp/cproot
mount ${DEVICE} /mnt
tar -C /tmp/cproot -cvf - . | tar -C /mnt -xf -
umount /tmp/cproot /mnt
reboot
代码是能过uci手动进行挂载操作,完成后等待重启。
U盘已经完成挂载,可以进行Luci的安装和其他软件包的安装了。
最后一步,安装Luci。安装前,更换国内源,编辑 /etc/opkg/distfeeds.conf 用国内源替换原地址。我这里用的是中科大的源。
src/gz reboot_core http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/targets/ar71xx/generic/packages
src/gz reboot_base http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/packages/mips_24kc/base
src/gz reboot_luci http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/packages/mips_24kc/luci
src/gz reboot_packages http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/packages/mips_24kc/packages
src/gz reboot_routing http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/packages/mips_24kc/routing
src/gz reboot_telephony http://mirrors.ustc.edu.cn/openwrt/releases/17.01.5/packages/mips_24kc/telephony
opkg update
opkg install luci
至此,整个刷机工作完成,可以通过浏览器192.168.1.1通过网页进行路由器的设置了。
PS:再记录一些其他的技巧。因为做为一个旁路由,固件刷入后需要更改默认的IP地址才能接入主路由,所以还涉及到一些通过uci命令去改变设置的需求。
1、显示网络设置
uci show network
这里显示的是OpenWRT下的网络接口设置,可以结合 ifconfig 命令的显示一起看
2、修改IP、网关、DNS
uci set network.lan.ipaddr='192.168.1.2'
uci set network.lan.gateway='192.168.1.1'
uci set network.lan.dns='8.8.8.8'
uci commit network
完成修改后,可以通过以下命令进行生效
/etc/init.d/network reload
/etc/init.d/network restart
ubus call network reload
最后,这篇东西也是我从很多大神的其他文章中学习来的,我只是搬运并综合了,结合我自己的操作实进行了调整。感谢以下作者的贡献: