OpenWrt 固件编译教程

news2025/7/19 16:50:18

一、编译环境准备

编译平台 阿里云 Ubuntu 20.04.5 LTS

安装编译环境依赖

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

更新本地软件包

sudo sh -c "apt update && apt upgrade -y"

不推荐使用 root 用户进行编译,所以先使用 root 权限创建一个用户,以创建 gaven 用户为例

# 添加用户
adduser gaven

为新用户设置密码,根据个人情况,这里设置“123456”

passwd 123456

从 root 用户切换使用新用户

su gaven

从此刻开始,以非 root 用户执行编译过程的所有操作。

二、首次编译步骤

重要的事情说三遍,不要使用root用户!!!

拉取代码,这里拉取的代码是LEDE

git clone https://github.com/coolsnowwolf/lede.git openwrt

添加自定义源(可选项),这里只是告诉一种方式和方法

注:以下是自己正在使用的软件源,这里你也可以换成自己喜欢的软件源

# 进入openwrt目录
cd ~/openwrt

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

更新下载软件仓库的源码到本地,并安装自定义源包含的软件包

./scripts/feeds update -a

 这个过程可能会因为国内网路的原因会失败,多试几次,尽量保证别出现错误。如果有些代码源确实无法实现下载更新操作,原因是因为github的DNS系统解析不了,这里可以通过一些方式查询githhub的地址,进行手动配置

查询github的IP地址

GitHub: Let's build from here · GitHub  通过此网站便可以查询到。

配置/etc/hosts ,在结尾处写上。
140.82.114.3 github.com
140.82.114.3 www.github.com

然后执行

ping  github.com  是否能够ping通,能够ping通,说明可以进行代码更新了。

测试结果示例

 继续执行更新操作,是否能够成功?

./scripts/feeds update -a 

进行拉取代取的安装操作

./scripts/feeds install -a

单独添加软件包(可选项)

如果需要单独添加软件,请拉取源码到 pack­age 目录之下。示例如下:

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

设置默认主题(可选项)

注:此操作请在编译前执行,设置 ar­gon 为默认主题,以此为例举一反三

# 删除自定义源默认的 argon 主题
rm -rf package/lean/luci-theme-argon

# 部分第三方源自带 argon 主题,上面命令删除不掉的请运行下面命令
find ./ -name luci-theme-argon | xargs rm -rf;

# 针对 LEDE 项目拉取 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

设置路由器默认的 LAN IP(可选项)

注:此操作请在编译前执行

# 设置默认IP为 192.168.199.1
sed -i 's/192.168.1.1/192.168.199.1/g' package/base-files/files/bin/config_generate

仅制作.config文件,无需本地编译固件(可选项)

根据自己的定制需求,调整系统组件

make menuconfig

通过以下命令行获得 seed.config 配置文件,然后使用 GitHub Ac­tions 云编译。

# 若在调整OpenWrt系统组件的过程有多次保存操作,则建议先删除.config.old文件再继续操作
rm -f .config.old

# 根据编译环境生成默认配置
make defconfig

# 对比默认配置的差异部分生成配置文件(可以理解为增量)
./scripts/diffconfig.sh > seed.config

若需要编译固件

根据自己的定制需求,调整系统组件

make menuconfig

下载编译所需的软件包

make download -j8 V=s

编译 Open­Wrt 固件

# -j1:单线程编译
make -j1 V=s

单线程编译可提高编译成功率,但过程非常漫长,也完全取决于机器的性能。编译完成后固件输出路径: /openwrt/bin/targets/ 之下。

三、二次编译步骤

不要使用 root 用户!

更新本地编译环境

# 更新软件列表、升级软件包
sudo sh -c "apt update && apt upgrade -y"

# 拉取最新源码
cd ~/openwrt && git pull

# 更新下载安装订阅源包含的软件包
cd ~/openwrt
./scripts/feeds update -a && ./scripts/feeds install -a

清理旧文件

# 删除/bin和/build_dir目录中的文件
make clean

如果要更换架构,例如要从 x86_64 换到 MediaTek Ralink MIPS 建议执行以下命令深度清理 /bin 和 /build_dir 目录的中的文件 (make clean) 以及 /staging_dir/toolchain/tmp 和 /logs 中的文件。

make dirclean

如果需要对组件重新调整,则建议先删除旧配置

rm -rf ./tmp && rm -rf .config

根据自己的定制需求,再次调整 Open­Wrt 系统组件

make menuconfig

下载编译所需的软件包

make download -j8 V=s

编译 Open­Wrt 固件

make -j$(nproc) || make -j1 || make -j1 V=s

二次编译可以优先使用多线程,报错会自动使用单线程,仍然报错会单线程执行编译并输出详细日志。

附加内容

如果没有特殊的定制需求,运行 make menuconfig 命令配置目标架构完成后,进入 LUCI --> Applications 选择需要的插件,进入 LUCI --> Themes 选择喜欢的主题皮肤,编译即可。

如果是硬路由且需要闭源的 Wi-Fi 驱动,务必记得勾选 luci-app-mtwifi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICME 会议介绍

官网翻译来的&#xff0c;具体内容还是看官网&#xff1a;IEEE ICME23 Author Information and Submission Instructions 目录 常会和特别会议 研讨会 行业/应用文件 演示 一般信息 示例文件、格式化指南和模板 电子论文提交 提交论文的分步说明 感兴趣的主题包括但不…

右键发送到菜单+批处理实现批量自动化为文件名添加统一的后缀

WinR打开运行&#xff0c;并输入shell:sendto&#xff0c;打开系统右键发送到菜单的所在文件夹。 新建记事本文档&#xff0c;修改文件名为公开.bat&#xff0c;编辑并保存如下内容&#xff1a; echo off :loop if not "%~1" "" (ren "%~1" &…

[附源码]SSM计算机毕业设计在线二手车交易信息管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux系统配置 Samba客户端

配置 Samba客户端 1.Windows 客户端访问 samba 共享 无论Samba共享服务是部署在Windows系统上&#xff0c;还是部署在Linux系统上&#xff0c;通过Windows系统进行访问时&#xff0c;其步骤和方法都是一样的。下面假设Samba共享服务部署在Linux系统上&#xff0c;并通过Wind…

11返场钜惠,格式转换、图片/视频压缩免费小技巧

&#x1f4e3; 话不多说&#xff0c;直接上干货&#xff01; &#x1f525; 11返场钜惠&#xff0c;牛学长转码大师免费送&#xff01;&#xff01;&#xff01;&#x1f525; 那么牛学长转码大师能帮助您些什么呢&#xff1f;一起看看吧~ 一、格式转换 作为一款专业的格式…

Redis集群部署的三种模式

一、Redis简介 Redis 是一款完全开源免费、遵守BSD协议的高性能(NOSQL)的key-value数据库。它使用ANSI C语言编写&#xff0c;支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis的使用场景有如下一些&#xff1a; 读写效率要…

计算机网络复习——第四章网络层

9月开始学习的一个月&#xff0c;I hope everthing be fine. 相关知识见&#xff0c;感觉比较容易入手 《计算机网络》&#xff08;谢希仁&#xff09;内容总结 | JavaGuide 重点知识&#xff1a; TCP/IP 协议中的网络层向上只提供简单灵活的&#xff0c;无连接的&#xff…

[附源码]SSM计算机毕业设计在线购物商城JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C/C++多进程高并发框架分享【内附可执行源码注释完整】

文章目录&#x1f680;前言&#x1f34e;源码分享&#x1f382;总结&#x1f680;前言 多进程高并发的设计的思想体现在&#xff1a;电脑物理CPU有多少个核&#xff08;core&#xff09;就创建多少个子进程&#xff0c;并且把各个子进程平均分配到各个核&#xff08;core&…

【JavaSE】多态、抽象类

文章目录1. 向上转型2. 重写3. 多态4. 向下转型5. 抽象类1. 向上转型 我们来看看以下程序 class Animal {public String name;public int age;public void eat() {System.out.println("父类的方法");} } class Cat extends Animal {public String hire;public void…

Birdboot第六天 jar包 数据库

实际应用birdboot框架 1.BirdBoot导包 1.新建maven BirdBoot------pom替换 2.删掉static 和 Springboot里面写的&#xff08;controller entity&#xff09; rebuild之后把无用的导包都删掉 主启动类里面把main方法改为run方法 传参&#xff1a;类名和参数&#xff08;复制sp…

动力节点索引优化解决方案学习笔记——索引介绍

1.索引介绍 1.1什么是MySQL的索引 MySQL官方对于索引的定义&#xff1a;索引是帮助MySQL高效获取数据的数据结构。 MySQL在存储数据之外&#xff0c;数据库系统中还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种引用(指向)表中的数据&#xff0c;这样我们…

决策树算法

目录 ​分类算法 决策树算法 外卖订餐决策树 分支处理 分类算法 分类算法是利用训练样本集获得分类函数即分类模型(分类器)&#xff0c;从而实现将数据集中的样本划分到各个类中。分类模型通过学习训练样本中属性集与类别之间的潜在关系&#xff0c;并以此为依据对新样本属…

测试基础——数据库及数据库表的SQL操作(了解即可)

目录 1.数据库基础概念 2.SQL介绍 3.MySQL介绍 4.数据库连接工具Navicat 5.数据类型 6.约束 7.对数据库操作的SQL语句 7.1创建数据库 7.2使用/打开/切换数据库 7.3修改数据库 7.4删除数据库 7.5查看所有数据库 7.6数据库备份 8.数据库表操作的SQL语句 8.1创建数据…

VisualSFM的配置与使用 MeshLab的网格生成与纹理添加

前言 本实验环境如下&#xff1a; VisualSFM版本V0.5.26 MeshLab版本2022.02 操作系统Windows10&#xff0c;64bit 0 VisualSFM配置 0.1 下载 VisualSFM下载链接&#xff1a;VisualSFM : A Visual Structure from Motion System Cmvs-Pmvs下载链接&#xff1a;GitHub -…

[附源码]SSM计算机毕业设计郑工校园二手交易平台网站JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

有限自动机字符串匹配

上一篇文章正则表达式&#xff0c;提到正则表达式是一种用来表示有限自动机所接受单词组合的语言&#xff0c;那么什么是有限自动机呢&#xff0c;以及它是如何进行字符串匹配的&#xff0c;下面来做详细介绍 什么是有限自动机 目前程序上利用不同的编程语言通过正则表达式进…

泰勒公式理解

文章目录1&#xff1a;一元泰勒展开公式2&#xff1a;二元泰勒展开公式3&#xff1a;二元函数的黑塞矩阵4&#xff1a;多元函数的黑塞矩阵其他链接1&#xff1a;一元泰勒展开公式 举例&#xff1a;f(x) 3x 2x 5 在x0或x1处的泰勒展开 当x0时&#xff1a; 当x1时&#xff…

cadence orcad capture tcl/tk脚本开发

Orcad是一个很优秀的原理图工具&#xff0c;orcad支持tcl/tk开发&#xff0c;介绍一下当前本人开发的脚本工具&#xff0c;可用于提高硬件工程师的画图效率。 环境准备 将压缩包解压到C盘&#xff08;注意一定要C盘根目录下&#xff09;&#xff0c;C:\Tcltk。如下图所示将上图…

Selector的使用

文章目录Selector 的使用1.直接使用2. Scrapy Shell3.XPath 选择器4.CSS选择器5.正则匹配Selector 的使用 我们之前介绍了利用Beautiful Soup、pyquery 以及正则表达式来提取网页数据的方法&#xff0c;确实非常方便。不过Scrapy提供了自己的数据提取方法&#xff0c;即内置的…