我一直想编译一个OpenWrt软路由系统,因为之前用esir大神的高大全固件插件用的有点多,可能会不稳定还有高大全很多插件用不到,打算自己动手编译定制一个自己的openwrt固件,并且给大家分享一下怎么样给OpenWrt在Windows子系统Ubantu下进行编译。

因为我的win11十分不稳定,我给重装了原来是ssd分了俩个盘这次单独给ssd一个盘装win11

在windows里编译openwrt有两个办法

  • WLS (windows linux subsystem)

  • 虚拟机 (如: vmware,hyper-v)

我选择了WLS,这方法大概缺点就是需要占掉C盘空间,选择去微软商店安装ubuntu系统。

安装ubuntu

  1. 在微软商店搜索ubuntu,安装。(Ubuntu 18.04 LTS)

然后信誓旦旦的打开ubuntu发现shell里直接报错,代码: 0x800701bc 按任意键退出ubuntu

这里推荐安装Ubuntu 18.04 LTS,安装其他版本可能连编译的界面的进不了?因为仅测试了Ubuntu 18.04 LTS

  1. 解决报错安装wls。

启用 WLS 在管理员权限下 *powershell *运行

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

启用 虚拟机平台 在管理员权限下 powershell 运行

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启电脑

下载 Linux内核更新包

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

(无脑下一步

设置 wls2位默认版本 在下 powershell 运行(不一定可选)

wsl --set-default-version 2

  1. 继续打开Ubuntu
    然后就可以继续,设置账户和密码,Lean大神的不能使用root用户进行编译!输入自己的用户名即可

第一次编译

  1. 命令行输入 sudo apt-get update ,然后输入 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

  2. 使用 git clone https://github.com/coolsnowwolf/lede 命令下载好lean的源代码,然后 cd lede 进入lede目录

  3. ./scripts/feeds update -a
    ./scripts/feeds install -a
    make menuconfig

    make menuconfig能成功进去就可以退出添加插件

此步骤容易因为依赖不完全无法进行编译,请看有没有出现错误一直下不动的问题,可以考虑换源和重新安装Ubuntu子系统进行解决。

添加自己要的插件

先添加kenzo的openwrt-packagesopenwrt软件包和依赖包里面包括了很多用到的插件和依赖经测试都是可用的

在lede根目录下找到feeds.conf.default文件使用笔记本打开并且添加

src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small

包含了某些pass插件和所需依赖

比如lean大神和kenzo的软件包里都没有的OpenAppFilter

需要单独下载源码保存到lede/package目录下

cd package

git clone https://github.com/destan19/OpenAppFilter.git

cd ..

添加了插件feeds里就再重新进行一遍更新feeds,此时就下载kenzo仓库里的软件包了,单独git下载的不需要进行该步骤

./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

检查能进make menuconfig即可

  1. 下载dl库 需要科学上网 不然下载巨慢导致报错

make -j8 download V=s

  1. 完成第一次编译 仅限WLS (-j1 后面是线程数。第一次编译推荐用单线程)

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

非WLS用户make -j1 V=s

使用lean大神的源码未经过修改保证可以编译成功,第一次编译花费时间需要很久记得保持特殊网络环境下进行编译不然可能连第一次编译都过不了

假如第一次编译就报错的重新开始直接rm -rf /home/用户/lede不要添加插件再进行编译,还是报错就没辙了毕竟lean源码第一次不添加任何插件是确实能过的,请回到依赖安装的步骤检查好了。

  • ✅ 当第一次编译过了,如果显示
signing package index...
make[2]:Leaving directory `/home/user/lede`
make[2]:Entering directory `/home/user/lede`
make[2]:Nothing directory `/home/user/lede`
......
  • ❎ 即代表编译成功了,如果显示
make[2]: *** [package/feeds/packages/forked-daapd/compile] Error 2
make[1]: *** [/home/vk-op/lede/staging_dir/target-x86_64_musl/stamp/.package_compile] Error 2

类似的带有Error字样的就是编译出错。

第二次编译

推荐插件不要一下全选了,几个几个的选避免插件编译失败不好排查,编译的时候选你电脑最大的线程数进行编译就好。

Luci--->Applications选择几个自己需要的插件,Luci-Theme选择自己需要的几个主题

Target images里选择Build GRUB images (Linux x86 or x86_64 host only)`就是BIOS启动默认不选择就是UEFI启动的

Target images里选择Root filesystem partition size (in MB),可以设置默认overlay分区大小

Target images里选择Kernel partition size (in MB),可以设置内核分区大小(目前不知道这个干嘛的,设置了25MB)

先简单编译一遍 (线程数=处理器线程+1)

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

编译好了继续选择插件进行编译直到插件满足你的需求,一点点这样编译是因为怕插件编译错误可以一个个排查,如果一上来全点了报错了难排查

已知smb和smb4一起编译会报错,其他插件报错可以善用搜索引擎搜索或者去github给作者提交issues或者去相关TG群里问。

编译完成

编译好的固件在 /home/user/lede/bin/targets/x86 里,然后就可以通过各种方法安装在软路由上了,安装应该就不用说怎么安装了吧

如果对我分享的博文有帮助可以给我评论或者打赏支持我!

感谢!这是我为数不多没发平台进行推广或者原文宣传的博文,仅靠自己收集的资料整理而来就收获了150观看数比我想象中要多,按照步骤来一般没什么问题,如果配置的看不懂可以观看韩风大大的视频,编译其他插件按照博文里写的就没错了!附教程出的固件已经出了请看这个: 分享自己编译的OpenWrt软路由固件!

部分参见: