openwrt编译教程

First Post:

Last Update:

Word Count:
1.3k

Read Time:
5 min

编译openwrt建议在非大陆的云服务器上进行(竞价实例真香,比去网吧打游戏还便宜),可以有效提高下载依赖等文件的成功率,如果持续需要编译,可以编译一次全插件全驱动的,然后吧dl文件夹打个包下载到本地完成之后的编译,避免持续缴费

建议使用Ubuntu系统,教程多,出了问题搜起来也简单一些,可以用WSL但是不建议在ntfs以及refs文件系统中编译,不建议使用powershell进行编译

然后安利一下Microsoft Terminal https://github.com/microsoft/terminal

也可以在Windows应用商店下载

img

One Half Dark这个默认配色深得我心


正文:

不要使用root用户,Ubuntu默认用户是ubuntu可以直接使用,其他系统或登录就是root的情况,考虑新建一个用户再来进行编译

以下内容可以直接复制到终端中运行,#开头的行会被终端忽略,一起复制也没有问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#编译前的准备

####更新软件(可选)####
sudo sh -c "apt update && apt upgrade -y"
########################

#安装依赖
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 libelf-dev python3-distutils

#克隆源码
git clone https://github.com/coolsnowwolf/lede.git

#进入源码文件夹
cd lede

######添加自定义源(可选)##########
cat >> feeds.conf.default <<EOF
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git passwall https://github.com/xiaorouji/openwrt-passwall
src-git nas https://github.com/linkease/nas-packages.git
EOF
####################################

#更新并安装feeds.conf.default中配置的源
./scripts/feeds update -a && ./scripts/feeds install -a

######添加 OpenAppFilter 应用过滤插件(可选)####
git clone https://github.com/destan19/OpenAppFilter package/OpenAppFilter
#################################################

######更改默认主题(可选)###########
# 删除自定义源默认的 argon 主题
rm -rf package/lean/luci-theme-argon
# 拉取 argon 原作者的源码
git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git package/lean/luci-theme-argon
# 替换默认主题为 luci-theme-argon
sed -i 's/luci-theme-bootstrap/luci-theme-argon/' feeds/luci/collections/luci/Makefile
#make menuconfig时记得勾选LuCI ---> Applications ---> luci-app-argon-config
#####################################

####设置路由器默认的管理地址为.5.1(可选)###
sed -i 's/192.168.1.1/192.168.5.1/g' package/base-files/files/bin/config_generate
#############################################

#根据需要选插件
make menuconfig
#记得在Target Images适当扩大系统分区和镜像大小
#系统分区,驱动或插件多的话需要适当扩大这个分区
#(128) Kernel partition size (in MB)
#文件系统分区,基本可以理解为安装后默认的/overlay分区大小
#(512) Root filesystem partition size (in MB)

#下载编译所需的软件包
make download -j8 V=s

#看看有没有没下完整的包,这是查看dl目录下有没有1k以下的文件,有的话建议删除重新下,很可能没下完整
find dl -size -1024c -exec ls -l {} \;
#删除
find dl -size -1024c -exec rm -f {} \;

现在区分首次编译和二次编译

首次编译

1
2
3
4
5
6
# -j1:单线程编译
make -j1 V=s
#这时候如果报错bash: po2lmo: command not found,八成是base没有先编译出来
#可以运行以下命令先编译base,然后重新执行make -j1 V=s
make package/feeds/luci/luci-base/compile V=s
#剩下的可能就是插件冲突之类的,没有很好的办法,慢慢排查吧

二次编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#首先肯定是要进入lede目录: cd lede

#拉取最新代码
git pull
#更新下载安装订阅源包含的软件包
./scripts/feeds update -a && ./scripts/feeds install -af

#清理旧文件
#如果只是调整检查和驱动等
make clean
#如果需要调整架构,或者之前编译出错
make dirclean
#删除旧的配置文件
rm -rf ./tmp && rm -rf .config
#选择插件
make menuconfig
#下载包
make download -j8 V=s
#优先使用多线程编译,出错则使用单线程并输出详细信息
make -j$(nproc) || make -j1 V=s

一些工具:

1
7za a -m0=lzma -mx=9 -ms=on lede.7z lede/ &

这个朋友已经写得很详细了,可以参考一下他的,别忘了看完给人家点个赞

坑:

  • 不清楚是不是我的网络问题还是和哪个插件冲突AdGuard Home一旦勾选,有概率编译失败,编译成功该插件也无法正常使用

参考:

OpenWrt 固件自编译教程:从入门到酸爽! - 喵斯基部落

https://github.com/fw876/hellow