Debian: BeagleBone Black入門ガイド

これはTIのCortex-A8ベースのBeagleBone Blackに関するページです。

入手情報

ボード:

電源:

ケーブル:

基本要件

補助教材

ARMのクロスコンパイラ:GCC

これは、一般的なLinux上で動作するGCCのビルド済み(64ビット)バージョンです。申し訳ありませんが、(32ビット)x86ユーザーは、アップグレードしてください・・・。
ダウンロード/解凍:

#user@localhost:~$
wget -c https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/11.3.0/x86_64-gcc-11.3.0-nolibc-arm-linux-gnueabi.tar.xz
tar -xf x86_64-gcc-11.3.0-nolibc-arm-linux-gnueabi.tar.xz
export CC=`pwd`/gcc-11.3.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-

テストクロスコンパイラ:

#user@localhost:~$
${CC}gcc --version
#Test Output:
arm-linux-gnueabi-gcc (GCC) 11.3.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.

ブートローダ:U-Boot

U-Boot – ユニバーサルブートローダ:http://www.denx.de/wiki/U-Boot
Linux Distrubutionによっては、ホストgccやその他のツールも必要になるので、Debian/Ubuntuでは、build-essential metaパッケージのインストールから始めます。
eewiki.netパッチアーカイブ:https://github.com/eewiki/u-boot-patches

#Requirements
sudo apt install bison build-essential flex swig

ダウンロード:

#user@localhost:~$
git clone -b v2022.04 https://github.com/u-boot/u-boot --depth=1
cd u-boot/

パッチ:

#user@localhost:~/u-boot$
git pull --no-edit https://git.beagleboard.org/beagleboard/u-boot.git v2022.04-bbb.io-am335x-am57xx

構成とビルド:

#user@localhost:~/u-boot$
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig
make ARCH=arm CROSS_COMPILE=${CC}

Linuxカーネル

このスクリプトは、カーネル、モジュール、デバイスツリーのバイナリをビルドし、deployディレクトリにコピーします。

メインライン

ダウンロード:

#~/
git clone https://github.com/RobertCNelson/bb-kernel ./kernelbuildscripts
cd kernelbuildscripts/

am33x-v5.4(Longterm 5.4.x)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-v5.4 -b tmp

am33x-rt-v5.4(Longterm 5.4.x + Real-Time Linux)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-rt-v5.4 -b tmp

am33x-v5.10(Longterm 5.10.x)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-v5.10 -b tmp

am33x-rt-v5.10(Longterm 5.10.x + Real-Time Linux)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-rt-v5.10 -b tmp

am33x-v5.15(Longterm 5.15.x)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-v5.15 -b tmp

am33x-rt-v5.15(Longterm 5.15.x + Real-Time Linux)用:

#user@localhost:~/kernelbuildscripts$
git checkout origin/am33x-rt-v5.15 -b tmp

ビルド:

#user@localhost:~/kernelbuildscripts$
./build_kernel.sh

TI BSP

ダウンロード:

#~/
git clone https://github.com/RobertCNelson/ti-linux-kernel-dev ./kernelbuildscripts
cd kernelbuildscripts/

TI v4.19.x用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-4.19.y -b tmp

TI v4.19.x: Real-Time用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-rt-4.19.y -b tmp

TI v5.4.x用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-5.4.y -b tmp

TI v5.4.x: Real-Time用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-rt-5.4.y -b tmp

TI v5.10.x用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-5.10.y -b tmp

TI v5.10.x: Real-Time用:

#~/kernelbuildscripts/
git checkout origin/ti-linux-rt-5.10.y -b tmp

ビルド:

#user@localhost:~/kernelbuildscripts$
./build_kernel.sh

ルートファイルシステム

Debian 11

ユーザー パスワード
debian temppwd
root root

ダウンロード:

#user@localhost:~$
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-11.5-minimal-armhf-2022-10-06.tar.xz

検証:

#user@localhost:~$
sha256sum debian-11.5-minimal-armhf-2022-10-06.tar.xz
#sha256sum output:
0ea53b23483af4bcccca53f3fd907b5e404f2f607a6577d78e8c4daf5b869ad0  debian-11.5-minimal-armhf-2022-10-06.tar.xz

解凍:

#user@localhost:~$
tar xf debian-11.5-minimal-armhf-2022-10-06.tar.xz

マイクロSDカードの設定

ターゲットデバイスに利用されるExternal Driveにアクセスする必要があります。lsblkを実行して、どのlinuxデバイスがExternal Drive用になっているかを調べてください。

#Example: for DISK=/dev/sdX
lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 465.3G  0 part /                <- Development Machine Root Partition
sdb      8:16   1   962M  0 disk                  <- microSD/USB Storage Device
└─sdb1   8:17   1   961M  0 part                  <- microSD/USB Storage Partition
#Thus you would use:
export DISK=/dev/sdb
#Example: for DISK=/dev/mmcblkX
lsblk
NAME      MAJ:MIN   RM   SIZE RO TYPE MOUNTPOINT
sda         8:0      0 465.8G  0 disk
├─sda1      8:1      0   512M  0 part /boot/efi
└─sda2      8:2      0 465.3G  0 part /                <- Development Machine Root Partition
mmcblk0     179:0    0   962M  0 disk                  <- microSD/USB Storage Device
└─mmcblk0p1 179:1    0   961M  0 part                  <- microSD/USB Storage Partition
#Thus you would use:
export DISK=/dev/mmcblk0

microSDカードのパーティションテーブル/ラベルを消去:

sudo dd if=/dev/zero of=${DISK} bs=1M count=10

ブートローダのインストール:

#user@localhost:~$
sudo dd if=./u-boot/MLO of=${DISK} count=2 seek=1 bs=128k
sudo dd if=./u-boot/u-boot-dtb.img of=${DISK} count=4 seek=1 bs=384k

パーティションレイアウトの作成:
util-linux v2.26はsfdiskが書き直され、libfdiskベースになりました。

#Check the version of sfdisk installed on your pc is atleast 2.26.x or newer.
sudo sfdisk --version
#Example Output
sfdisk from util-linux 2.27.1
#sfdisk >= 2.26.x
sudo sfdisk ${DISK} <<-__EOF__
4M,,L,*
__EOF__

パーティションのフォーマット:
mkfs.ext4 1.43では、metadata_csumと64bit ext4機能が無効であることを確認する必要があります。
このターゲットに必要なU-Bootのバージョンは、これらの新しいext4オプションのファイルの読み込みを正しく処理できないためです。

#mkfs.ext4 -V
sudo mkfs.ext4 -V
mke2fs 1.43-WIP (15-Mar-2016)
        Using EXT2FS Library version 1.43-WIP
#mkfs.ext4 >= 1.43
for: DISK=/dev/mmcblkX
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}p1
 
for: DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}1

パーティションのマウント:
ほとんどのシステムでは、これらのパーティションは自動マウントされます・・・

sudo mkdir -p /media/rootfs/
 
for: DISK=/dev/mmcblkX
sudo mount ${DISK}p1 /media/rootfs/
 
for: DISK=/dev/sdX
sudo mount ${DISK}1 /media/rootfs/

ブートローダのバックアップ

このバージョンのMLO/u-boot.imgは、本ページの「eMMC」フラッシャースクリプトで使用される予定です。

#~/
sudo mkdir -p /media/rootfs/opt/backup/uboot/
sudo cp -v ./u-boot/MLO /media/rootfs/opt/backup/uboot/
sudo cp -v ./u-boot/u-boot-dtb.img /media/rootfs/opt/backup/uboot/

カーネルとルートファイルシステムのインストール

カーネルバージョンは日々変化する可能性があるため、新しいユーザーの助けとなるように、このページに掲載されているカーネルビルディングスクリプトは、構築されたカーネルバージョンが何かというヒントを与えてくれるようになりました。

-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=5.X.Y-Z]
-----------------------------

この「export kernel_version=5.X.Y-Z」をご自身のビルド/デスクトップ環境に、正確にコピー&ペーストしてエンターキーを押すと、後で使用するための環境変数が作成されます。

export kernel_version=5.X.Y-Z

ルートファイルシステムのコピー

#Debian; Root File System: user@localhost:~$
sudo tar xfvp ./debian-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync

uname_r in /boot/uEnv.txtの設定

#user@localhost:~$
sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

カーネルイメージのコピー

カーネルイメージ:

#user@localhost:~$
sudo cp -v ./kernelbuildscripts/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

カーネルデバイスツリーバイナリのコピー

#user@localhost:~$
sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
sudo tar xfv ./kernelbuildscripts/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

カーネルモジュールのコピー

#user@localhost:~$
sudo tar xfv ./kernelbuildscripts/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

ファイルシステムテーブル(/etc/fstab)

#user@localhost:~/$
sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

ネットワーキング

Edit: /etc/network/interfaces

sudo nano /media/rootfs/etc/network/interfaces

追加:

#/etc/network/interfaces
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp

マイクロSD/SDカードの取り外し

sync
sudo umount /media/rootfs

HDMI

このセクションでは、lxde、xfce、kde、gnomeなど、お気に入りのxorgベースのウィンドウマネージャをすでにインストールしていることを前提としています。これらは、選択したウィンドウマネージャの上にインストールする必要があるパッケージと、ビデオインターフェースを正しく設定するために必要なxorg.confです。
注:カーソルがすぐに表示されない場合は、まずctlr-alt-f1を押し、次にctrl-alt-f7を押すと、表示される「はず」です。
fbdevドライバとxrandrユーティリティがインストールされていることを確認してください。

sudo apt update
sudo apt install read-edid xserver-xorg-video-fbdev x11-xserver-utils
#/etc/X11/xorg.conf
Section "Monitor"
        Identifier      "Builtin Default Monitor"
EndSection
Section "Device"
        Identifier      "Builtin Default fbdev Device 0"
        Driver          "fbdev"
EndSection
Section "Screen"
        Identifier      "Builtin Default fbdev Screen 0"
        Device          "Builtin Default fbdev Device 0"
        Monitor         "Builtin Default Monitor"
EndSection
Section "ServerLayout"
        Identifier      "Builtin Default Layout"
        Screen          "Builtin Default fbdev Screen 0"
EndSection

xrandr:

xrandr
xrandr --output HDMI-0 --mode 1024x768 --rate 60

xrandr (over serial/ssh)

xrandr -display :0.0 -q
xrandr -display :0.0 --output HDMI-0 --mode 1024x768 --rate 60

eMMC

microSDカードをeMMCにコピーするスクリプト:(以下のパッケージがインストールされている必要があります: initramfs-tools dosfstools rsync)

wget https://raw.githubusercontent.com/RobertCNelson/boot-scripts/master/tools/eMMC/bbb-eMMC-flasher-eewiki-ext4.sh
chmod +x bbb-eMMC-flasher-eewiki-ext4.sh
sudo /bin/bash ./bbb-eMMC-flasher-eewiki-ext4.sh

U-Bootオーバーレイ

完全なドキュメント: [readme|Beagleboard:BeagleBoneBlack Debian - eLinux.org]
問題点:

#Any issues run:
sudo /opt/scripts/tools/version.sh

有効化する:

#/boot/uEnv.txt
enable_uboot_overlays=1

eMMCを無効化する:

#/boot/uEnv.txt
disable_uboot_overlay_emmc=1

HDMI VIDEO & AUDIOを無効化する:

#/boot/uEnv.txt
disable_uboot_overlay_video=1

HDMI AUDIOを無効化する:

#/boot/uEnv.txt
disable_uboot_overlay_audio=1

WL1835を無効化する:

#/boot/uEnv.txt
disable_uboot_overlay_wireless=1

BB-ADCを無効化する:

#/boot/uEnv.txt
disable_uboot_overlay_adc=1

U-Boot:検出されたケープを上書きする

#/boot/uEnv.txt
uboot_overlay_addr0=<file0>.dtbo
uboot_overlay_addr1=<file1>.dtbo
uboot_overlay_addr2=<file2>.dtbo
uboot_overlay_addr3=<file3>.dtbo

U-Boot:検出されたケープのオートロードを無効にする

#/boot/uEnv.txt
disable_uboot_overlay_addr0=1
disable_uboot_overlay_addr1=1
disable_uboot_overlay_addr2=1
disable_uboot_overlay_addr3=1

U-Boot:未検出カプセルを4個以上ロードする

#/boot/uEnv.txt
uboot_overlay_addr4=<file4>.dtbo
uboot_overlay_addr5=<file5>.dtbo
uboot_overlay_addr6=<file6>.dtbo
uboot_overlay_addr7=<file7>.dtbo

U-Boot:PRUオプション(v4.19.x-ti)

#/boot/uEnv.txt
uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo

U-Boot:PRUオプション

#/boot/uEnv.txt
uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo

U-Boot:Cape Universal

#/boot/uEnv.txt
enable_uboot_cape_universal=1

コメント

ご質問やコメントなどございましたら、TechForumまでお寄せください:TechForum




オリジナル・ソース(English)