openwrt编译一个专用镜像
openwrt几乎是玩家必备,因为编译需要额外的环境配置,编译失败率等问题,大部分人的选择是下载官方提供的通用镜像。
但是作为技术爱好者,对定制镜像的需求是一直存在的,尤其是passwall等更新频率比较高的应用,因为大家下载的镜像内核版本不一,导致这些应用更新成功率较低
自己编译一个openwrt镜像成了一个不错的选择。
上面也讲了,编译失败概率一直是存在的,如果没有多次编译失败的经验是无法得到一个可用的镜像的,经验都是在失败中总结出来的。
这个视频的主要目的是带大家编译一个含有passwall的openwrt镜像,并在使用中把一些要点都点出来,让大家能够顺利的编译自己的镜像。
请大家认真听讲。
注意,在你能够成功编译之前,请尽可能按照我的设置来,包括luci应用包的选择。
在本视频中编译一个x86镜像,适合于有x86 nas设备的,如果你没有这样的设备,可以将openwrt安装在vmware虚拟机中,一样可以作为旁路由来使用,所以x86镜像适合任何人,等熟悉了编译过程,再给你的arm设备编译相应的镜像,能极大地提高操作自信心。
操作系统使用ubuntu20.04,系统安装过程就不演示了。
环境要求:梯子
export http_proxy="http://192.168.188.233:10809"
export https_proxy="http://192.168.188.233:10809"
sudo apt update
sudo apt-get install subversion g++ zlib1g-dev build-essential git \
python python3 python3-distutils libncurses5-dev gawk gettext unzip \
file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath
sudo apt install vim net-tools screen
下载代码
git clone https://github.com/openwrt/openwrt
更新源
# 如果出现ssl错误需要设置这个
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
添加下面代码到 openwrt 或 lede 源码根目录下的 feeds.conf.default
文件:
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
src-git nas https://github.com/linkease/nas-packages.git
src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main
src-git helloworld https://github.com/fw876/helloworld.git
将下载好的包安装
./scripts/feeds update -a
./scripts/feeds install -a
进入编辑界面
make menuconfig
# fix bios boot partition is under 1 MiB
# sed -i 's/256/1024/g' target/linux/x86/image/Makefile
必选,uhttp,这是界面,openwrt原版是没有界面组件的。
两个地方要打开,collection-luca
菜单项”Target Images”,”Root filesystem partition size (in MB)”
改成其它的大值,默认是160,改成1024,否则的话因为选择安装app占用空间太大必然会导致编译失败。
base 中关闭dsnmasq,因为启用了full,冲突
第一次编译可以不选其他的,也可以选了,报错再说。
推荐passwall
更换模板
注:此操作请在编译前执行,设置 argon 为默认主题,以此为例举一反三
cd package
git clone https://github.com/jerrykuku/luci-theme-argon.git
cd ..
make menuconfig
#choose LUCI->Theme->Luci-theme-argon
# 还要选择luci-app-argon-config*.ipk
make download -j4
make V=s -j$(nproc)
# 如果编译报错了,尝试单线程编译
make V=s -j1
# 用screen来操作
# 退出screen方法 Ctrl + a+d
编译完成后输出路径:bin/targets