简单编译一个属于自己的 OpenWrt 软路由系统
我一直想编译一个 OpenWrt 软路由系统,因为之前用esir大神的高大全固件插件用的有点多,可能会不稳定还有高大全很多插件用不到,打算自己动手编译定制一个自己的 OpenWrt固件,并且给大家分享一下怎么样给OpenWrt在Windows子系统Ubantu下进行编译。
因为我的win11十分不稳定,我给重装了原来是ssd分了俩个盘这次单独给ssd一个盘装win11
在 Windows 里编译 OpenWrt 有两个办法
- WLS (Windows Linux Subsystem)
- 虚拟机 (如: VMware,Hyper-v)
我选择了 WLS,这方法大概缺点就是需要占掉 C 盘空间,选择去微软商店安装 Ubuntu 系统。
安装ubuntu
- 在微软商店搜索
ubuntu
,安装。(Ubuntu 18.04 LTS
)
然后信誓旦旦的打开 Ubuntu 发现 shell 里直接报错,代码: 0x800701bc 按任意键退出 ubuntu
这里推荐安装 Ubuntu 18.04 LTS,安装其他版本可能连编译的界面的进不了?因为仅测试了 Ubuntu 18.04 LTS
- 解决报错安装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
- 继续打开Ubuntu 然后就可以继续,设置账户和密码,Lean大神的不能使用root用户进行编译!输入自己的用户名即可
第一次编译
命令行输入
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
使用
git clone https://github.com/coolsnowwolf/lede
命令下载好lean的源代码,然后cd lede
进入lede目录./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
当
make menuconfig
能成功进去就可以退出添加插件
此步骤容易因为依赖不完全无法进行编译,请看有没有出现错误一直下不动的问题,可以考虑换源和重新安装 Ubuntu 子系统进行解决。
添加自己要的插件
先添加 kenzo 的 openwrt-packages openwrt 软件包和依赖包里面包括了很多用到的插件和依赖经测试都是可用的
在 lede 目录下找到 feeds.conf.default
文件使用笔记本打开并且添加
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
包含了某些pw所需依赖
比如 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
即可
- 下载dl库 需要科学上网 不然下载巨慢导致报错
make -j8 download V=s
- 完成第一次编译 仅限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观看数比我想象中要多,按照步骤来一般没什么问题,如果配置的看不懂可以观看韩风大大的视频,编译其他插件按照博文里写的就没错了!附教程出的固件已经出了 CatWrt-OpenWrt x86 软路由稳定固件的再一次升级。
参见:
- Lean coolsnowwolf/lede
- 微软 适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
- 韩风Talk 【韩风Talk】Openwrt编译难么?不太难,主要是细节!
- 不吐不快 编译更新OpenWrt PassWall和SSR-plus插件
- BIGDONGDONG 『299』 傻瓜式编译OpenWrt固件全流程丨Ubuntu下基于Lean源码编译融合各种插件