【调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包】

调试笔记-系列文章目录

调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包


文章目录

  • 调试笔记-系列文章目录
    • 调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包
  • 前言
  • 一、调试环境
    • 操作系统:Ubuntu 22.04.4 LTS
    • 编译环境
    • 调试目标
  • 二、调试步骤
    • 预置条件
    • 安装 OpenWrt 编译工具
      • 打开 PuTTY 终端连接开发主机
      • 安装编译工具
    • 准备 openwrt 构建系统
      • 下载 openwrt 构建系统
      • 配置 openwrt 编译选项
      • 方法一:加入已有的 feed 目录中
      • 方法二:添加自己的 feed 目录
    • 构建新版本 luci-app-nginx 软件包
    • 运行新版本 luci-app-nginx 软件
  • 三、应用场景
    • 将自己的开发的软件加入 feeds 列表中
  • 四、参考资料
  • 总结


前言

本文记录在 Linux 环境下用 OpenWrt-23.05 SDK 添加自己的 feed 软件包的步骤。

实验使用的电脑如下:

CPU:

Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz

操作系统:

Ubuntu 22.04.4 LTS

一、调试环境


操作系统:Ubuntu 22.04.4 LTS

操作系统详细信息如下:

Kernel                : Linux 6.5.0-35-generic (x86_64)
Version                : #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May  7 09:00:52 UTC 2
C Library                : GNU C Library / (Ubuntu GLIBC 2.35-0ubuntu3.7) 2.35
Distribution                : Ubuntu 22.04.4 LTS

编译环境

  • Windows 工作主机通过 PuTTY 远程连接 Linux 开发主机,Linux 开发主机安装 Ubuntu 22.04 LTS 发行版本

参考【安装笔记-20240519-Windows-安装测试 PuTTY】


调试目标

将已有的软件包加入 feed 中编译生成能在 OpenWrt-23.05 固件上运行的最新版本软件包。


二、调试步骤

预置条件

1、参考【安装笔记-20240519-Windows-安装测试 PuTTY】准备好 Ubuntu 22.04 LTS 工作环境

2、下载 OpenWrt-23.05 SDK
下载链接:openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz

安装 OpenWrt 编译工具

参考 Build system setup

打开 PuTTY 终端连接开发主机

  • 在 Windows 点击 PuTTY 图标,连接开发主机,输入用户名和密码

在这里插入图片描述

安装编译工具

  • 在 PuTTY 窗口执行以下命令:
sudo apt updatesudo apt install build-essential clang flex bison g++ gawksudo apt install gettext git libncurses-dev libssl-devsudo apt install sudo apt install python3-distutils rsync unzip zlib1g-dev file wget

准备 openwrt 构建系统

下载 openwrt 构建系统

  • 进入工作目标并下载 openwrt 构建系统,执行以下命令:
cd wks/openwrtwget https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xztar Jvxf openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz

配置 openwrt 编译选项

  • 复制配置文件到 openwrt 构建系统目录,执行以下命令:
cd openwrt-sdk-23.05.3-x86-64_gcc-12.3.0_musl.Linux-x86_64cp -f feeds.conf.default feeds.conf
  • 更新软件包信息,执行以下命令:
./scripts/feeds update -a

方法一:加入已有的 feed 目录中

  • 复制 luci-app-nginx/ 目录到 feeds/luci/applications/ 目录中
cp -af ~/wks/github/luci-app-nginx ./feeds/luci/applications/
  • 更新软件包信息,执行以下命令:
./scripts/feeds update -a
./scripts/feeds install luci-app-nginx

方法二:添加自己的 feed 目录

  • 在 feeds.conf 文件中添加 mypackages 目录,内容如下:
src-git-full base https://git.openwrt.org/openwrt/openwrt.git;openwrt-23.05
src-git packages https://git.openwrt.org/feed/packages.git^063b2393cbc3e5aab9d2b40b2911cab1c3967c59
src-git luci https://git.openwrt.org/project/luci.git^b07cf9dcfc37e021e5619a41c847e63afbd5d34a
src-git routing https://git.openwrt.org/feed/routing.git^648753932d5a7deff7f2bdb33c000018a709ad84
src-git telephony https://git.openwrt.org/feed/telephony.git^86af194d03592121f5321474ec9918dd109d3057
src-link mypackages /home/hue/wks/openwrt/mypackages
  • 更新软件包信息,执行以下命令:
./scripts/feeds update mypackages
./scripts/feeds install -a -p mypackages

构建新版本 luci-app-nginx 软件包

  • 执行以下命令,开始编译:
make package/luci-app-nginx/compile V=99

最后,成功编译,画面如下:

在这里插入图片描述


运行新版本 luci-app-nginx 软件

  • 将生成的软件包文件上传到 QEMU 目标主机的 OpenWrt 系统中,运行以下命令:
opkg install luci-app-nginx_20230323_all.ipk

系统提示 nginx 软件包未安装,执行以下命令:

opkg update
opke install nginx

继续安装 luci-app-nginx 软件包,执行以下命令:

opkg install luci-app-nginx_20230323_all.ipk

安装成功,在 Windows 主机上打开浏览器,查看是否添加了新的 LuCI 控制项:

https://localhost:50443/cgi-bin/luci/admin/services/nginx/servers

在这里插入图片描述

点击 nginx 的状态页,提示“资源不可用”,检查代码,发现获取状态是通过 /usr/bin/curl 命令实现的,当前 QEMU 目标主机的 OpenWrt 运行环境中没有 curl 命令,执行以下命令:

opkg update
opkg install curl

至此, luci-app-nginx 可以正常工作。


三、应用场景

将自己的开发的软件加入 feeds 列表中


四、参考资料

1、OpenWrt Feeds
2、Including your package feed into OpenWrt build system


总结

本文介绍了在 Linux 环境下用 OpenWrt-23.05 SDK 添加自己的 feed 软件包的步骤,并指出过程中遇到的问题及解决方法。

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

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

相关文章

HTML、HTML5一览

文章目录 HTML简介标签基本标签格式化文本链接图像块级元素列表表格框架表单实体 HTML5 此篇用于优化csdn第一篇文章 HTML 简介 HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言…

数据中心的中台前端风格大屏设计开发

数据中心的中台前端风格大屏设计开发

DevOps全面综述:从概念到实践

一、背景与概述 1.1 DevOps的起源与发展 DevOps(Development and Operations的缩写)是软件工程领域中的一种文化和实践方法,旨在促进开发团队与运维团队之间的协作,从而实现更高效、更可靠的软件交付。DevOps起源于敏捷软件开发方…

深入了解 Postman 中的变量

在我们进行 API 开发和测试时,使用诸如 Postman 之类的工具可以极大地简化工作流程,提高效率。Postman 的一个强大功能就是变量(Variables)。利用变量,我们可以使我们的请求变得更加动态和灵活,避免重复输入…

猫毛过敏的克星!宠物空气净化器,铲屎官的终极武器~

现在很多人都喜欢养猫,但约有10%的人会对猫咪产生过敏反应。常见的症状包括打喷嚏、流鼻涕,严重时甚至会呼吸困难。 过敏源依附在宠物的毛发和皮屑上,通过空气传播,遍布家中的各个角落,如地面、衣物和家具。这不仅增加…

期权和股权有哪些含义?股权和期权有哪些区别?

今天带你了解期权和股权有哪些含义?股权和期权有哪些区别?股权是有限责任公司或股份有限公司股东对公司享有的人身权和财产权的综合权利。期权是指赋予持有者在特定日期或之前以固定价格购买或出售资产的权利的合同。 期权有哪些含义? 期权是…

Echarts 取消鼠标滑动时产生的竖线

文章目录 问题分析问题 当我们在坐标轴中使用多组数据时会产生如下效果,出现两根竖线,不太美观 分析 axisPointer 属性设置为 none(建议使用) 在 ECharts 中,鼠标滑动时产生的竖线是由 tooltip 组件的 axisPointer 属性控制的。要取消这一功能,可以将 tooltip 组件的 …

震惊!没想到这个国产数据库可以白嫖!

最近很多网友私信我,问我们MogDB是怎么售卖的,你们的具体策略是怎么样的? 其实这个话题我在一些微信群都已经讲过, 这里干脆来一篇公众号文章,详细说一说! MogDB是什么? MogDB是 EnMotech openG…

Python群发邮件的功能如何实现?怎么使用?

Python群发邮件需要哪些库支持?如何使用Python发信? 对于Python开发者来说,实现群发邮件功能是一项非常有用的技能,无论是用于营销、通知还是其他目的。AokSend将介绍如何使用Python来实现群发邮件的功能,让你轻松管理…

【优选算法】字符串 {相关编程题解析}

一、相关编程题 1.1 最长公共前缀 题目链接 14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 题目描述 算法原理 编写代码 // 解法一&#xff1a;两两比较 class Solution { public:string longestCommonPrefix(vector<string>& strs) {int k strs[0…

当边缘计算用在定位设备

什么是边缘计算&#xff1f; 边缘计算是个比较高大上的概念&#xff0c;在这里就不提众多官方与非官方的定义了&#xff0c;只说说自己的理解。 边缘计算就是在最靠近物理设备的使用现场&#xff0c;利用有限的硬件资源&#xff0c;完成设备层数据采集、协议转换、数据上传、…

推荐系统学习 二

双塔模型的结构 用户的特征&#xff0c;我们知道用户ID还能从用户填写的资料和用户行为中获取很多特征&#xff0c;包括离散特征和连续特征。所有这些特征不能直接输入神经网络&#xff0c;而是要先做一些处理&#xff0c;比如用embedding层把用户ID映射到一个向量 跟之前我们…

JVM学习-监控工具(三)

jconsole 从Java5开始&#xff0c;在JDK中自带的java监控和管理控制台用于对JVM中内存、线程、和类等的监控&#xff0c;是一个基本JMX(java management extendsions)的GUI性能监控工具 三种连接方式 Local&#xff1a;使用JConsole连接是一个正在本地系统运行的JVM&#xf…

mfc110u.dll丢失的解决方法,分享七个有效方法

mfc110u.dll是一个动态链接库文件&#xff0c;属于Microsoft Foundation Classes (MFC) 的一部分。它是Microsoft Visual Studio 2012编程环境中用于C应用程序开发的一个组件。 1.2 功能与作用 mfc110u.dll文件提供了一系列的预构建类和函数&#xff0c;这些类和函数使得开发…

一键式AI智能知识库-谈如何打造人性化的LLM RAG知识库的重要性

RAG系统简介 在现代的LLM RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统中&#xff0c;数据流的设计至关重要。让我们通过一个具体的例子来详细描述一个标准RAG系统的数据流。 首先&#xff0c;用户可以通过多种应用入口访问系统&#xff0c;包括PC应用、微…

无人机、机器人10公里WiFi远距离图传模块,实时高清视频传输,飞睿CV5200模组方案,支持mesh自组网模块

在快速发展的物联网时代&#xff0c;远距离无线通信技术已成为连接各种智能设备的关键。无人机、安防监控、机器人等领域对数据传输的距离和速度要求越来越高。 公里级远距离WiFi模组方案可以通过多种技术和策略的结合来实现无人机和机器人之间的高效通信传输。 飞睿智能CV52…

如何看待时间序列与机器学习?

GPT-4o 时间序列与机器学习的关联在于&#xff0c;时间序列数据是一种重要的结构化数据形式&#xff0c;而机器学习则是一种强大的工具&#xff0c;用于从数据中提取有用的模式和信息。在很多实际应用中&#xff0c;时间序列与机器学习可以结合起来&#xff0c;发挥重要作用。…

npm install报ENOENT: no such file or directory, open问题

没有进行npm的初始化操作导致的 npm init -y 再 npm install npm install

Linux编程--网络层和

1.IP协议 1.1 协议头的格式 4位版本&#xff1a;指定IP协议的版本&#xff0c;IPV4就是4。 4位首部长度&#xff1a;*4 报头的长度 [0-60] 8位服务类型&#xff1a;3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量…

中电金信:从规划到落地,中电金信全程陪伴式服务助力泛金融数字化转型

在当前的全球经济和金融发展格局中&#xff0c;金融行业正经历着一场以数字化为核心的快速转型。中国银行业和保险业已经成功探索出一条数字化转型的路径&#xff0c;并积累了丰富的实践经验。然而&#xff0c;泛金融领域则仍处于数字化转型的初期阶段&#xff0c;其转型能力因…