前言


为了能够从让手里的ios设备不越狱也能体验goagent,为了脱机下载,为了一号多拨,为了…,打算给手上路由器安装OpenWrt。

不喜欢越狱,又想看墙外的世界,怎么办,把goagent装在电脑上做代理,代价也太大了,能直接让路由翻墙最好了。临睡前利用空闲的网络资源,下个电影,开着电脑听着风扇嗡嗡转,真难受。路由器其实也算是一台轻量级的小电脑了,基本满足安装个轻量级linux的要求。

但问题还是有的,手头的TL-WR1043ND只有8M ROM,python的支持环境本身就很大,搞不定goagent就缺少了一大乐趣。好在这路由器有一个usb口,上比较火的恩山,anywlan,openwrt.org.cn上看了一圈,发现可以设置从usb启动,无限扩展容量。这样看来想给路由安多少应用都没问题了。

这个日志目的是记录折腾的过程。以后再折腾有个查阅的地方。

安装OpenWrt


简单google了下,OpenWrt分为几个版本,包括backfire,attitude_adjustment,dreambox等等。其中前两者是属于官方作品,在openwrt.org官网上有资源可以下载。而dreambox的官方解释是一个中国玩家们开发的版本。这个在openwrt.org.cn上可以下载到。

选新不选旧,官网主页上attitude_adjustment 12.09 final是最新发布的版本。下载链接为http://downloads.openwrt.org/attitude_adjustment/12.09/。按照路由器的芯片种类分类,我的应该选ar71xx。再选generic,能看到一个路由器列表,名单很长,ctrl+F输入wr1043nd找到四个版本。

按照文件系统squashfs和jffs2及升级方式factory和sysupgrade划分为4个版本。squanshfs和jffs2的选择因人而异了,貌似跟应用层关系不大,随便选了个squanshfs。升级方式由于是从TP-LINK的官方固件升级到OpenWrt,需要选择factory,而从OpenWrt其他版本更新,则需要选择sysupgrade。

升级过程很简单,直接进到TP-LINK官方固件的管理后台,选择固件更新,再选取OpenWrt的固件就行了。

由于OpenWrt默认关闭所有功能,所以需要动手拿根网线去把电脑和路由器的lan口连起来。默认web管理界面的地址为192.168.1.1,用户名为root,密码为空。

至此OpenWrt算是安装完成了。

应用安装方式


应用的安装途径有两种,一种是在luci(OpenWrt的web管理界面叫luci)中选择安装,一种是通过SSH2建立连接后用opkg命令安装。实际上luci的安装方式本质也是调用opkg而已。

上图是用luci安装中文语言包,luci默认为英文,安装luci-i18n-chinese这个包后可以将web界面转换成中文。(图中已经转换为中文)

上图是通过SecureCRT建立SSH2连接远程登录到路由器进行安装。首先用”opkg update”获取软件源的应用列表。然后通过”opkg install”下载并安装应用。其中kmod-usb-storge、kmod-fs-ext4、e2fsprogs是下小节添加U盘支持需要用到的包。

添加USB存储装置的支持及格式化U盘为ext4格式


attitude_adjustment 12.09 final本身已经默认安装了各种支持usb接口的包,包括kmod-usb-core,kmod-usb-ohci等等,但是要具体支持usb存储设备,还需要安装kmod-usb-storge。

另外ntfs及fat在linux上的效率较低,我们选择ext4取而代之。添加对ext4的支持需要安装kmod-fs-ext4。添加XXX格式的支持就用kmod-fs-XXX包。

接下来要做的就是将我们的U盘格式化为ext4格式,可以随便找一台linux系统的电脑来格,也可以找个VM虚拟机来格。我笔记本电脑的系统是WIN7 64,找一款能在WIN7 64下格式化U盘为EXT4的软件也不难,PQ之类就可以了。但个人建议还是在路由上安装e2fsprogs这个包,可以用来格式化U盘为ext2、ext3、etx4格式。毕竟以后要想格式化U盘上哪个分区都得把U盘从路由上拔下来,这很麻烦。

“opkg install kmod-usb-storge kmod-fs-ext4 e2fsprogs”

安装完后输入”ls /dev”可以看见多了一个sda1,sda1表示U盘上的第一个分区。指令”mkfs.ext4 /dev/sda1″可以格式化U盘第一个分区为ext4格式。

至此,我们已经为OpenWrt成功添加了USB存储设备的支持,并将文件系统的格式设定为ext4。我们可以像普通的linux那样利用mount指令挂载分区到指定目录了。

复制文件系统到U盘及设置U盘启动


# mount /dev/sda1 /mnt
# mkdir /tmp/root
# mount -o bind / /tmp/root
# cp /tmp/root/* /mnt -a
# umount /tmp/root

以上命令主要实现将目录”/”中的所有内容完整复制到U盘当中去。

为了实现开机从U盘启动,我们要安装block-mount包。安装完成后,目录”/etc/config/”下会多出一个”fstab”文件,我们可以通过配置它来实现从U盘启动。

修改”option enabled”为”1″,并添加”option is_rootfs 1″。

到这里,我们已经成功完成了从U盘启动的一切工序。但我们如何知道自己是从U盘启动的呢?有两种方式,一种是在启动的banner中添加个标记,或者在luci的软件安装页面中查看空闲空间是否变大。

复制到U盘中的系统的banner的地址为”/mnt/etc/banner”,随便添加一句”Boot from USB device”,如果以后连接时能看到这句,就证明是系统是从USB启动的。

重启路由器,重新连接。可见下图。

在luci的软件安装界面里,可以看到空闲空间变为14.53G(U盘容量16G)。这也说明U盘启动成功了。这样下来,我们拥有了更多空间,可以安装任何想要的应用而不必为容量犯愁了。

参考


利用block-extroot,让你的openwrt运行在USB设备上。

TPLINK原廠韌體換成/換回OpenWRT的韌體 (TL-WR1043ND)