目录
- 编译步骤
- 斐讯K2(PSG1218)适配修改
- iptables的tproxy支持和napt66(北邮学生开发的一种ipv6下的nat方案)
- 相关文件下载
编译步骤
linux环境下,在ubuntu和fedora已测试通过
su
#centos系:
yum install ncurses-* flex byacc bison zlib-* texinfo gmp-* mpfr-* gettext libtool* libmpc-* gettext-* python-docutils nano
yum groupinstall "Development Tools"
#debian系:
apt-get install build-essential gawk pkg-config gettext automake autoconf libtool bison flex zlib1g-dev libgmp3-dev libmpfr-dev libmpc-dev texinfo python-docutils autopoint nano libncurses*
cd /opt
git clone https://bitbucket.org/padavan/rt-n56u.git
#备份默认的.config文件
mv /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config.backup
#复制K2适配文件和napt66修改文件 (相关文件以及详细说明见后文)
#启用所有iptables扩展模块(详细说明见后文)
cp -rf /opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/disabled/*.* /opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/
######################
#下面四步仅是需要修改内核编译配置的才需要做,如调整RAM大小,变更wifi驱动版本等
cp /opt/rt-n56u/trunk/configs/boards/RT-AC54U/256M.nousb.kernel-3.4.x.config /opt/rt-n56u/trunk/linux-3.4.x/.config
cd /opt/rt-n56u/trunk/linux-3.4.x/
make menuconfig
#menuconfig的配置方法见后文,默认已经开启netfliter的tproxy支持,wifi驱动版本为3.0
# 修改完成,移动回原目录
mv /opt/rt-n56u/trunk/linux-3.4.x/.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config
######################
#如果不需要修改内核编译配置,则直接将64M.nousb.kernel-3.4.x.config或
#将其他.config文件命名为kernel-3.4.x.config
cp /opt/rt-n56u/trunk/configs/boards/RT-AC54U/64M.nousb.kernel-3.4.x.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config
#备份,复制,修改机型的.config配置文件,K2对应的是AC54U(详细说明见后文K2适配部分)
mv /opt/rt-n56u/trunk/.config /opt/rt-n56u/trunk/backup.config
cp /opt/rt-n56u/trunk/nousb.config /opt/rt-n56u/trunk/.config
# nano /opt/rt-n56u/trunk/.config
#编译工具链
cd /opt/rt-n56u/toolchain-mipsel/
./clean_sources
./build_toolchain
#以后每次编译只需要执行以下三步
#编译固件
cd /opt/rt-n56u/trunk/
./clear_tree
#./build_firmware
#原作者的build_firmware其实是简单粗暴地替换kernel-3.4.x.config内的文本,有时会出问题。
#我注释掉一些内容,新脚本为build_firmware_usb和build_firmware_nousb,适用于有/无USB支持的固件
./build_firmware_nousb
#./build_firmware_usb
menuconfig的配置
以修改netfilter扩展支持和修改RAM大小为例
在执行make menuconfig之后,弹出图形化配置页面,这里可以配置与内核有关的编译选项


选择Machine selection --->DRAM Size 可配置RAM大小。
在menuconfig中,[*]表示编译进内核中,[M]表示编译成模块(.ko文件),< >表示既可以编译为模块或集成于内核内,[ ]表示不包含。两次按下ESC回退到上一级菜单,按下 / 键可以搜索,例如 输入 tproxy搜索得到以下结果


搜索结果包含了搜索对象的所在位置和依赖关系,例如tproxy的第一个结果,Depends on中包含EXPERIMENTAL [=y],表明需要先开启EXPERIMENTAL选项才能开启此项支持。
Symbol: NETFILTER_XT_TARGET_TPROXY [=m]
Type : tristate
Prompt: "TPROXY" target support (EXPERIMENTAL)
Defined at net/netfilter/Kconfig:655
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && EXPERIMENTAL [=y] && NETFILTER_TPROXY [=m] && NETFILTER_XTABLES [=y] && NETFILTER_ADVANCED [=y]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> Core Netfilter Configuration
-> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
Selects: NF_DEFRAG_IPV4 [=y] && NF_DEFRAG_IPV6 [=y]
Symbol: NETFILTER_TPROXY [=m]
Type : tristate
Prompt: Transparent proxying support (EXPERIMENTAL)
Defined at net/netfilter/Kconfig:364
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && **EXPERIMENTAL [=y] **&& IP_NF_MANGLE [=m] && NETFILTER_ADVANCED [=y]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> Core Netfilter Configuration
照此方法,可以调整wifi驱动版本以及其他内核驱动,如USB串口驱动等。
改完以后,反复按esc回退到主菜单,选择exit并确认保存。
斐讯K2(PSG1218)适配修改
K2采用MT7620+64M RAM+8M ROM,无USB口。padavan需要在optware/entware环境下外挂U盘才能安装ipk,也就是需要引出USB的D+和D-引脚。胆大之人可以尝试刮U大法,胆小之人可以寄给专业改机商帮忙硬改。
K2的相关适配主要有如下几方面:
- 汉化文件
- wifi驱动和开启外置PA/LNA
- LED灯GPIO口定义(trunk/configs/boards/RT-AC54U/board.h)
- WAN/LAN口定义
- 中文SSID
- 其他:设置一些默认参数,例如NTP服务器,LAN地址,SSID,ssh等
我使用的适配文件来源于恩山论坛,不过其中中文SSID修改的文件太多,而且我并没有这个需求,因此就没有使用相关文件,其余的适配文件都打包好了,下载地址见本文最后。
汉化文件来源:http://www.right.com.cn/forum/thread-193826-1-1.html
拷贝适配文件相应目录覆盖即可。
适配文件中含有:
- trunk/user/shared/defaults.h
默认网关:192.168.1.1;用户名:admin;密码:admin;NTP服务器:hk.pool.ntp.org, 2001:470:0:50::2 ;wifi密码:1234567890 - 64M / 256M RAM和有/无USB的.config文件
- NAPT66支持(见下文)
机型的.config文件(usb.config ; nousb.config),包含padavan中的一些第三方软件配置例如aria2,minidlna,Transmission以及一些内核相关参数的配置,可以自行修改,需要开启的功能设置成 =y 并且删除前面的 # 注释即可,修改完成后命名为.config

iptables的tproxy支持与napt66(ipv6 nat)
ss的udp转发需要iptables的tproxy支持,在openwrt中可以直接安装kmod-ipt-tproxy,在padavan中则需要从源码入手。
首先在内核中开启tproxy的支持,这个在menuconfig中配置,详见上文;
接着是开启iptables自己的支持,只需要将/opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/disabled/中的文件全部复制到 extensions/中即可。
刷好固件后,手动在开机脚本中加一行(自定义设置-脚本-启动后)
modprobe xt_TPROXY
Padavan的内核原生不支持ipv6 NAT,所以需要第三方的NAPT66(北邮学生开发的在ipv6下的NAT方案)
参考NAPT66文档,在编译内核时,只需修改trunk/linux-3.4.x/net/ipv6/ip6_output.c即可。

更多关于NAPT66的信息请参考:
http://www.jianshu.com/p/eb07eaac6167
https://github.com/mzweilin/napt66
相关文件下载
K2适配文件以及适用于Padavan (内核版本3.4)的napt66.ko
链接:https://pan.baidu.com/s/1qYCuQ3U 密码:pyja
网友评论