Padavan编译技巧

修改config
cd /opt/rt-n56u/trunk

# 下面是修改内核配置需要做的操作:
cp -f configs/boards/<机型名称>/kernel-3.4.x.config linux-3.4.x/.config

make -C linux-3.4.x menuconfig 
# menuconfig的配置方法见后文,修改完成后移动回原目录:
mv -f linux-3.4.x/.config configs/boards/<机型名称>/kernel-3.4.x.config

# 修改机型的.config配置文件
nano configs/templates/<机型名称>.config


menuconfig的配置

以修改netfilter扩展支持和修改RAM大小为例,在linux-3.4.x目录下执行make menuconfig之后,弹出图形配置页面,这里可以配置内核选项

Padavan编译技巧_第1张图片
menuconfig-1
Padavan编译技巧_第2张图片
menuconfig-2

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

Padavan编译技巧_第3张图片
menuconfig-3

Padavan编译技巧_第4张图片
menuconfig-4

搜索结果包含了搜索对象的所在位置和依赖关系,例如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并确认保存。


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即可。

Padavan编译技巧_第5张图片
napt66

更多关于NAPT66的信息请参考:
http://www.jianshu.com/p/eb07eaac6167
https://github.com/mzweilin/napt66

你可能感兴趣的:(Padavan编译技巧)