「捯饬记录」一次Padavan固件的简单定制过程

记录时间: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 路径下找到,然后复制到其他地方保存,因为下次编译会覆盖。