1021 字
5 分钟
在WSL上编译你的OpenWrt固件 | ImmortalWrt | WSL
手把手在Windows上安装WSL,并编译一组全面基础可用的ImmortalWrt(OpenWrt)固件,包含基础包(Luci、Opkg)+拓展插件(Frp、Zerotier、V2ray)
正在计算文章时效性...
查看修订历史
相关链接
WSL的安装
前提条件
请确保开启了CPU虚拟化:

Win+R打开运行窗,输入optionalfeatures,打开Windows功能,确保勾选了这两项(一般安装过Docker的机器都已经开启了):

管理Linux发行版
Win+X打开终端(管理员),这里需要确保打开的是PowerShell:
# 查看当前WSL已安装的子系统wsl --list -v# 查看WSL可安装的网络子系统wsl --list -online# 安装Debian,这里的名称就是online展示的wsl --install Debian# 切换默认子系统wsl --set-default Debian# 卸载子系统wsl --unregister Debian# 备份子系统wsl --export Debian debian.tar# 导入子系统wsl --import <系统名称> <Windows存放系统目录> <备份文件>按照指令安装Debian即可。
WSL安装编译工具
首先替换一下镜像源:
# 进入WSL子系统wsl# 使用中科大USTC的APT镜像源sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list更新APT源,并安装编译工具:
sudo apt update && sudo apt upgrade -ysudo apt install -y build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip qemu-utils zstd python3 python3-setuptools file genisoimageImmortalWrt编译工具导入
可以到ImmortalWrt-24.10.4-x86-64下载站看到,上方已经有官方编译好的原版固件了。
# 创建编译文件夹并进入mkdir ~/builder && cd ~/builder这里以immortalwrt-24.10.4版本为例,下载immortalwrt-imagebuilder-24.10.4-x86-64,并打开 Windows资源管理器 (Win+E),将该文件复制给WSL的builder目录内。
这里可以在地址栏输入\\wsl.localhost\Debian\home\<用户名>\builder,(<用户名>是WSL初始化时定义的用户名),即可快速定位目录。
# 解压并进入生成器目录tar -I zstd -xf immortalwrt-imagebuilder-24.10.4-x86-64.Linux-x86_64.tar.zstcd immortalwrt-imagebuilder-24.10.4-x86-64.Linux-x86_64OpenWrt | ImmortalWrt 编译组件
在编译时,还是需要拉取上游组件包的,虽然ImmortalWrt已经是国内友好了,但如果你有本地代理,确实还是可以更快速拉取,只需这样设置:
# 请将'<port>'改为本地代理的指定端口export host_ip=$(ip route show | grep default | awk '{print $3}')export http_proxy="http://${host_ip}:<port>"export https_proxy="http://${host_ip}:<port>"export ALL_PROXY="socks5://${host_ip}:<port>"我这里编译的组件包如下:
| 功能大类 | 网页插件名称 (LuCI App) | 核心程序/驱动包 (Core/kmod) | 实际功能与应用场景 |
|---|---|---|---|
| 基础系统 | luci | opkg, pciutils, usbutils | 提供网页管理后台、软件包管理器,以及 lspci / lsusb 硬件检测工具。 |
| USB 网络共享 | - | kmod-usb-net-rndis, kmod-usb-net-ipheth, usbmuxd, kmod-usb-net-cdc-ether, usb-modeswitch | 手机与 4G 随身 WiFi 共享上网套件。涵盖安卓、iOS 及通用 4G 上网卡驱动。当主宽带断线时,通过 USB 接入手机开启共享,即可作为备用 WAN 口。 |
| 通用无线框架 | - | wpad-openssl, wireless-regdb, iw, iwinfo | 提供通用无线网络核心框架与 WPA2/WPA3 加密支持。确保开机直接显示无线网页菜单。(具体网卡 kmod 按需用 opkg 在线安装) |
| 网络代理 | luci-app-v2raya | v2raya, xray-core | 基于 Xray 核心 的轻量级透明代理,自带独立的现代化 Web 控制面板。 |
| 异地组网 | luci-app-zerotier | zerotier | 虚拟局域网 P2P 组网,用于远程安全访问软路由及内网设备。 |
| 内网穿透 | luci-app-frpc, luci-app-frps | frpc, frps | FRP 穿透套件。用于主动连接外网暴露内网设备,或将本路由作为服务端节点。 |
| 动态域名 | luci-app-ddns | ddns-scripts | 原生动态域名解析。与系统网络热插拔(Hotplug)深度绑定,极速触发解析更新。 |
| 流量与限速 | luci-app-eqos | eqos | 用于 IP 级的应用限速。 |
| NAT 穿透 | luci-app-natmap | natmap | 在 FullCone NAT 条件下后进行高效率端口映射。 |
| 脚本工具环境 | - | curl, lua | 编译时打包就绪,免除无网环境下离线装包的死结。 |
在WSL中继续执行:
# 净化 $PATH 环境变量,隔离 Windows 路径export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 进行一键编译make image PROFILE=generic PACKAGES="opkg luci pciutils usbutils kmod-usb-net-rndis kmod-usb-net-ipheth usbmuxd kmod-usb-net-cdc-ether usb-modeswitch wpad-openssl wireless-regdb iw iwinfo luci-app-zerotier luci-app-eqos luci-app-v2raya v2raya xray-core luci-app-natmap curl lua v2ray-geoip v2ray-geosite luci-app-frpc luci-app-frps luci-app-ddns"
# 进入固件产出目录cd bin/targets/x86/64/ls
# 将img固件从WSL复制到D盘根目录cp bin/targets/x86/64/*combined-efi.img.gz /mnt/d/其实也可以通过 资源管理器 直接将所有固件从WSL复制到Windows指定文件夹。
发现错误或想要改进这篇文章?
文章修订历史 (1 次)
查看变更记录
2026-07-09 56014cb
post: 在WSL上编译你的OpenWrt固件 | ImmortalWrt | WSL
在WSL上编译你的OpenWrt固件 | ImmortalWrt | WSL
https://blog.srprolin.top/posts/immortalwrt-build/