RobertCNelsonn Applications Engineer
これはBeagleBoardのPocketBeagle 2に関するページです。https://www.beagleboard.org/boards/pocketbeagle-2
入手情報
ボード:
- DigiKeyのPocketBeagle 2
ケーブルほか:
- DigiKeyのRaspberry Piデバッグプローブ
キット:
- DigiKeyのTechLab
基本要件
- OS仮想化ソフトウェアを使用せず、x86 64bitベースのPC上でDebian、Fedora、Ubuntuの最新リリースがサポートされていること。
- 記載されているコマンドの多くは、/bin/bashをデフォルトのシェルとして想定すること。
- Kernel.orgクロスコンパイラ:https://mirrors.edge.kernel.org/pub/tools/crosstool/
- ブートローダは以下のとおり。
- ユニバーサルブートローダDas U-Boot:http://www.denx.de/wiki/U-Boot
- ソースファイル:https://github.com/u-boot/u-boot/
- Linuxカーネルは以下のとおり。
- arm64 ベースのrootfsは以下のとおり。
- Debian:https://www.debian.org
クロスコンパイラ:32ビットarm-linux-gnueabi-gcc
これは、一般的なlinux上で動作するGCCのビルド済み(64ビット)バージョンです。申し訳ありませんが、(32ビットの)x86ユーザーはアップグレードの時期が来ています…
ダウンロード/解凍:
#user@localhost:~$
wget -c https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/11.5.0/x86_64-gcc-11.5.0-nolibc-arm-linux-gnueabi.tar.xz
tar -xf x86_64-gcc-11.5.0-nolibc-arm-linux-gnueabi.tar.xz
export CC32=`pwd`/gcc-11.5.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-
クロスコンパイラのテスト:
#user@localhost:~$
${CC32}gcc --version
#Test Output:
arm-linux-gnueabi-gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
クロスコンパイラ:64ビットaarch64-linux-gcc
これは、一般的なlinux上で動作するGCCのビルド済み(64ビット)バージョンです。申し訳ありませんが、(32ビットの)x86ユーザーはアップグレードの時期が来ています…
ダウンロード/解凍:
#user@localhost:~$
wget -c https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/11.5.0/x86_64-gcc-11.5.0-nolibc-aarch64-linux.tar.xz
tar -xf x86_64-gcc-11.5.0-nolibc-aarch64-linux.tar.xz
export CC64=`pwd`/gcc-11.5.0-nolibc/aarch64-linux/bin/aarch64-linux-
クロスコンパイラのテスト:
#user@localhost:~$
${CC64}gcc --version
#Test Output:
aarch64-linux-gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ブートローダ
build-essentialとgit を含むいくつかのホストパッケージを事前にインストールしておき、他のすべてのビルドに利用します。
ホストパッケージの要件
#user@localhost:~$
sudo apt update ; \
sudo apt-get install -y build-essential git
ブートローダ:TIのLinuxファームウェア
システムの機能に必要なTIファームウェア:https://git.ti.com/gitweb?p=processor-firmware/ti-linux-firmware.git;a=shortlog;h=refs/heads/ti-linux-firmware
ダウンロード:
#user@localhost:~$
git clone -b 11.00.13 https://github.com/beagleboard/ti-linux-firmware.git --depth=1
ブートローダ:Trusted Firmware A
AプロファイルArm CPU用Trusted Firmware:https://git.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a.git/
ダウンロード:
#user@localhost:~$
git clone -b lts-v2.12.3 https://github.com/TrustedFirmware-A/trusted-firmware-a.git --depth=1
ビルド:
#user@localhost:~$
make -C ./trusted-firmware-a/ -j4 CROSS_COMPILE=${CC64} PLAT=k3 ARCH=aarch64 SPD=opteed TARGET_BOARD=lite K3_USART=0x6 all
ブートローダ:OP-TEE
OP-TEE(Open Portable Trusted Execution Environment):https://github.com/OP-TEE/optee_os
ホストパッケージの要件
#user@localhost:~$
sudo apt update ; \
sudo apt-get install -y python3-cryptography python3-minimal ; \
sudo apt-get install -y python3-pyelftools
ダウンロード:
#user@localhost:~$
git clone -b 4.6.0 https://github.com/OP-TEE/optee_os.git --depth=1
ビルド:
#user@localhost:~$
make -C ./optee_os/ -j4 CROSS_COMPILE=${CC32} CROSS_COMPILE64=${CC64} CFG_ARM64_core=y PLATFORM=k3-am62x CFG_WITH_SOFTWARE_PRNG=y CFG_CONSOLE_UART=0x6 all
ブートローダ:U-Boot
ユニバーサルブートローダDas U-Boot:http://www.denx.de/wiki/U-Boot
ホストパッケージの要件
#user@localhost:~$
sudo apt update ; \
sudo apt-get install -y bc bison flex libgnutls28-dev libssl-dev; \
sudo apt-get install -y python3-dev python3-jsonschema ; \
sudo apt-get install -y python3-setuptools python3-yaml ; \
sudo apt-get install -y swig uuid-dev yamllint
ダウンロード:
#user@localhost:~$
git clone -b v2025.04-pocketbeagle2 https://github.com/beagleboard/u-boot.git --depth=1
構成とビルド:Cortex-R4
#user@localhost:~$
make -C ./u-boot/ O=../CORTEXR CROSS_COMPILE=${CC32} am6232_pocketbeagle2_r5_defconfig ; \
make -C ./u-boot/ -j4 O=../CORTEXR CROSS_COMPILE=${CC32} BINMAN_INDIRS=../ti-linux-firmware/
ビルドオブジェクトのコピー:Cortex-R4
#user@localhost:~$
mkdir -p ./input/ ; \
cp -v ./CORTEXR/tiboot3-am62x-hs-fs-evm.bin ./input/
構成とビルド:Cortex-A53
#user@localhost:~$
make -C ./u-boot/ O=../CORTEXA CROSS_COMPILE=${CC64} am6232_pocketbeagle2_a53_defconfig ; \
make -C ./u-boot/ -j4 O=../CORTEXA CROSS_COMPILE=${CC64} BL31=../trusted-firmware-a/build/k3/lite/release/bl31.bin TEE=../optee_os/out/arm-plat-k3/core/tee-pager_v2.bin BINMAN_INDIRS=../ti-linux-firmware/
ビルドオブジェクトのコピー:Cortex-A53
#user@localhost:~$
cp -v ./CORTEXA/tispl.bin ./input/ ; \
cp -v ./CORTEXA/u-boot.img ./input/
Linuxカーネル
このスクリプトは、カーネル、モジュール、デバイスツリーバイナリをビルドし、デプロイディレクトリにコピーします。
ダウンロード:
#user@localhost:~$
git clone https://github.com/RobertCNelson/arm64-multiplatform ./kernelbuildscripts
cd kernelbuildscripts/
v6.14.x-arm64-k3(6.14.x)の場合は、以下のとおりです。
#user@localhost:~/kernelbuildscripts$
git checkout origin/v6.15.x-arm64-k3 -b tmp
ビルド:
#user@localhost:~/kernelbuildscripts$
./build_kernel.sh
ルートファイルシステム
Debian 12
ユーザー | パスワード |
---|---|
debian | temppwd |
ダウンロード:
#user@localhost:~$
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-12.11-minimal-arm64-2025-05-28.tar.xz
検証:
#user@localhost:~$
sha256sum debian-12.11-minimal-arm64-2025-05-28.tar.xz
#sha256sum output:
1c1683ff874a0efe130a924de67362171422132a8f5aeacc3db9214bcadcbcd2 debian-12.11-minimal-arm64-2025-05-28.tar.xz
解凍:
#user@localhost:~$
tar xf debian-12.11-minimal-arm64-2025-05-28.tar.xz
カーネルとルートファイルシステムのインストール
新しいユーザーを支援するために、カーネルのバージョンは日々変更される可能性があります。このページに掲載されているカーネルのビルドスクリプトは、どのカーネルバージョンがビルドされたかのヒントを提供します。
-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=5.X.Y-Z]
-----------------------------
この「export kernel_version=5.X.Y-Z 」を自分のビルド/デスクトップ環境に表示されている通りにコピーして貼り付け、Enterキーを押すと、後で使用する環境変数が作成されます。
export kernel_version=5.X.Y-Z
genimageを使ってルートファイルシステムを作成
マイクロSDと直接インターフェースするのではなく、genimage (https://github.com/pengutronix/genimage)ツールを使ってsdcard.imgを生成するようになりました。
ホストパッケージの要件
#user@localhost:~$
sudo apt update ; \
sudo apt-get install -y dosfstools genimage mtools
genimageの作業ディレクトリの作成
#user@localhost:~$
sudo mkdir -p ./input/.rootfs
ルートファイルシステムのコピー
#user@localhost:~$
sudo tar xfvp ./debian-*-*-arm64-*/arm64-rootfs-*.tar -C ./input/.rootfs/
sync
初回起動時のカスタマイズの有効化
#user@localhost:~$
sudo cp ./input/.rootfs/etc/bbb.io/templates/sysconf.txt ./input/
テキストエディタで ./input/sysconf.txtを開き、以下のようなユーザー設定を変更します。
- user_name=
- user_password=
- hostname=
#user@localhost:~$
sudo nano ./input/sysconf.txt
extlinux.confの設定
#user@localhost:~$
sudo sh -c "echo 'label Linux' > ./input/extlinux.conf"
sudo sh -c "echo ' kernel /Image.gz' >> ./input/extlinux.conf"
sudo sh -c "echo ' fdtdir /' >> ./input/extlinux.conf"
sudo sh -c "echo ' append console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02860000 root=/dev/mmcblk1p2 ro rootfstype=ext4 rootwait net.ifnames=0' >> ./input/extlinux.conf"
カーネルイメージのコピー
カーネルイメージ:
#user@localhost:~$
sudo cp -v ./kernelbuildscripts/deploy/${kernel_version}.Image ./input/Image.gz
カーネルDevice Treeバイナリのコピー
#user@localhost:~$
sudo mkdir -p ./input/dtbs/
sudo tar xfv ./kernelbuildscripts/deploy/${kernel_version}-dtbs.tar.gz -C ./input/dtbs/
sudo cp -v ./input/dtbs/ti/k3-am6232-pocketbeagle2.dtb ./input/k3-am6232-pocketbeagle2.dtb
カーネルモジュールのコピー
#user@localhost:~$
sudo tar xfv ./kernelbuildscripts/deploy/${kernel_version}-modules.tar.gz -C ./input/.rootfs/usr/
ファイルシステムテーブル(/etc/fstab)
#user@localhost:~/$
sudo sh -c "echo '/dev/mmcblk1p2 / auto errors=remount-ro 0 1' >> ./input/.rootfs/etc/fstab"
sudo sh -c "echo '/dev/mmcblk1p1 /boot/firmware vfat user,uid=1000,gid=1000,defaults 0 2' >> ./input/.rootfs/etc/fstab"
パーティションのサイズの確認
ルートファイルのパーティションのサイズを確認します。これを使用して、以下のシーク値を変更し、サイズを微調整することができます。
#user@localhost:~$
sudo du -sh ./input/.rootfs/
rootfs.ext4の作成
#user@localhost:~$
sudo dd if=/dev/zero of=./input/rootfs.ext4 bs=1 count=0 seek=1600M
sudo mkfs.ext4 -F ./input/rootfs.ext4 -d ./input/.rootfs/
genimageでsdcard.imgの作成
マイクロSDと直接インターフェースするのではなく、
genimage(https://github.com/pengutronix/genimage)ツールを使ってsdcard.imgを生成するようになりました。
genimage.cfgファイルの作成
#user@localhost:~$
nano genimage.cfg
#genimage.cfg
image boot.vfat {
vfat {
files = {
"tispl.bin",
"u-boot.img",
"Image.gz",
"sysconf.txt",
}
file tiboot3.bin {
image = tiboot3-am62x-hs-fs-evm.bin
}
file ti/k3-am6232-pocketbeagle2.dtb {
image = k3-am6232-pocketbeagle2.dtb
}
file extlinux/extlinux.conf {
image = extlinux.conf
}
}
size = 256M
}
image sdcard.img {
hdimage {
}
partition u-boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}
genimage.cfgでgenimageの実行
#user@localhost:~$
sudo genimage --rootpath `mktemp` --config genimage.cfg
genimageの出力
sdcard.imgは、rpi-imager(https://github.com/raspberrypi/rpi-imager)、 またはお好みのイメージ書き込みソフトウェアを使用してマイクロSDにフラッシュできます。
#user@localhost:~$
tree images/
images/
└── sdcard.img
1 directory, 1 file
最終的な微調整(rootfsパーティションの拡張)
ドライブ上の使用可能なスペースを確保するために、rootfsパーティションを拡張します。
パーティションテーブルのパーティションを拡張するためgrowpartを使用
sudo growpart /dev/mmcblk1 2
voodoo@eewiki:~$ sudo growpart /dev/mmcblk1 2
CHANGED: partition=2 start=524289 old: size=3276800 end=3801088 new: size=61809630 end=62333918
最初のリブート
sudo reboot
既存のファイルシステムを拡大するために、resize2fsを使用
sudo resize2fs /dev/mmcblk1p2
voodoo@eewiki:~$ sudo resize2fs /dev/mmcblk1p2
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mmcblk1p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/mmcblk1p2 is now 7726203 (4k) blocks long.
二度目のリブート
fsckが起動時にパーティションをチェックするため、この最後の再起動にはしばらく時間がかかります。
sudo reboot
コメント
ご質問やご意見はTechForumへお願いします。