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
コメント