BuildrootでRaspberry Pi4Bのカスタムイメージを作る
Yoctoのビルドがうまくいかない(ファイルのFetchに失敗してしまう、異常に遅い)ので、Buildrootを試してみました。以下手順をまとめます。
Buildrootとは
Buildroot(https://buildroot.org/) は独自のLinuxシステムを作成するためのビルドシステムです。同じような目的のものとしてYoctoがありますが、YoctoよりもBuildrootのほうが処理が軽くて構造もわかりやすいと思います。OpenWRTのBuild Toolとしても利用されています。また、各社のSoCのSDKとして利用されているものもあります。
対象のアーキテクチャとしてはIntel x86系のほかにARM系(Raspberry Piなど)やRISC-V系(BeagleVなど)が指定できます。
今回はRaspberry Pi 4Bをターゲットに試してみます。
ソースコードの取得
今回は現時点(2024年3月)で最新の2024.02を用います。こちらのURL(https://buildroot.org/download.html) からファイルをダウンロードします。
以下は作業ディレクトリとしてworkを作成しています。wgetでファイルをダウンロード後、展開します。
mkdir ./work
cd work
wget https://buildroot.org/downloads/buildroot-2024.02.tar.gz
tar xvzf buildroot-2024.02.tar.gz
ターゲットの設定
カレントディレクトリを移動します。
cd buildroot-2024.02/
以下のコマンドを使い、設定できるボードの種類を確認できます。
make list-defconfigs
PCをターゲットにする場合、以下の設定を使用します。(BIOSの種類で設定が異なります)
pc_x86_64_bios_defconfig - Build for pc_x86_64_bios
pc_x86_64_efi_defconfig - Build for pc_x86_64_efi
Raspberry Piの場合、以下の設定が使用可能です。
raspberrypi0_defconfig - Build for raspberrypi0
raspberrypi0w_defconfig - Build for raspberrypi0w
raspberrypi2_defconfig - Build for raspberrypi2
raspberrypi3_64_defconfig - Build for raspberrypi3_64
raspberrypi3_defconfig - Build for raspberrypi3
raspberrypi3_qt5we_defconfig - Build for raspberrypi3_qt5we
raspberrypi4_64_defconfig - Build for raspberrypi4_64
raspberrypi4_defconfig - Build for raspberrypi4
raspberrypi_defconfig - Build for raspberrypi
raspberrypicm4io_64_defconfig - Build for raspberrypicm4io_64
raspberrypicm4io_defconfig - Build for raspberrypicm4io
raspberrypizero2w_defconfig - Build for raspberrypizero2w
今回はRaspberry Pi 4の64bitを使用しますので、以下のコマンドを実行してデフォルトの設定を読み込みます。
make raspberrypi4_64_defconfig
実行するとRaspberry Pi 4/64bit環境のデフォルト設定が読み込まれ、.configに書き込まれます。
イメージのビルド
設定が書き込めたら、一度ビルドしてみます。以下のコマンドでビルドを行います。
make
ダウンロード含めかなり時間がかかります。
ビルドが終わると、./buildroot-2024.02/outputにsdcard.imgというディスクイメージが作成されます。これをSDカードに書き込みます。
Raspberry Pi 4に今書き込んだSDカードを装着し、電源を入れます。正常にビルドされていると正常に起動し、ログインプロンプトが表示されます。rootでログインして動作を確認します。
基本的なビルド方法は以上となります。
カスタマイズは別記事で書きます。
Discussion