1.购买: 从天猫花99买回一台TPLINK WR720N;
2.刷机:刷OpenWrt选这个,为了可以通过SSH工具登录:
https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-factory.bin
https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin
或者点击下面下载:
openwrt-ar71xx-generic-tl-wr720n-v4-squashfs
Openwrt针对每种路由器提供两个固件文件,factory.bin用于路由器原厂固件初次改刷为Openwrt使用,sysupgrade.bin用于从旧版本Openwrt升级到新版使用。
mtd write /tmp/openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin firmware
3.配置网络,可以访问外网
OpenWRT烧写完毕了,但没有熟悉的管理界面给你操作。如果你熟悉命令,实际上此时路由器已经可以工作了。
比如我只用网线,网络拓扑如下,LAN接我开发用的电脑,WAN接家庭路由器:
root@OpenWrt:~# ifconfig
br-lan Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:93
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3e46:d8ff:feb3:8b93/64 Scope:Link
inet6 addr: fd15:bcc1:2490::1/60 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1023 errors:0 dropped:0 overruns:0 frame:0
TX packets:657 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:163938 (160.0 KiB) TX bytes:132483 (129.3 KiB)eth0 Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:92
inet addr:192.168.48.57 Bcast:192.168.48.255 Mask:255.255.255.0
inet6 addr: fe80::3e46:d8ff:feb3:8b92/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:585 errors:0 dropped:3 overruns:0 frame:0
TX packets:376 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:116871 (114.1 KiB) TX bytes:82809 (80.8 KiB)
Interrupt:4eth1 Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:93
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1023 errors:0 dropped:0 overruns:0 frame:0
TX packets:632 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:178260 (174.0 KiB) TX bytes:129873 (126.8 KiB)
Interrupt:5lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1290 errors:0 dropped:0 overruns:0 frame:0
TX packets:1290 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:88357 (86.2 KiB) TX bytes:88357 (86.2 KiB)ping百度,网络是通的:root@OpenWrt:~# ping www.baidu.com
PING www.baidu.com (14.215.177.37): 56 data bytes
64 bytes from 14.215.177.37: seq=0 ttl=55 time=7.268 ms
64 bytes from 14.215.177.37: seq=1 ttl=55 time=15.530 ms
64 bytes from 14.215.177.37: seq=2 ttl=55 time=7.785 ms
64 bytes from 14.215.177.37: seq=3 ttl=55 time=7.943 ms
64 bytes from 14.215.177.37: seq=4 ttl=55 time=8.673 ms
64 bytes from 14.215.177.37: seq=5 ttl=55 time=7.617 ms
64 bytes from 14.215.177.37: seq=6 ttl=55 time=6.980 ms
64 bytes from 14.215.177.37: seq=8 ttl=55 time=7.480 ms
64 bytes from 14.215.177.37: seq=10 ttl=55 time=7.478 ms
64 bytes from 14.215.177.37: seq=11 ttl=55 time=7.426 ms未修改,默认OpenWRT网络配置:vi /etc/config/networkconfig interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'config globals 'globals'
option ula_prefix 'fd15:bcc1:2490::/48'config interface 'lan'
option type 'bridge'
option ifname 'eth1'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'config interface 'wan6'
option ifname 'eth0'
option proto 'dhcpv6'为了让手机用能通过其上网,配置无线网络部分://打开无线
uci set wireless.@wifi-device[0].disabled=0//设置功率为17dbm 太高会烧无线模块
uci set wireless.@wifi-device[0].txpower=17//设置无线信道为8
uci set wireless.@wifi-device[0].channel=8//开启40M频宽
uci set wireless.@wifi-device[0].htmode=HT40-
uci set wireless.@wifi-device[0].noscan=1//设置无线模式为ap
uci set wireless.@wifi-iface[0].mode=ap//设置无线SSID
uci set wireless.@wifi-iface[0].ssid=xxxxxx//无线链接到lan上,不加这行貌似也没问题
uci set wireless.@wifi-iface[0].network=lan//设置加密为WPA2-PSK
uci set wireless.@wifi-iface[0].encryption=psk2//设置无线密码
uci set wireless.@wifi-iface[0].key=xxxxx//应用
uci commit//重新启动网络
/etc/init.d/network restartWLAN0为WIFI AP的interface:
root@OpenWrt:/# ifconfig
br-lan Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:93
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3e46:d8ff:feb3:8b93/64 Scope:Link
inet6 addr: fd15:bcc1:2490::1/60 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9578 errors:0 dropped:0 overruns:0 frame:0
TX packets:11658 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:920341 (898.7 KiB) TX bytes:11597606 (11.0 MiB)eth0 Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:92
inet addr:192.168.48.57 Bcast:192.168.48.255 Mask:255.255.255.0
inet6 addr: fe80::3e46:d8ff:feb3:8b92/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:129571 errors:0 dropped:1531 overruns:0 frame:0
TX packets:45615 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:53443565 (50.9 MiB) TX bytes:6102567 (5.8 MiB)
Interrupt:4eth1 Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:93
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39880 errors:0 dropped:0 overruns:0 frame:0
TX packets:49504 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5628871 (5.3 MiB) TX bytes:34677757 (33.0 MiB)
Interrupt:5lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1586 errors:0 dropped:0 overruns:0 frame:0
TX packets:1586 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:113722 (111.0 KiB) TX bytes:113722 (111.0 KiB)wlan0 Link encap:Ethernet HWaddr 3C:46:D8:B3:8B:91
inet6 addr: fe80::3e46:d8ff:feb3:8b91/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9080 errors:0 dropped:0 overruns:0 frame:0
TX packets:11117 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:911226 (889.8 KiB) TX bytes:11742141 (11.1 MiB)root@OpenWrt:/# cat /etc/config/networkconfig interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'config globals 'globals'
option ula_prefix 'fd15:bcc1:2490::/48'config interface 'lan'
option type 'bridge'
option ifname 'eth1'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'config interface 'wan6'
option ifname 'eth0'
option proto 'dhcpv6'查看WiFi的配置:
root@OpenWrt:/# cat /etc/config/wirelessconfig wifi-device 'radio0'
option type 'mac80211'
option hwmode '11g'
option path 'platform/ar933x_wmac'
option disabled '0'
option txpower '17'
option channel '8'
option htmode 'HT40-'
option noscan '1'config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'DennyAP'
option encryption 'psk2'
option key '12345678'编辑/etc/sysupgrade.conf文件,添加要保护文件目录,避免固件升级覆盖!root@OpenWrt:~# vi /etc/sysupgrade.conf
修改后如下图## This file contains files and directories that should
## be preserved during an upgrade.
# /etc/example.conf
# /etc/openvpn/
/etc/config/到此为止,如果你不想继续折腾,此时已经安装完原版的OpenWRT固件并且可以正常使用了。如果想继续折腾,继续往下走,先把uboot刷成不死uboot,以免硬件变砖!4.什么是OpenWRT不死 uboot?如何烧写不死uboot
意思是 Flash 引导启动的uboot 程序是不可修改的所以不死 , openwrt 系统的分区可以随便你怎么折腾 。
可以把 "不死uBoot " 理解成 电脑的 BIOS , 只有通过特定途径才可以修改的uboot 的程序,bios 就是uboot , openwrt系统的分区就是硬盘.网上传的不死uboot是在https://github.com/pepe2k/u-boot_mod上面做些汉化和修改。
根据GPL,修改者应该提供源码。但作者拒绝提供。
以下是他原话:
hackpascal:我不会公布源代码的,我自己开发的bootloader很快就会完成了,到时候就会停止更新uboot了。地址:http://www.right.com.cn/forum/thread-136444-1-1.html
1.打开https://github.com/pepe2k/u-boot_mod/releases/tag/2014-11-19,下载U-Boot_1.1.4_modification_for_routers_2014-11-19.tar.gz,解压出来是U-Boot_1.1.4_modification_for_routers_2014-11-19.tar.gz,继续解压,然后把U-Boot_1.1.4_modification_for_routers_2014-11-19\OpenWrt Barrier Breaker 14.07 images for easy U-Boot upgrade\TP-Link TL-WR720N v3 CH下面的两个bin文件,U-Boot_1.1.4_modification_for_routers_2014-11-19\U-Boot images\TP-Link TL-WR720N v3 CH\uboot_for_tp-link_tl-wr720n_v3_CH.bin用WinSCP上传到/tmp目录下,
2.在putty下分别执行:
mtd write /tmp/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin firmware
mtd write /tmp/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin firmware
3.reboot
4.重启后putty和winscp都无法登陆,这是由于openWRT默认开启telnet但是没开启ssh,当配置了用户名和密码后就默认开启ssh关闭了telnet。
先设置密码:=== IMPORTANT ============================
Use 'passwd' to set your login password
this will disable telnet and enable SSH
------------------------------------------BusyBox v1.22.1 (2014-11-19 15:40:56 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands._______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
BARRIER BREAKER (Barrier Breaker, r43286)
-----------------------------------------------------
* 1/2 oz Galliano Pour all ingredients into
* 4 oz cold Coffee an irish coffee mug filled
* 1 1/2 oz Dark Rum with crushed ice. Stir.
* 2 tsp. Creme de Cacao
-----------------------------------------------------
root@OpenWrt:/# passwd
Changing password for root
New password:
Bad password: too weak
Retype password:
Password for root changed by root然后执行
u-boot-upgrade //解锁uboot分区(即烧写不死uboot)
root@OpenWrt:/# u-boot-upgrade=================================================================
DISCLAIMER: you are using this script at your own risk!The author of U-Boot modification and this script takes
no responsibility for any of the results of using them.Updating U-Boot is a very dangerous operation
and may damage your device! You have been warned!
=================================================================
Are you sure you want to continue (type 'yes' or 'no')? yes
=================================================================[ ok ] Found U-Boot image file: uboot_for_tp-link_tl-wr720n_v3_CH.bin
Do you want to use this file (type 'yes' or 'no')? yes
[ ok ] MD5 checksum of new U-Boot image file is correct
[ ok ] Backup of /dev/mtd0 successfully created
Do you want to store backup in /etc/u-boot_mod/backup/ (recommended, type
'yes' or 'no')? yes
[ ok ] Backup of /dev/mtd0 successfully copied to /etc/u-boot_mod/backup/
[ ok ] New U-Boot image successfully combined with backup file
[info] New U-Boot image is ready to be written into FLASH
Are you sure you want to continue (type 'yes' or 'no')? yes
[ ok ] New U-Boot image successfully witten info FLASH
[ ok ] MD5 checksum of mtd0 and new U-Boot image are equal
[info] Done!
5.如何进入不死uboot的web界面升级:
PC用网线连路由器LAN,设置PC IP为192.168.1.2,子网掩码为255.255.255.0 ,默认网关和DNS服务器不用设置; 路由器断电,按住reset 上电(不松开reset),路由器灯闪三下后松开手; 浏览器访问http://192.168.1.1
5.挂载优盘
这里有两个地雷,一定要注意,我在这里浪费太多时间!
一个是WR720N挂载优盘前,一定要把拨动开关从AP档拨动到3G档;
一个是网上查询的资料很老了,会误导人,比如:
opkg update
opkg install kmod-usb-storage kmod-usb-ohci kmod-usb2 kmod-usb-uhci
opkg update
opkg install block-mount block-hotplug block-extroot
opkg install kmod-fs-ext3
opkg install e2fsprogs //分区工具
mkfs.ext3 /dev/sda1 //格式化说明:
kmod-usb-ohci对应usb1.1
kmod-usb2对应USB2.0
kmod-usb-uhci对应部分intel和VIA的usb控制器结果一直提示:
Unknown package 'block-hotplug'.
Collected errors:
* opkg_install_cmd: Cannot install package block-hotplug.反复重新烧写固件也不行!
最后从官网WiKi查询到:https://wiki.openwrt.org/doc/howto/usb.storagethe three opkg packages block-mount, block-extroot and block-hotplug have been merged into a single package block-mount.真坑爹!
实际最新版本的OpenWRT只要安装下面三个即可识别优盘:
opkg update
opkg install kmod-usb-storage block-mount kmod-fs-ext4如果空间不够,执行如下操作重新安装清除空间:
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin
sysupgrade -v openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin优盘先格式化成ext4格式,否则mount不上来,推荐下载绿色版的MiniTool Partition Wizard在windows系统上直接格式化。
MiniToolPartitionWizardHome_xdowns
sda1/sda5/sda6/sda7就是mount上来的四个优盘分区
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 13.7M 72.0K 13.6M 1% /tmp
/dev/mtdblock3 704.0K 592.0K 112.0K 84% /overlay
overlayfs:/overlay 704.0K 592.0K 112.0K 84% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 6.3M 2.0K 5.8M 0% /mnt/usb1
/dev/sda5 226.9M 2.0K 210.7M 0% /mnt/usb5
/dev/sda6 226.9M 2.0K 210.7M 0% /mnt/usb6
/dev/sda7 475.8M 2.0K 446.3M 0% /mnt/usb7接下来讲讲如何实现在优盘上启动,用来跳出4M SNOR Flash的限制
6.添加U盘启动
这里又踩到了地雷!按照下面红色字体的做法(参考网上的方法),根本行不通,最后还是参考官方WiKi搞定!
官方WiKi的方法https://wiki.openwrt.org/doc/howto/extroot
安装依赖库
opkg update ; opkg install kmod-usb-core block-mount kmod-fs-ext4 kmod-usb-storage-extras复制系统文件到优盘分区下:
mount /dev/sda5 /mnt/usb5 ; tar -C /overlay -cvf - . | tar -C /mnt/usb5 -xf - ; umount /mnt/usb5
解释:
-C /overlay:跳转到overlay目录下;
tar -cvf - . : 将当前目录打包到stdout(-)
| :管道,即前一命令的输出为后一命令输入
-C /mnt/usb5:跳转目录
tar -xf -: 从stdin(-)解包创建fstab模板:block detect > /etc/config/fstab ; vi /etc/config/fstab
创建swap分区:
mkswap /dev/sda1
swapon /dev/sda1
修改 /etc/config/fstab,主要修改:enabled '0' → enabled '1' /option targe
例如我的修改后内容如下:root@OpenWrt:~# cat /etc/config/fstab
config 'global'
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0'config 'mount'
option target '/overlay'
option uuid '7fdff333-c5a7-d101-20de-f133c5a7d101'
option fstype 'ext4'
option enabled '1'config 'swap'
option device '/dev/sda1'
option enabled '1'config 'mount'
option target '/mnt/usb6'
option uuid 'f8efdb40-c5a7-d101-b005-d840c5a7d101'
option enabled '1'config 'mount'
option target '/mnt/usb7'
option uuid 'fc6d464a-c5a7-d101-f04c-424ac5a7d101'
option enabled '1'重启后观察系统分区大小是否改变:
root@OpenWrt:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 2048 2048 0 100% /rom
tmpfs 14028 644 13384 5% /tmp
/dev/sda5 232311 1006 214761 0% /overlay
overlayfs:/overlay 232311 1006 214761 0% /
tmpfs 512 0 512 0% /dev
/dev/sda6 232311 2 215765 0% /mnt/usb6
/dev/sda7 487237 2 457035 0% /mnt/usb7
root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/sda5 on /overlay type ext4 (rw,relatime,data=ordered)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
tmpfs on /dev type tmpfs (rw,nosuid,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600)
/dev/sda6 on /mnt/usb6 type ext4 (rw,relatime,data=ordered)
/dev/sda7 on /mnt/usb7 type ext4 (rw,relatime,data=ordered)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)