Padavan固件编译办法


推荐环境: Ubuntu 18 / wsl (Ubuntu 18) / Debian 9 / Arch Linux


经过测试,Padavan固件的编译可在Windows 10 的 wsl (Ubuntu 18.04) 环境中进行(受限于IO性能,编译速度有点慢),推荐没有安装Linux的同学使用此方法进行编译,可以省去装系统的麻烦,但是要注意C盘必须留有足够大的剩余空间(15G+)以容纳wsl

在 Windows 10 部署 wsl (Ubuntu 18.04) 环境仅需四步:

  1. 控制面板 -> 程序 -> 启用或关闭Windows功能 -> 勾选"适用于Linux的Windows子系统",然后重启电脑

    wsl.1

  2. 打开Microsoft应用商店,安装 Ubuntu 18.04 LTS

    wsl.2

  3. 从开始菜单启动 Ubuntu 18.04,设置好用户名和密码

    wsl.3

  4. 在shell里依次执行以下命令:更换成国内镜像源并更新所有软件包,同时把/opt目录权限修改成777(执行sudo命令需要输入上一步里设置好的密码)

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. 之后按照下面的步骤进行后续操作,在WSL环境下,需要使用sudo进行编译,或者使用fakeroot-tcp代替fakeroot。编译完成后用以下命令将编译好的固件复制到C盘根目录:
cp -f /opt/rt-n56u/trunk/images/*.trx /mnt/c

安装依赖包
# 对于deb系 (debian/ubuntu):
sudo apt update
sudo apt install unzip libtool-bin curl cmake gperf gawk flex bison nano xxd \
    fakeroot kmod cpio git python3-docutils gettext automake autopoint \
    texinfo build-essential help2man pkg-config zlib1g-dev libgmp3-dev \
    libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev wget libc-dev-bin

# 对于pacman系 (ArchLinux/manjaro):
sudo pacman -Syu --needed git base-devel cmake gperf ncurses libmpc \
        gmp python-docutils vim rpcsvc-proto fakeroot cpio help2man
拉取源码
git clone --depth=1 https://e.coding.net/hanwckf/rt-n56u/padavan.git /opt/rt-n56u
#git clone --depth=1 https://github.com/hanwckf/rt-n56u.git /opt/rt-n56u
准备工具链
cd /opt/rt-n56u/toolchain-mipsel

# (推荐)使用脚本下载预编译的工具链:
sh dl_toolchain.sh

# 或者,也可以从源码编译工具链,这需要一些时间:
./clean_toolchain
./build_toolchain
(可选)修改机型配置文件
nano /opt/rt-n56u/trunk/configs/templates/PSG1218.config

如果需要启用或者关闭某项功能,就将对应的项目赋值成y或者n,或者在其前面加上#注释符,每个项目的具体说明请参考 README.md,例如:

#CONFIG_FIRMWARE_CPU_600MHZ=y  #表示不将mt7620超频到600Mhz
CONFIG_FIRMWARE_INCLUDE_SCUTCLIENT=y  #表示包含scutclient
CONFIG_FIRMWARE_INCLUDE_RTL_SDR=n  #代表不包含rtl-sdr
开始编译
cd /opt/rt-n56u/trunk
# 对于WSL环境,需要使用sudo进行编译,或者使用fakeroot-tcp代替fakeroot
fakeroot ./build_firmware_modify PSG1218
# 脚本第一个参数为路由型号,在trunk/configs/templates/中
# 编译好的固件在trunk/images里
# 首次编译完成后,如果需要再次编译其它固件,需要执行清理脚本:
./clean_tree

编译好的.trx固件在trunk/images里,可直接在breed里刷入;在Padavan里也可以直接从webui更新固件,或者手动将固件上传到路由器中然后用以下命令刷入:

mtd_write -r write <trx文件路径> Firmware_Stub
#例如:mtd_write -r write /tmp/PSG1218.trx Firmware_Stub

推荐阅读更多精彩内容