编译OpenWRT教程(上篇)
2023-5-30
| 2023-11-1
字数 1144阅读时长 3 分钟
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镜像方法如下:
首先创建两个文件在一个空目录: Dockerfileentrypoint.sh
Dockerfile:
说明:
  • UID和GID可以改为和host user一致的, 这样在bind mount映射后输出的文件直接就可以在host上进行访问, 权限是一致的.
  • 用户名随意, 这里以fubuki进行展示
entrypoint.sh:
 
然后构建镜像并启动容器
这样就以non-root用户的身份进入容器里了. 如果想开多个shell, 可以执行以下命令
 

设置编译参数

git clone完成并cd到其根目录
有关make menuconfig的内容, 可以参考之前的文章. 在创建配置后会生成配置文件.config
 
然后根据配置文件下载相关第三方库到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 dircleanmake distclean. 将在之后章中进行介绍
    • 如果升级炸了, 用了上述命令就不用删除repo重新拉取了😂
 
我一般会写成两个脚本来进行后续的更新:
update.sh
compile.sh
  • 工具
  • 编译OpenWRT教程(下篇)如何上传arxiv
    Loading...