SyntaxHighlighter

2013年1月13日星期日

OpenVPN on OpenWRT

需要注意的是在使用trunk 自己编译OpenWRT时,必须自己编译kmod-tun,不能使用repo的二进制文件 可能需要自己编译OpenVPN.

GoAgent on OpenWRT 解决崩溃问题

Follow官方WiKi进行安装

后发现打开ssl网站经常导致goagent崩溃,参考官方Issue
里面也提到了原因是libopenssl线程安全问题

参照
制作一个patch并重新编译替换libopenssl

[jejer@arch openwrt]$ cat  openssl.patch       
--- package/libs/openssl/Makefile       2013-01-13 08:31:13.693007113 +0800
+++ package/libs/openssl/Makefile.720n  2013-01-12 22:29:33.576217602 +0800
@@ -46,7 +46,7 @@
   SECTION:=libs
   SUBMENU:=SSL
   CATEGORY:=Libraries
-  DEPENDS:=+zlib
+  DEPENDS:=+zlib libpthread
   TITLE+= (libraries)
   MENU:=1
 endef
@@ -107,12 +107,13 @@
                        $(TARGET_CPPFLAGS) \
                        $(TARGET_LDFLAGS) -ldl \
                        -DOPENSSL_SMALL_FOOTPRINT \
+                       -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE \
                        $(OPENSSL_NO_CIPHERS) \
                        $(OPENSSL_OPTIONS) \
        )
 endef
-TARGET_CFLAGS += $(FPIC)
+TARGET_CFLAGS += $(FPIC) -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE
 define Build/Compile
        # XXX: OpenSSL "make depend" will look for installed headers before its own,
[jejer@arch openwrt]$ patch -p0 < openssl.patch 

make编译之后直接安装新的bin/ar71xx/packages/libopenssl_1.0.1c-1_ar71xx.ipk即可

2013年1月11日星期五

OpenWRT for WR720N

OpenWRT already officially support WR720N!
Ref:
http://wiki.openwrt.org/toh/tp-link/tl-wr720n

准备工作


Linux磁盘空间大概要准备10G.

先从svn checkout出OpenWRT
svn checkout svn://svn.openwrt.org/openwrt/trunk openwrt

进去看一下

[jejer@arch ~]$ cd openwrt/
[jejer@arch openwrt]$ ls
BSDmakefile LICENSE README feeds.conf.default package scripts toolchain
Config.in Makefile docs include rules.mk target tools

好了.

修改源文件


1. 720比703多一个网口,修改target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr703n.c

[jejer@arch openwrt]$ cat mach-tl-wr703n.c.patch
--- target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr703n.c  2013-01-11 09:38:21.023697097 +0800
+++ target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr703n.c.720n     2013-01-11 09:41:35.537043980 +0800
@@ -77,10 +77,12 @@
                         "USB power");
        ath79_register_usb();
-       ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
+       ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
+       ath79_init_mac(ath79_eth1_data.mac_addr, mac, 2);
        ath79_register_mdio(0, 0x0);
        ath79_register_eth(0);
+       ath79_register_eth(1);
        ath79_register_wmac(ee, mac);
 }
[jejer@arch openwrt]$ patch -p0 < mach-tl-wr703n.c.patch
然后手动附加上一个/etc/config/network配置文件
[jejer@arch openwrt]$ mkdir -p files/etc/config/
[jejer@arch openwrt]$ vim files/etc/config/network
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'
config interface 'wan'
        option ifname 'eth0'
        option proto 'dhcp'
config interface 'lan'
        option ifname 'eth1'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
2. 让OpenWRT的WEB界面通刷所有703N 720N固件
    703n的固件标识是:07030101,720n的是:07200103
    target/linux/ar71xx/base-files/lib/upgrade/platform.sh
[jejer@arch openwrt]$ cat platform.sh.patch
--- target/linux/ar71xx/base-files/lib/upgrade/platform.sh      2013-01-11 09:16:58.527929980 +0800
+++ target/linux/ar71xx/base-files/lib/upgrade/platform.sh.720n 2013-01-11 10:14:35.546380864 +0800
@@ -178,7 +178,13 @@
                local imageid
                hwid=$(tplink_get_hwid)
+               [ "$hwid" = "07200103" ] && {
+                       hwid="07030101"
+               }
                imageid=$(tplink_get_image_hwid "$1")
+               [ "$imageid" = "07200103" ] && {
+                       imageid="07030101"
+               }
                [ "$hwid" != "$imageid" ] && {
                        echo "Invalid image, hardware ID mismatch, hw:$hwid image:$imageid."
[jejer@arch openwrt]$ patch -p0 < platform.sh.patch

3. 使路由的Router Model显示为    TP-LINK TL-WR720N V3
    target/linux/ar71xx/base-files/lib/ar71xx.sh
[jejer@arch openwrt]$ cat ar71xx.sh.patch
--- target/linux/ar71xx/base-files/lib/ar71xx.sh        2013-01-11 09:16:58.527929980 +0800
+++ target/linux/ar71xx/base-files/lib/ar71xx.sh.720n   2013-01-11 10:19:06.548365673 +0800
@@ -475,7 +475,7 @@
        [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
        echo "$AR71XX_BOARD_NAME" > /tmp/sysinfo/board_name
-       echo "$AR71XX_MODEL" > /tmp/sysinfo/model
+       echo "TP-LINK TL-WR720N V3" > /tmp/sysinfo/model
 }
 ar71xx_board_name() {
[jejer@arch openwrt]$ patch -p0 < ar71xx.sh.patch

4. 无线开启
    package/mac80211/files/lib/wifi/mac80211.sh
    package/madwifi/files/lib/wifi/madwifi.sh?
[jejer@arch openwrt]$ cat mac80211.sh.patch
--- package/mac80211/files/lib/wifi/mac80211.sh 2013-01-11 09:17:02.621297461 +0800
+++ package/mac80211/files/lib/wifi/mac80211.sh.720n    2013-01-11 10:37:01.223478065 +0800
@@ -591,7 +591,6 @@
 $dev_id
 $ht_capab
        # REMOVE THIS LINE TO ENABLE WIFI:
-       option disabled 1

 config wifi-iface
        option device   radio$devidx
[jejer@arch openwrt]$ patch -p0 < mac80211.sh.patch

5. 长按RESET恢复出厂设置
6. 模式切换开关

OpenWRT配置与编译

make clean
svn up
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make menuconfig
Target System (Atheros AR7xxx/AR9xxx)
Target Profile (TP-LINK TL-WR703N)
LuCI--Collections--<*> luci
USB Storage http://wiki.openwrt.org/doc/howto/usb.storage
extroot http://wiki.openwrt.org/doc/howto/extroot
3G http://wiki.openwrt.org/doc/recipes/3gdongle
make V=99

参考链接

diff -Naur 旧的目录 新的目录 > patch文件
或者
diff -Naur 旧的文件 新的文件 > patch文件