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_FILES
bool "cp_bin_files"
help
A 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 = 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
#!/bin/sh
echo "This is the install script."
my.conf
# My configuration file
setting1=value1
setting2=value2
5. 配置与编译
- 运行
make menuconfig
,启用Target packages
中的cp_bin_files
。 - 保存配置后,执行
make
构建整个系统。 - 检查
output/target/
,确认/usr/bin/install.sh
和/usr/etc/my.conf
已正确安装。