[Buildroot] ローカルソースツリーを指定する

buildroot で Linux kernel や bootloader をビルドする場合、その元となるソースツリーはリポジトリから取得するか、アーカイブをダウンロードするのが一般的です。ここでは、事情によりローカルフォルダに展開されたツリーを指定することを考えます。

ここでは「[Buildroot] 外部設定ファイル(BR2_EXTERNAL)を作成する」での手順を踏襲します。

Linux, bootloader のビルド指定

前回作成した defconfig を読み込んで menuconfig を起動します。

$ cd ${HOME}/work/buildroot
$ make BR2_EXTERNAL=../br2-external hoge_rootfs_defconfig
$ make BR2_EXTERNAL=../br2-external menuconfig

今回は kernel や bootloader もビルドするので defconfig を新たに定義します。

Build options --->
    Location to save buildroot config
        $(BR2_EXTERNAL_HOGE_PATH)/configs/hoge_full_defconfig

Kernel は image 形式と devicetree を指定します。ここでは image 形式が Image.gz になるように設定しています。

devicetree はツリーにあるものを使う場合は、"In-tree Device Tree Source file names" で指定しますが、拡張子(.dts) は省略、さらに arm64 の場合はベンダーを示すベンダー名も指定します(arch/arm64/boot/dts より後ろ)。

Kernel --->
    [*] Linux Kernel
        Kernel binary format --->
            custom target
        Kernel binary format --->
             gzip compression
        Kernel image target name
             Image.gz
        Kernel image name
             Image.gz
    [*] Build a Device Tree Blob
        In-tree Device Tree Source file names

U-Boot と TF-A も default で指定しておきます。U-Boot は "Board defconfig" では 後ろの _defconfig を省略して指定、します。TF-A は fip の生成、U-Boot を BL33 とします。

Bootloaders --->
    [*] U-Boot
        Board defconfig
        Device Tree Source file paths
    [*] ARM Trusted Firmware (ATF)
        ATF platform
        [*] Build FIP image
        [*] Use U-Boot as BL33

ローカルツリーにて自前の Kernel defconfig や devicetree source を用意している場合は、こちらで上記に合わせて指定しておきます。

ローカルツリーの置き換え

ローカルツリーへのパスに置き換えるには、以下のパスを指定します。

Build options --->
    location of a package override file
        $(BR2_EXTERNAL_HOGE_PATH)/local.mk

こちらで指定したファイル(br2-external/local.mk)を作成します。このファイルにローカルツリーへのパスを記載します。

LINUX_OVERRIDE_SRCDIR=$(BR2_EXTERNAL_HOGE_PATH)/../linux
UBOOT_OVERRIDE_SRCDIR=$(BR2_EXTERNAL_HOGE_PATH)/../u-boot
ARM_TRUSTED_FIRMWARE_OVERRIDE_SRCDIR=$(BR2_EXTERNAL_HOGE_PATH)/../trusted-firmware-a

この例では、buildroot/、br2-external/ に並んで linux/、u-boot/、trusted-firmware-a/ が置いてあるものとしています。buildroot にてビルドする際には、このローカルツリーを output/build/ 以下にコピー(rsync) して使用されます。

最後に作成した defconfig を保存しておきます。

$ make BR2_EXTERNAL=../br2-external savedefconfig

コメント

タイトルとURLをコピーしました