记录时间:2019 年 12 月 31 日
关键词:K2 Padavan 固件编译 定制
写在前面
手里的 K2 一直以来使用的都是某恪的固件,确实稳定好用,但是直到现在都没有加入 IPV6 的相关功能。怀着想要体验 IPV6 的心情,一番折腾之后诞生了这一系列记录。那为什么不使用强大的 openwrt 呢?稳定性和无线性能是我首要考虑的问题,因此选择了捯饬 Padavan。最后几经搜索选择了 hanwckf 的开源固件,模板多教程也多,方便进行简单的定制。
1. 准备 Linux 系统环境
根据 libgcc 的 Padavan固件编译办法 ,推荐没有安装或者不想安装 Linux 系统的使用 Windows10 系统的 wsl 功能。
首先安装了 Ubuntu 19.10,安装过程略显曲折,因为安装到了移动硬盘。关于这部分内容将在下一篇细说。
1.1 更换国内源并更新了所有软件包,同时修改了/opt 目录权限为 777
1 2 3 4 5
| sudo sed -i 's#http://archive.ubuntu.com#https://mirrors.huaweicloud.com#' /etc/apt/sources.list sudo sed -i 's#http://security.ubuntu.com#https://mirrors.huaweicloud.com#' /etc/apt/sources.list sudo apt update sudo apt upgrade sudo chmod 777 /opt
|
1.2 安装必要的软件包
1 2 3 4
| sudo apt update sudo apt install unzip libtool-bin curl cmake gperf gawk flex bison nano xxd \ cpio git python-docutils gettext automake autopoint texinfo build-essential help2man \ pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev
|
1.3 下载源码到本地
1
| git clone --depth=1 https://gitee.com/hanwckf/rt-n56u.git /opt/rt-n56u
|
这里没有用 GitHub,因为速度实在不给力。
1.4 准备并编译工具链
1 2 3
| cd /opt/rt-n56u/toolchain-mipsel ./clean_toolchain ./build_toolchain
|
这一步使用的笔记本电脑,编译花了 30+min。如果工具链的源码没有变化,下一次编译固件不用再重新编译工具链,可以直接使用。
2. 修改配置文件进行简单的定制
为了修改文件更方便,先去下载了 VS Code ,然后修改各配置文件。根据下表
配置文件路径 |
主要的可配置功能 |
/opt/rt-n56u/trunk/configs/templates/PSG1218.config |
包含软件包、功能 |
/opt/rt-n56u/trunk/configs/boards/PSG1218/board.h |
指示灯、复位键等 |
/opt/rt-n56u/trunk/configs/boards/PSG1218/kernel-3.4.x.config |
WAN、LAN、内存 |
/opt/rt-n56u/trunk/user/shared/defaults.h |
路由器配置(默认网关、无线密码等) |
这次针对 K2 的定制过程修改的是 PSG1218_nano.config 和 defaults.h 这两个文件。主要是在/opt/rt-n56u/trunk/configs/templates/目录下发现了 PSG1218_nano.config 的配置模板文件,这个配置文件本身是 K2 的精简配置,出于对精简的谜之信仰选了这个。
2.1 修改 PSG1218_nano.config
需要启用或关闭一个功能则将该行的末尾改为 y 或 n,至于功能是什么文件里有描述和注释
举个栗子:
1 2 3 4 5
| ### Enable IPv6 support #是否启用 IPv6 支持 CONFIG_FIRMWARE_ENABLE_IPV6=y #表示启用
### Enable USB support #是否启用 USB 支持 CONFIG_FIRMWARE_ENABLE_USB=n #表示不启用(没有 usb 口)
|
这次编译固件做出的修改如下
1 2 3 4 5
| CONFIG_FIRMWARE_INCLUDE_XUPNPD=n #去除用于 IPTV 的 XUPNP CONFIG_FIRMWARE_INCLUDE_DOGCOM=n #去除用于 Drcom 的工具 CONFIG_FIRMWARE_INCLUDE_MINIEAP=n #去除可用于锐捷的 eap 客户端 CONFIG_FIRMWARE_INCLUDE_NJIT_CLIENT=n #去除南工网络客户端 CONFIG_FIRMWARE_INCLUDE_VLMCSD=n #去除用于 KMS 的工具
|
2.2 修改 defaults.h
修改备用 NTP 服务器地址为 time.nist.gov
1
| #define DEF_NTP_SERVER1 "time.nist.gov"
|
是的,编译完之后才发现这个更改没有任何意义,就是想找点什么改一下( ̄▽ ̄)”
修改完毕,保存
3. 清理代码树并开始编译
1 2 3
| cd /opt/rt-n56u/trunk sudo ./clear_tree sudo ./build_firmware_modify PSG1218_nano
|
4. 编译完成保存固件
固件编译耗时约为 10min,完成后的.trx 文件在/opt/rt-n56u/trunk/images 路径下找到,然后复制到其他地方保存,因为下次编译会覆盖。