Openwrt固件编译教程wsl

以Glinet MT3000为例

Posted by MinnanH on February 17, 2025

OpenWrt 固件定制编译教程

环境准备与源码下载

访问 lede的源码仓库,按照说明进行到make menuconfig。

make menuconfig 完整配置

确认路由器架构

访问 OpenWrt官方设备支持列表,搜索路由器型号,确认以下信息:

  • Target System(目标平台,如 MediaTek Ralink ARM
  • Subtarget(如 Filogic 8x0(MT798x)
  • Target Profile(设备型号,如 GL.iNet GL-MT3000

LuCI

LuCI ---> Collections ---> <*> luci
LuCI ---> Applications --->
    <*> luci-app-adblock        # 去广告
    <*> luci-app-adblock-fast
    <*> luci-app-commands       # 网页 Shell
    <*> luci-app-ddns           # 动态域名解析
    <*> luci-app-dockerman      # docker
    <*> luci-app-firewall       # 防火墙
    <*> luci-app-hd-idle        # 硬盘休眠
    <*> luci-app-mwan3          # 多 WAN 管理
    <*> luci-app-ntpc           # 时间同步服务器
    <*> luci-app-ocserv         # VPN 服务器
    <*> luci-app-openssl        # 
    <*> luci-app-openvpn        # OpenVPN 客户端
    <*> luci-app-p910nd         # 打印服务器
    <*> luci-app-usb-printer    # USB 打印服务器(hackpascal 优化)
    <*> luci-app-qos            # QoS 管理
    <*> luci-app-samba          # 网络共享(Samba)
    <*> luci-app-shadowsocks    # 科学上网(Shadowsocks)
    <*> luci-app-syncdial       # 多拨虚拟网卡(macvlan)
    <*> luci-app-transmission   # BT 下载
    <*> luci-app-upnp           # 通用即插即用
    <*> luci-app-vsftpd         # FTP 服务器
    <*> luci-app-webshell       # 网页终端
    <*> luci-app-wifischedule   # 定时开关wifi
    <*> luci-app-wol            # 网络唤醒
    <*> luci-app-xunlei         # 迅雷下载
    <*> luci-app-zerotier       # 内网穿透
LuCI ---> Themes ---> <*> luci-theme-bootstrap  # 默认主题
LuCI ---> Modules---> Translations ---> <*> Chinese Simplified (zh_Hans)  # 中文语言包

Base system

Base system  ---> <*> block-mount                          # 添加USB挂载
Base system  ---> <*> librt    (libpthread 会自动联动选中)  # 添加USB挂载

Kernel Module

添加高速数据支持

Kernel modules ---> Block Device --->
    <*> kmod-block2mtd
    <*> kmod-scsi-core
    <*> kmod-scsi-generic  # USB 转 IDE / SATA
Kernel modules ---> Filesystems --->
    <*> kmod-fs-ext4         # ext4 文件系统
    <*> kmod-fs-nfs
    <*> kmod-fs-nfs-common
    <*> kmod-fs-ntfs         # NTFS 只读
    <*> kmod-fs-vfat         # FAT32 支持
    <*> kmod-fuse            # FUSE 文件系统
Kernel modules ---> USB Support --->
    <*> kmod-usb-net            # USB 转网卡驱动
    <*> kmod-usb-net-ipheth      # iPhone USB 共享网络
    <*> kmod-usb-net-rndis       # 安卓 USB 共享网络
    <*> kmod-usb-ohci            # OHCI 控制器
    <*> kmod-usb-uhci            # UHCI 控制器
    <*> kmod-usb2                # USB 2.0 支持
    <*> kmod-usb3                # USB 3.0 支持
    <*> kmod-usb-hid             # USB 键盘鼠标支持
    <*> kmod-usb-storage         # USB 存储支持
    <*> kmod-usb-storage-extras

Utilities

Utilities --->
    <*> docker
    <*> docker-compose
    <*> dockerd
    <*> usbutils              # lsusb 命令
Utilities ---> Filesystem --->
    <*> ntfs-3g              # NTFS 读写支持(占用较多cpu)
Utilities ---> libimobiledevice --->
    <*> libimobiledevice-utils # Apple 设备通讯库
    <*> libplist-utils         # Apple property list 解析工具
    <*> libusbmuxd-utils       # USB 复用守护进程工具
    <*> usbmuxd                # USB 复用守护进程

Languages

Python

Mail

Mail --->
    <*> msmtp   # 邮箱服务

继续lede的教程

下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程)

make download -j8 V=s

在make download之后使用如下命令检查文件完整性(小于1k的文件属于下载不完整):

find dl -size -1024c -exec ls -l {} \;

如果存在这样的文件可以使用

find dl -size -1024c -exec rm -f {} \;

命令将它们删除,然后重新执行make download下载并反复检查,确认所有文件完整可大大提高编译成功率,避免浪费时间。

开始编译

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j1 V=s

刷入路由器

编译好固件之后刷入路由器。参考此教程

参考链接
p3terx zone
Rvan’s Blog