当前位置: 首页 > news >正文

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.lryc.cn/news/544791.html

相关文章:

  • SpringBoot新闻推荐系统设计与实现
  • 领域驱动设计:事件溯源架构简介
  • 基于Java+Spring+Mybsita+mysql的汽租车辆共享平台的设计源码+设计文档
  • 深度学习的正则化深入探讨
  • Token相关设计
  • 【时序预测】在线学习:算法选择(从线性模型到深度学习解析)
  • React antd的datePicker自定义,封装成组件
  • 学生管理前端
  • 深入理解并实现自定义 unordered_map 和 unordered_set
  • 顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
  • kinova机械臂绿色灯一闪一闪及刷机方法
  • 第16天:C++多线程完全指南 - 从基础到现代并发编程
  • 中科大计算机网络原理 1.5 Internt结构和ISP
  • Windows安装sql server2017
  • 计算机网络之传输层(tcp协议)
  • 从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?
  • Open3D解决SceneWidget加入布局中消失的问题
  • 计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
  • Linux笔记---缓冲区
  • 如何流畅访问github
  • java基础+面向对象
  • Linux 检测内存泄漏方法总结
  • 本地部署deepseek大模型后使用c# winform调用(可离线)
  • Python----数据分析(Numpy:安装,数组创建,切片和索引,数组的属性,数据类型,数组形状,数组的运算,基本函数)
  • Leetcode-最大矩形(单调栈)
  • 域内委派维权
  • leetcode---LCR 140.训练计划
  • Linux基础 -- ARM 32位常用机器码(指令)整理
  • 内存中的缓存区
  • 基于 Spring Boot 的 +Vue“宠物咖啡馆平台” 系统的设计与实现