Buildroot 添加自定义模块-内置文件到文件系统

目录

    • 概述
    • 实现步骤
      • 1. 创建包目录和文件结构
      • 2. 配置 Config.in
      • 3. 定义 cp_bin_files.mk
      • 4. 添加源文件
        • `install.sh`
        • `my.conf`
      • 5. 配置与编译

在这里插入图片描述

概述

Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统,适用于从简单到复杂的各种嵌入式项目. buildroot的源码中buildroot/package下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk,其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。

package 目录下可以存放源码文件模块也可以使用编译好的二进制文件/图片/脚本/配置/视频等等. 以下步骤实现增加自定义模块集成脚本和配置文件到目标主机.

实现步骤

1. 创建包目录和文件结构

首先,在 Buildroot 的 package/ 目录下创建 cp_bin_files 目录,结构如下:

package/cp_bin_files/
├── Config.in
├── cp_bin_files.mk
├── install.sh
└── my.conf
  • Config.in:定义包的配置选项。
  • cp_bin_files.mk:定义构建和安装逻辑。
  • install.sh:脚本文件
  • my.conf:配置文件

2. 配置 Config.in

package/cp_bin_files/Config.in 中添加以下内容:

config BR2_PACKAGE_CP_BIN_FILESbool "cp_bin_files"helpA package to copy binary files and configurations to target directories.

然后,在 package/Config.in 中引入这个包:

source "package/cp_bin_files/Config.in"

这会让 cp_bin_files 出现在 make menuconfig 的配置菜单中。

3. 定义 cp_bin_files.mk

package/cp_bin_files/cp_bin_files.mk 中写入构建规则:

CP_BIN_FILES_VERSION = 1.0
CP_BIN_FILES_SITE = $(TOPDIR)/package/cp_bin_files
CP_BIN_FILES_SITE_METHOD = local
#CP_BIN_FILES_INSTALL_STAGING = NO
#CP_BIN_FILES_INSTALL_TARGET = YESdefine CP_BIN_FILES_INSTALL_TARGET_CMDS$(INSTALL) -D -m 0755 $(@D)/install.sh $(TARGET_DIR)/usr/bin/install.sh$(INSTALL) -D -m 0644 $(@D)/my.conf $(TARGET_DIR)/usr/etc/my.conf
endef$(eval $(generic-package))

这里:

  • CP_BIN_FILES_SITE 指向本地 package/cp_bin_files/ 目录。
  • CP_BIN_FILES_INSTALL_TARGET_CMDS 使用 $(INSTALL) 命令将文件拷贝到目标位置,并设置权限(0755 用于可执行文件,0644 用于配置文件)。

4. 添加源文件

在目录下放入需要拷贝的文件。例如:

install.sh
#!/bin/sh
echo "This is the install script."
my.conf
# My configuration file
setting1=value1
setting2=value2

5. 配置与编译

  1. 运行 make menuconfig,启用 Target packages 中的 cp_bin_files
  2. 保存配置后,执行 make 构建整个系统。
  3. 检查 output/target/,确认 /usr/bin/install.sh/usr/etc/my.conf 已正确安装。

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

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

相关文章

物联网通信应用案例之《智慧农业》

案例概述 在智慧农业方面,一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等,且数据情况可远程查看,以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…

设计模式| 观察者模式 Observer Pattern详解

目录 一、概述1.1 动机1.2 核心思想1.3 别名 二、角色与实现原理2.1 角色2.2 实现原理2.3 类图 三、经典接口实现3.1 示例3.1.1 观察者接口3.1.2 目标接口3.1.3 具体被观察者3.1.4 具体观察者3.1.5 Client3.1.6 UML时序图 3.2 特点 四、其他实现方式4.1 委托与事件(…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大,在Java 中如果想要定义一个变 量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表 示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量…

基于数据可视化学习的卡路里消耗预测分析

数据分析实操集合: 1、关于房间传感器监测数据集的探索 2、EEMD-LSTM模型择时策略 — 1.EEMD分解与LSTM模型搭建 3、EEMD-LSTM模型择时策略 — 2. 量化回测 4、国际超市电商销售数据分析 5、基于问卷调查数据的多元统计数据分析与预测(因子分析、对应分…

记录Liunx安装Jenkins时的Package ‘jenkins‘ has no installation candidate

1、确保是否安装了Java,如果没有,可通过以下命令进行安装: sudo apt update sudo apt install openjdk-21-jre2、安装Jenkins sudo apt update sudo apt install jenkins执行sudo apt install jenkins时,可能会出现 意思是&…

kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o

前言 随着deepseek的爆火,对于LLM的各种内容也逐渐步入我的视野,我个人认为,可能未来很长一段时间,AI将持续爆火,进入一段时间的井喷期,AI也会慢慢的走入我们每个家庭之中,为我们的生活提供便利…

用AI玩游戏1——狼人杀六人局

狼人杀六人局1 狼人杀六人局1,好人阵营有两个平民,一个预言家,一个守卫,坏人阵营有两个狼人。狼人每晚可以选择杀死一个人但第一天晚上不能杀人,狼人晚上可以睁眼识别到同伴和其他好人玩家但不知道他们的身份。预言家…

sqli-labs

Less-8 单引号报错,双引号显示正常 又是You are in......看来还是用盲注 布尔盲注: 如下语句是用来判断当前数据库名的第一个字母是不是s,后面的以此类推,比较复杂和麻烦 ?id1 and substr(database(),1,1)s -- 比如这个我们通…

自定义ToolbarView实战指南(Kotlin版)

一、为什么我们需要造轮子? 看到标题你可能会问:系统自带Toolbar不香吗?确实香,但遇到这些场景就抓瞎了: 设计稿要求标题栏带渐变背景动态波浪线产品经理非要搞个不对称的返回按钮布局UI设计师坚持标题和副标题要45度…

微软推出Office免费版,限制诸多,只能编辑不能保存到本地

易采游戏网2月25日独家消息:微软宣布推出一款免费的Office版本,允许用户进行基础文档编辑操作,但限制颇多,其中最引人关注的是用户无法将文件保存到本地。这一举措引发了广泛讨论,业界人士对其背后的商业策略和用户体验…

PyTorch-基础(CUDA、Dataset、transforms、卷积神经网络、VGG16)

PyTorch-基础 环境准备 CUDA Toolkit安装(核显跳过此步骤) CUDA Toolkit是NVIDIA的开发工具,里面提供了各种工具、如编译器、调试器和库 首先通过NVIDIA控制面板查看本机显卡驱动对应的CUDA版本,如何去下载对应版本的Toolkit工…

Vue2+Element实现Excel文件上传下载预览【超详细图解】

目录 一、需求背景 二、落地实现 1.文件上传 图片示例 HTML代码 业务代码 2.文件下载 图片示例 方式一:代码 方式二:代码 3.文件预览 图片示例 方式一:代码 方式二:代码 一、需求背景 在一个愉快的年后&#xff…

【Bug】natten:安装报错(临近注意力机制的高效cuda内核实现)

正常安装natten报错 pip install natten 报错 可以尝试使用以下网站进行安装 https://shi-labs.com/natten/ 可以根据自己的cuda与pytorch版本进行安装 之间复制命令即可,不需要进行任何修改

win10把c盘docker虚拟硬盘映射迁移到别的磁盘

c盘空间本身就比较小、如果安装了docker服务后,安装的时候没选择其他硬盘,虚拟磁盘也在c盘会占用很大的空间,像我的就三十多个G,把它迁移到其他磁盘一下子节约几十G 1、先输入下面命令查看 docker 状态 wsl -l -v 2、如果没有停止…

动态内容加载的解决方案:Selenium与Playwright对比故障排查实录

方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…

MaxKB上架至阿里云轻量应用服务器镜像市场

近日,MaxKB开源知识库问答系统已上架至阿里云轻量应用服务器镜像市场,目前是阿里云此类镜像市场中唯一推荐的AI应用镜像。 ▲图1 MaxKB已经上架至阿里云轻量应用服务器镜像市场 MaxKB是飞致云旗下开源项目,是一款基于大语言模型和RAG&…

蓝桥杯 2013 省 B 翻硬币

题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币&…

分享---rpc运维事故处理

事故案例03 - Qserver RPC调用大量失败 一、事故背景 Queryserver是内部的核心服务,负责处理数据查询请求并支持分布式缓存功能。为优化缓存一致性,新增了分布式锁逻辑:在查询请求命中缓存时需先获取分布式锁(基于Tair实现&…

string类详解(下)

文章目录 4. string类的模拟实现4.1 构造 析构4.2 c_str4.3 下标遍历4.4 迭代器4.5 插入4.6 删除4.7 查找4.8 赋值4.9 交换4.10 提取子串4.11 比较大小4.12 流插入 && 流提取 5. 现代版写法的String类5.1 完整代码 6. 写时拷贝(了解) 4. string…

win11本地部署deepseek大模型(安装ollama+docker+open-webui)最终实现自己的项目可通过API调用投喂数据后的模型

硬件配置:笔记本win11,内存32G,CPU锐龙7 ,无独显;只能考虑deepseek-r1:1.5b模型。 第一步:安装Ollama 此处不过多累赘了,https://ollama.com/官网选择对应的系统版本下载即可。 需要注意的是…