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

目录

    • 概述
    • 实现步骤
      • [1. 创建包目录和文件结构](#1. 创建包目录和文件结构)
      • [2. 配置 Config.in](#2. 配置 Config.in)
      • [3. 定义 cp_bin_files.mk](#3. 定义 cp_bin_files.mk)
      • [4. 添加源文件](#4. 添加源文件)
      • [5. 配置与编译](#5. 配置与编译)

概述

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

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

实现步骤

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

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

bash 复制代码
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 中添加以下内容:

bash 复制代码
config BR2_PACKAGE_CP_BIN_FILES
    bool "cp_bin_files"
    help
      A package to copy binary files and configurations to target directories.

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

bash 复制代码
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 中写入构建规则:

makefile 复制代码
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 = YES

define 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
bash 复制代码
#!/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 已正确安装。
相关推荐
皓月盈江14 分钟前
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
linux·php·web开发·phpstudy·小皮面板·集成环境·www.xp.cn
深井冰水19 分钟前
mac M2能安装的虚拟机和linux系统系统
linux·macos
leoufung1 小时前
内核内存锁定机制与用户空间内存锁定的交互分析
linux·kernel
忧虑的乌龟蛋2 小时前
嵌入式Linux I2C驱动开发详解
linux·驱动开发·嵌入式·iic·i2c·读数据·写数据
I_Scholar3 小时前
OPENSSL-1.1.1的使用及注意事项
linux·ssl
Johny_Zhao3 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm
稳联技术4 小时前
Ethercat转Profinet网关如何用“协议翻译术“打通自动化产线任督二脉
linux·服务器·网络
烟雨迷4 小时前
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
linux·服务器·学习·编辑器·vim
Bruk.Liu4 小时前
Linux 上安装RabbitMQ
linux·服务器·rabbitmq
UpUpUp……5 小时前
Linux--JsonCpp
linux·运维·服务器·c++·笔记·json