Padavan 编译教程
配置编译环境
安装虚拟机
安装Ubuntu 16.04LTS
安装git
1 | $ sudo apt-get update |
转到 /opt目录,并且用命令克隆Padavan仓库
1 | $ cd /opt |
安装编译固件所需要的工具
1 | $ sudo apt-get install autoconf automake bison build-essential flex gawk gettext gperf libtool pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev texinfo python-docutils mc |
编译一个交叉编译的工具链
1 | $ cd /opt/rt-n56u/toolchain-mipsel |
编译3.0内核的固件
如果你需要编译3.0内核的固件就需要执行下面的步骤,默认支持3.4内核
1 | $ cd /opt/rt-n56u/toolchain-mipsel |
编译好后的工具链会放在 /opt/rt-n56u/toolchain-mipsel/toolchain-3.0.x
以后在更新或者升级工具链的情况下才需要执行以上步骤。
机型适配(newifi mini)
进行入固件源码目录
1 | $ cd /opt/rt-n56u/trunk |
生成配置文件
删除默认的配置文件 opt/rt-n56u/trunk下的.config文件,默认是隐藏的,可以使用Ctrl+H显示与隐藏配置文件,或者用以下命令进行删除
1 | $ sudo rm -f opt/rt-n56u/trunk/.config |
从opt/rt-n56u/trunk/configs/templates里拷贝出 ac54u_base.config到 opt/rt-n56u/trunk下并重命名成.config,或者用以下命令进行操作
1 | $ sudo cp opt/rt-n56u/trunk/configs/templates/ac54_base.config /opt/rt-n56u/trunk/.config |
修改配置文件
由于修改后默认的.config配置文件里文档写的很详细,就不多解释,根据自己需要开启与关闭需要与不需要的功能,#这个符号默认是注释代码,也就是关闭某个功能,反之去掉就是开启(可以把文档内容拷出来到翻译里翻译一遍,可以很清楚的看到每个功能是干什么用的)
适配灯与复位键
编辑 /opt/rt-56u/trunk/configs/boards/RT-AC54U/board.h
1 | /* ASUS RT-AC54U */ |
调用原厂无线参数
编辑 /opt/rt-56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config查找修改成以下代码,并删除目录下SingleSKU开头的文件。
1 | CONFIG_RT_SINGLE_SKU=n |
适配WAN口与LAN口
编辑 /opt/rt-56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config
1 | CONFIG_RAETH_ESW_PORT_WAN=4 |
开启外置PA&LAN支持
在 /opt/rt-56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config里删除# CONFIG_EXTERNAL_PA_EXTERNAL_LNA is not set 这一行代码,并加入下面的代码
1 | CONFIG_EXTERNAL_PA_EXTERNAL_LNA=y |
扩展内存
编辑 /opt/rt-56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config配置文件,以AC-54U为例,默认是64M,所以只需要将以下代码进行如下修改
1 | //没修改前是64M内存 |
设置时区
编辑 /opt/rt-56u/trunk/user/shared/defaults.h
1 |
关闭telnet开启ssh
编辑 /opt/rt-56u/trunk/user/shared/defaults.c
1 | {"telnetd","0"}. |
汉化
编辑trunk/user/www/dict/EN.header文件,找到LANG_EN=English修改成以下
LANG_EN=简体中文
编辑trunk/user/www/dict/EN.footer文件,把里面内容翻译成中文(也可以从已经汉化的固件里提取/www/EN.dict文件,删除以下的内容,然后保存并重新命名成EN.footer;
[Language type]
LANG_EN=简体中文
LANG_RU=English
编辑trunk/user/www/Makefile文件,找到echo “LANG_RU=Pусский” >$(ROMFS_DIR)/www/EN.header修改成以下
1 | echo "LANG_RU=English" >$(ROMFS_DIR)/www/EN.header |
编辑trunk/user/www/dict/RU.dict文件,找到LANG_EN=English修改成以下
LANG_EN=简体中文
生成固件
清除源码树
1 | $ sudo ./clear_tree |
开始编译生成固件
1 | $ sudo ./build_firmware |
编译完成后生成的固件在 /opt/rt-56u/trunk/images里面
更新源码
转到 /opt目录,克隆最新源码
1 | $ cd /opt |
如果你对本地存仓库进行了更改,那么在更新源码的时候,你必须运行以下命令
1 | $ sudo git stash |
如果更改了工具链,则必须重新构建它
1 | $ cd /opt/rt-n56u/toolchain-mipsel |
以上的修改建议使用手工进行修改,如果直接使用文件进行覆盖的话很容易出错。而且一但编译出错的话需要花很多时间进行调整,所以还是自己一步步慢慢改吧。