buildrootノート
7597 ワード
buildroot overlaysを設定し、buildrootが自動的に生成するrootfsディレクトリの下で、overlayの下のファイルを通じてrootfsの中のファイルを自動的に上書きします.
BR 2_の設定ROOTFS_OVERLAY:
パッケージを再コンパイルする必要があります.build/パッケージ名/.stamp_タスク#タスク#
busyboxのタスクのように、再構成、削除する必要があります.stamp_configured
out_の使用of_ビルド方式
まず倉庫の外にout_を構築しますof_build/armv5te_ビルドディレクトリ
次にout_を追加しますof_build.sh内容は
実行./out_of_build.sh menuconfig後、スタートメニューを呼び出して構成するか、直接./out_of_build.sh help
at 91 sam 9261 ekを選択するなど、既存のdefconfigを表示します.defconfig
targetディレクトリを再構築するには、buildディレクトリの下で削除するだけです.rootファイルでいい、ファイルを隠す
fs/common.mkでbuidl/_を出力fakeroot.fsスクリプト、最後にmakedevsなどの機能を処理するp_w_picpath
構築ディレクトリの下
$ cat .br-external
BR2_EXTERNAL ?= 絶対パス
他のEXTERNALパスを切り替えるにはファイルを削除します
典型的なコンパイルhellowordの例
STAGINGにインストールするコマンド
インストールstagingの例
機能が選択されている場合は、「ファイルのインストール」を選択します.
$(HOST_DIR)は、構築ディレクトリのホストツールhost/usr/bin/xxxを表します.
ifでオプションを選択
マウント位置の設定
mkdir/ramfs/udisk
mkdir/ramfs/sddisk
BR_PATHは$(HOST_DIR)/usr/bin:....とうせい
HOST_MAKE_ENV
BR 2_の設定ROOTFS_OVERLAY:
Type : string
Prompt: Root filesystem overlay directories
Defined at system/Config.in:256 Location:
-> System configuration
パッケージを再コンパイルする必要があります.build/パッケージ名/.stamp_タスク#タスク#
$ ls build/busybox-1.21.1/.stamp_*
build/busybox-1.21.1/.stamp_built build/busybox-1.21.1/.stamp_downloaded build/busybox-1.21.1/.stamp_patched
build/busybox-1.21.1/.stamp_configured build/busybox-1.21.1/.stamp_extracted build/busybox-1.21.1/.stamp_target_installed
busyboxのタスクのように、再構成、削除する必要があります.stamp_configured
out_の使用of_ビルド方式
まず倉庫の外にout_を構築しますof_build/armv5te_ビルドディレクトリ
次にout_を追加しますof_build.sh内容は
#!/bin/bash
export BR_DEBUG_WRAPPER=1
export LC_ALL=C
export LANG=C
#export BUILDROOT_DL_DIR=" "
REPO_DIR=$(pwd)/../../buildroot_repos
echo "make -C ${REPO_DIR} O=$(pwd) $@"
make -C ${REPO_DIR} O=$(pwd) $@
#make manual-txt
実行./out_of_build.sh menuconfig後、スタートメニューを呼び出して構成するか、直接./out_of_build.sh help
at 91 sam 9261 ekを選択するなど、既存のdefconfigを表示します.defconfig
1.
export LC_ALL=C
export LANG=C
,
$(TOP_DIR)/toolchain/helpers.mk
echo "External toolchain uses the unsuported OABI" ;
2. $(BASE_DIR)
BR2_ROOTFS_OVERLAY="$(BASE_DIR)/overlay1 $(BASE_DIR)/overlay2"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BASE_DIR)/atmel/sama5d3ek_demo/post-build.sh"
$(TOPDIR) buildroot
BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig"
3. strip
BR2_STRIP_EXCLUDE_FILES=""
BR2_STRIP_EXCLUDE_DIRS=""
targetディレクトリを再構築するには、buildディレクトリの下で削除するだけです.rootファイルでいい、ファイルを隠す
fs/common.mkでbuidl/_を出力fakeroot.fsスクリプト、最後にmakedevsなどの機能を処理するp_w_picpath
構築ディレクトリの下
$ cat .br-external
BR2_EXTERNAL ?= 絶対パス
他のEXTERNALパスを切り替えるにはファイルを削除します
BR2_EXTERNAL , rpi-buildroot
Config.in
#--------------------------------------
menu "BR2_EXTERNAL select"
source "$BR2_EXTERNAL/package/rpi/Config.in"
endmenu
#--------------------------------------
external.mk
#--------------------------------------
#include $(BR2_EXTERNAL)/*/*.mk
include $(BR2_EXTERNAL)/package/*/*.mk
#--------------------------------------
package/rpi/Config.in $BR2_EXTERNAL Config.in
#--------------------------------------
menu "Raspberry Pi"
source "$BR2_EXTERNAL/package/rpi/rpi-config/Config.in"
source "$BR2_EXTERNAL/package/rpi/rpi-firmware/Config.in"
source "$BR2_EXTERNAL/package/rpi/rpi-userland/Config.in"
source "$BR2_EXTERNAL/package/rpi/libuv/Config.in"
endmenu
#--------------------------------------
$(PKG)_CONF_OPT configure
$(PKG)_CONF_ENV CONF_OPT,
configure
define NET_TOOLS_CONFIGURE_CMDS
(cd $(@D); yes "" | ./configure.sh config.in )
endef
STAGING
$(PKG)_INSTALL_STAGING = YES
OPKG_POST_INSTALL_TARGET_HOOKS += OPKG_CREATE_LOCKDIR
NTP_POST_PATCH_HOOKS += NTP_PATCH_FIXUPS
PKGCONF_POST_INSTALL_TARGET_HOOKS += PKGCONF_LINK_PKGCONFIG
HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_INSTALL_WRAPPER
LIBFOO_POST_DOWNLOAD_HOOKS
LIBFOO_POST_EXTRACT_HOOKS
LIBFOO_POST_RSYNC_HOOKS
LIBFOO_PRE_PATCH_HOOKS
LIBFOO_POST_PATCH_HOOKS
LIBFOO_PRE_CONFIGURE_HOOKS
LIBFOO_POST_CONFIGURE_HOOKS
LIBFOO_POST_BUILD_HOOKS
LIBFOO_POST_INSTALL_HOOKS (for host packages only)
LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only)
LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only)
LIBFOO_POST_LEGAL_INFO_HOOKS
$(TARGET_MAKE_ENV) , TARGET_AR $(@D)
define NET_TOOLS_BUILD_CMDS
$(TARGET_MAKE_ENV) AR="$(TARGET_AR)" CC="$(TARGET_CC)" \
LDFLAGS="$(NET_TOOLS_LDFLAGS)" $(MAKE) -C $(@D)
endef
$(PKG)_DEPENDENCIES += busybox
$(PKG)_CONF_ENV = \ac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
$(STAGING_DIR) <
典型的なコンパイルhellowordの例
define DEVMEM2_EXTRACT_CMDS
cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/
endef
define DEVMEM2_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) devmem2
endef
define DEVMEM2_INSTALL_TARGET_CMDS
$(INSTALL) -D $(@D)/devmem2 $(TARGET_DIR)/sbin/devmem2
endef
$(eval $(generic-package))
STAGINGにインストールするコマンド
define QWT_INSTALL_STAGING_CMDS
$(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR)
$(SED) "s%QWT_INSTALL_PREFIX = .*%QWT_INSTALL_PREFIX = $(STAGING_DIR)/usr%" \
$(STAGING_DIR)/usr/mkspecs/features/qwtconfig.pri
endef
configure
$(HOST_CONFIGURE_ARGS) \
$(HOST_CONFIGURE_OPTS
configure
$(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_OPTS)
インストールstagingの例
TSLIB_AUTORECONF = YES
TSLIB_INSTALL_STAGING = YES
TSLIB_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install
$(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \ $(if $(BR2_PACKAGE_QT_FONT_MICRO),micro) \
機能が選択されている場合は、「ファイルのインストール」を選択します.
$(PKG)_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf
$(PKG)_CONFIG_SCRIPTS = imlib2-config
$(HOST_DIR)は、構築ディレクトリのホストツールhost/usr/bin/xxxを表します.
MKFS_JFFS2 = $(HOST_DIR)/usr/sbin/mkfs.jffs2
MTD_TARGETS_UBI_$(BR2_PACKAGE_MTD_UBIUPDATEVOL) += ubiupdatevol
MTD_TARGETS_y += $(addprefix ubi-utils/,$(MTD_TARGETS_UBI_y))
MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS) += mkfs.ubifs/mkfs.ubifs
# only call make if atleast a single tool is enabled
ifneq ($(MTD_TARGETS_y),)
define MTD_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE1) CROSS=$(TARGET_CROSS) \
BUILDDIR=$(@D) WITHOUT_XATTR=1 WITHOUT_LARGEFILE=1 -C $(@D) \
$(addprefix $(@D)/,$(MTD_TARGETS_y))
endef
endif
define MTD_INSTALL_TARGET_CMDS
for f in $(MTD_TARGETS_y) ; do \
install -D -m 0755 $(@D)/$$f $(TARGET_DIR)/usr/sbin/$${f##*/} ; \
done
endef
ifでオプションを選択
PCRE_CONF_OPT += $(if $(BR2_PACKAGE_PCRE_16),--enable-pcre16,--disable-pcre16)
$(TARGET_CROSS)
to get the cross-compilation toolchain prefix $(SRCDIR)
: the path to the overridden source directory LIBFOO_POST_DOWNLOAD_HOOKS
LIBFOO_POST_EXTRACT_HOOKS
LIBFOO_POST_RSYNC_HOOKS
LIBFOO_PRE_PATCH_HOOKS
LIBFOO_POST_PATCH_HOOKS
LIBFOO_PRE_CONFIGURE_HOOKS
LIBFOO_POST_CONFIGURE_HOOKS
LIBFOO_POST_BUILD_HOOKS
LIBFOO_POST_INSTALL_HOOKS (for host packages only)
LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only)
LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only)
LIBFOO_POST_LEGAL_INFO_HOOKS
マウント位置の設定
/etc/fstab
tmpfs /ramfs tmpfs mode=1777,size=64k 0 0
mkdir/ramfs/udisk
mkdir/ramfs/sddisk
BR_PATHは$(HOST_DIR)/usr/bin:....とうせい
TARGET_MAKE_ENV=PATH=$(BR_PATH)
HOST_MAKE_ENV