目錄
- 概述
- 實現步驟
- 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. 配置與編譯
- 運行
make menuconfig
,啟用Target packages
中的cp_bin_files
。 - 保存配置后,執行
make
構建整個系統。 - 檢查
output/target/
,確認/usr/bin/install.sh
和/usr/etc/my.conf
已正確安裝。