一直想编译一个openwrt软路由系统,因为之前用esir大神的高大全固件插件用的有点多,可能会不稳定还有高大全很多插件用不到,打算自己动手编译定制一个自己的openwrt固件
因为我的win11十分不稳定,我给重装了原来是ssd分了俩个盘这次单独给ssd一个盘装win11,在windows里编译openwrt有两个办法
WLS (windows linux subsystem)
虚拟机 (如: vmware,hyper-v)
我选择了WLS,这方法大概缺点就是需要占掉C盘空间,然后选择去微软商店安装ubuntu系统
安装ubuntu
在微软商店搜索ubuntu,安装
然后信誓旦旦的打开ubuntu发现shell里直接报错,代码: 0x800701bc 按任意键退出ubuntu
解决报错安装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
能成功进去就可以退出添加插件添加自己要的插件
先添加kenzo的openwrt-packagesopenwrt软件包和依赖包里面包括了很多用到的插件和依赖经测试都是可用的
在lede根目录下找到feeds.conf.default
文件使用笔记本打开并且添加
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
包含了passwall、ssrplus、openclash…等插件和所需依赖
比如lean大神和kenzo的软件包里都没有的OpenAppFilter
需要单独下载源码保存到lede/package
目录下
cd packeage
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
当第一次编译过了,如果显示
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
里,然后就可以通过各种方法安装在软路由上了,安装应该就不用说怎么安装了吧。