type
status
date
slug
summary
tags
category
icon
password
Property
Nov 1, 2023 02:25 PM
前言: 鉴于网上已经有相当多OpenWRT编译的资源, 本文主要讲一些其他教程没有涉及到的内容. 共分为两个篇章.
本文仅针对LEDE源码进行编译, 其他repo的OpenWRT大同小异.
PS: 内容读起来可能在逻辑顺序上有点奇怪, 因为这只是从我个人笔记中摘出来粗略修改的, 有时间了的话会精修一下.
编译
准备
需要配置好环境, 如Ubuntu中需要安装如下package, 请参考官方:
Note: 不要用 root 用户进行编译
当然如果是自己的电脑, 一般不想被各种依赖包所污染, 可以使用docker来创建. 重点在于如何在容器中使用non-root用户. 这里我们使用
gosu.制作docker镜像方法如下:
首先创建两个文件在一个空目录:
Dockerfile和entrypoint.shDockerfile:
说明:
- UID和GID可以改为和host user一致的, 这样在bind mount映射后输出的文件直接就可以在host上进行访问, 权限是一致的.
- 用户名随意, 这里以
fubuki进行展示
entrypoint.sh:
然后构建镜像并启动容器
这样就以non-root用户的身份进入容器里了. 如果想开多个shell, 可以执行以下命令
设置编译参数
git clone完成并cd到其根目录
然后根据配置文件下载相关第三方库到
dl/ 文件夹启动编译
编译好后的固件在
bin/targets下,包在bin/packages下固件文件说明(仍以x86架构说明):
name | info |
openwrt-x86-64-generic-squashfs-rootfs.img.gz | rootfs的镜像,不带引导 |
openwrt-x86-64-generic-squashfs-combined-efi.vmdk | VMWare虚拟机用镜像, 如果是ESXi, 还需要再转换;
如果是 .qcow 后缀, 则是KVM虚拟机用镜像 |
openwrt-x86-64-generic-squashfs-rootfs.img.gz | 安装 / 升级镜像 (UEFI引导, GPT);
如果不含后缀, 则是(Legacy引导, MBR) |
Note: 这里只输出了
squashfs类型的镜像, 不同配置中, 还可能出现ext4, jffs2等名称安装&升级
对于x86平台, 是没有
squashfs-sysupgrade.bin文件的, 直接用squashfs-combined.img升级以及对于Luci来说, 是支持上传压缩后的镜像
*.img.gz二次编译
在编译后, 更新代码后再次编译
make clean不会删除bin/,build_dir/,staging_dir/,tmp/等文件夹下内容,如果再次编译(一般是更新源代码后直接编译)出错可以尝试删除他们;- 但会删除
.config文件, 执行make clean前记得先备份
- 对于第三方feeds, 可以通过执行
./scripts/feeds clean来清除
- 还有几种更彻底的清除命令:
make dirclean和make distclean. 将在之后章中进行介绍 - 如果升级炸了, 用了上述命令就不用删除repo重新拉取了😂
我一般会写成两个脚本来进行后续的更新: