编译固件需要在Linux系统下,官方推荐的是Ubuntu 16.04 LTS i386,不过我自己编译的环境是Debian 8.5 i386,推荐使用这两种Linux发行版,毕竟Ubuntu是官方推荐,Debian我自己使用都是没问题的,其他发行版请自行测试。如果没有实体机安装Linux系统,可以通过虚拟机来安装,也不会破坏原来的系统,虚拟机可以安装VirtualBox或VMware,建议前者,毕竟是开源软件。
1、安装好操作系统后,先更新源并安装GIT软件,为下一步获取源代码做准备:
1 2 |
sudo apt-get update sudo apt-get install git |
2、以下步骤会在 /opt 本地目录中创建一份源码:
1 2 |
cd /opt sudo git clone https://bitbucket.org/padavan/rt-n56u.git |
根据网络情况,可能需要等待一段时间,待完成后 /opt/rt-n56u 将是源码的根目录。由于源码中引用的路径可能为绝对路径,为了省去很多麻烦,建议不要修改其源码路径,尽量保留默认。
3、你可以仔细阅读 /opt/rt-n56u/readme.eng.txt 这个说明文档,接着继续安装编译固件所需要的软件:
1 |
sudo apt-get install autoconf automake autopoint bison build-essential flex gawk gettext gperf libtool pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev texinfo python-docutils mc |
mc 这个软件不是必须的,可以不用安装,但是用它来在源码目录中穿梭以及编辑,复制等操作都非常方便。autopoint这软件在官方编译说明页中并没要求安装,可能是因为未更新的原因,这需要安装才能顺利编译。
4、首先必须要编译一个交叉编译的工具链:
1 2 3 |
cd /opt/rt-n56u/toolchain-mipsel sudo ./clean_sources sudo ./build_toolchain |
编译好的工具链会存放在 /opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x 这个目录中。
默认的工具链是支持 linux 3.4 内核模块的,如果你打算编译 linux 3.0 内核的固件,则必须按照以下方式编译出一个 3.0 内核的工具链:
1 2 3 |
cd /opt/rt-n56u/toolchain-mipsel sudo ./clean_sources sudo ./build_toolchain_3.0.x |
编译好的工具链会存放在 /opt/rt-n56u/toolchain-mipsel/toolchain-3.0.x 这个目录中。
编译好以后,仅在你需要更新或者升级工具链的情况下才需要重新执行编译交叉编译工具链这个步骤。
5、接下来让我们进入固件源码的目录:
1 |
cd /opt/rt-n56u/trunk |
根据你的需要来自行编辑 /opt/rt-n56u/trunk/.config
例如修改工具链的目录(仅仅在目录不一样的情况下):
CONFIG_TOOLCHAIN_DIR=/opt/rt-n56u/toolchain-mipsel
To build the firmware, for example, for router RT-N65U uncomment (remove the simbol #) the line:
比如要编译路由器RT-N65U的固件,只要取消注释(删除前面的 # 号)
CONFIG_FIRMWARE_PRODUCT_ID=”RT-N65U”
并且注释原来默认取消注释的那行:
#CONFIG_FIRMWARE_PRODUCT_ID=”RT-N56U”
修改完成后并保存文件。
6、每一次编译、重新编译前都需要的操作就是清除源代码树:
1 |
sudo ./clear_tree |
开始编译:
1 |
sudo ./build_firmware |
编译完成后会将你制定的固件保存在 ./path_to_your_dir/rt-n56u/trunk/images 目录中。如果你想保存之前编译过的固件,记得每次编译好之后要把它复制到另外一个位置,否则下次编译前的 clean_tree 指令会清空它。
7、当远程源码有更新时,你想要切换到 rt-n56u 根目录(/opt/rt-n56u/)中去执行一下命令进行源码更新:
1 |
sudo git pull |
8、假如你修改过一些代码导致更新出现冲突,这时候用以下的方式进行处理:
1 2 |
sudo git stash sudo git pull |
9、如果工具链的代码更新了,你需要重新编译一个工具链:
1 2 3 4 |
cd /opt/rt-n56u/toolchain-mipsel sudo ./clean_sources sudo ./clean_toolchain sudo ./build_toolchain |
参考来源:
https://bitbucket.org/padavan/rt-n56u/wiki/EN/HowToMakeFirmware (官方教程)
http://rt.cn2k.net/?p=153 (中文翻译)
http://www.right.com.cn/forum/thread-193826-1-1.html