准备工作:
1、.config 文件
2、passwall、ssr plus的feed 源
3、github账号
.config 文件
.config 文件就是openwrt源码的配置文件。里面包含了openwrt的所有设置,如运行的平台、系统的分区大小、生成的镜像、包含的软件等等。
该文件需要配置完源码才会生成。需要在我们自己的服务器上面下载源码并配置。一般都是在国外的服务器上面执行。推荐 Debian 11 或 Ubuntu LTS。
这里用的是 lede 的源码,具体的步骤:
安装编译依赖:
sudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \ rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
下载源代码,添加 passwall 和 ssr plus 的源到feeds文件,更新 feeds 并选择配置:
cd /root git clone https://github.com/coolsnowwolf/lede echo "src-git helloworld https://github.com/fw876/helloworld" >> /root/lede/feeds.conf.default echo "src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages" >> /root/lede/feeds.conf.default echo "src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci" >> /root/lede/feeds.conf.default cd lede ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig
比较花时间的是 make menuconfig
这一个配置的步骤。执行完命令之后会进去一个蓝色的复杂的界面。用空格键 选中,回车键 确定。注意查看底部选项,有 select 、exit 等等。
注意 空格键选中后会有3个选项,M 、*、空白。M 表示编译但不安装。* 表示安装在openwrt里。空白就是不编译不安装,取消的意思。这里我们需要的软件一律用 * 选中。
需要启用的功能与软件根据自身需求。感觉不能选太多,容易产生问题,增加编译时间,编译固件过大,软件还容易冲突。比如 Dnsmasq 就与 Dnsmasq-full 冲突。。。
然后,感觉选项带有 mod 的慎选,编译过容易报错。
如果配置文件有选择软件,但实际生成的固件没有,那么要检查下编译平台的 feed 配置。
默认 lede 生成的固件,运行平台是 x86_64。如果是其他平台要在前面的选项选择。
这里主要做下面的调整:
1、生成 vmdk 镜像 (esxi需要)
CONFIG_VMDK_IMAGES=y
2、启用固件压缩
CONFIG_TARGET_IMAGES_GZIP=y
3、调整 内核 分区大小 (似乎不是很有必要但这里调整了)
CONFIG_TARGET_KERNEL_PARTSIZE=64
4、增大 软件安装空间 (这里不能调得太大,上次调整为5G,github直接报错显示空间不足)
CONFIG_TARGET_ROOTFS_PARTSIZE=2048
5、取消 迅雷快鸟 (直接在生成的.config注释掉 xlnetacc 相关的条目)
6、增加几个主题 ( luci-theme 相关的选上)
7、增加 passwall、ssr plus ,附带的模块全部选上
8、增加 frps 、frpc
其他均保持默认。
调整后的x64平台配置文件:
https://github.com/hao35954514/openwrt-20220816-addssrp/blob/main/.config
github 云编译部分
主要用的 p3terx 的项目:
https://github.com/P3TERX/Actions-OpenWrt
教程:https://p3terx.com/archives/build-openwrt-with-github-actions.html
根据教程一步步来就可以。非常感谢作者。已点支持。
注意这里因为要添加 passwall 、ssr plus,所以在开始编译前,需要在 diy-part1.sh 这个脚本添加下面3条命令:
echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default echo 'src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages' >>feeds.conf.default echo 'src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci' >>feeds.conf.default
就是将 passwall 和 ssr plus 的源添加到github编译环境中的feeds文件中。添加完进行编译,等2-3小时左右就能下载固件了。
吐槽:
(
但个人感觉,这教程不是很友好。有些地方没说清楚。如果你对openwrt的编译不熟悉,容易走弯路。
比如它没说清楚,github的编译环境要跟你生成配置文件的服务器环境相同(其实就是 feeds文件,新手根本没这个考虑到这个)。我新手,照着教程做,把添加了passwall的配置文件,丢到了github上面去跑去编译,可是github的feeds文件上面没passwall的源,下载不了。你开始编译了,等了2小时,下载下来加载了固件进去发现passwall的影子都没有。。。然后也不是很懂看日志,又尝试编译几次,没找到原因的话又浪费了好几个小时。。。这不是容易劝退人吗?编译openwrt固件其实是件相当花时间的事情,我感觉如果写教程,还是写得完善一些好。多一些提示。
当然,其实编译openwrt固件,这本来就是个伪需求。你可以直接下载别人编译好的固件来用。
)