Skip to content
dynamis edited this page Sep 26, 2022 · 3 revisions

ブート用 SD カードの準備

各ビルド手順に従って bitbake core-image-weston でビルドした結果の artifacts から起動用の SD カードの作成手順を説明します。

SD カードのパーティーション作成

SDカードのデバイスファイルとマウント先を仮にそれぞれ /dev/sdb および /mnt/sd とする。環境に合わせて読み替えること。

パーティションの作成 (Linux)

$ sudo apt-get install gparted
$ sudo gparted /dev/sdb
(boot領域をfat32、システム領域をext3の2パーティションに割当)

パーティーションの作成 (macOS)

# まずディスクのリストを確認してターゲット sdcard の番号を確認 (ここでは disk2 とする)
diskutil list
# 2 パーティーションを FAT32 の 200MB と残りに分割
# MBR を指定しないと GPT などとなり u-boot で認識できないことがあるので注意!
diskutil partitionDisk disk2 2 MBR FAT32 BOOT 200MB FAT32 ROOTFS 0
# 出来たパーティーションのうち ext3 or ext4 にしたいものを確認
diskutil list
# rootfs パーティーションを ext3 or ext4 でフォーマット
sudo mkfs.ext3 /dev/disk2s3

SD カードへの書き込み

SDカードにファイルをコピー (Linux)

sudo mkdir -p /mnt/boot
sudo mkdir -p /mnt/sd
sudo mount /dev/sdb1 /mnt/boot
sudo mount /dev/sdb2 /mnt/sd
# 対象ボードによってパス、ファイル名は読み替える。dtb は u-boot で指定するファイル名と一致させる
sudo cp "${WORK}/build/tmp/deploy/images/ek874/Image" /mnt/boot
sudo cp "${WORK}/build/tmp/deploy/images/ek874/Image-r8a774c0-ek874.dtb" /mnt/boot
# tar.bz2 ではなく xz ファイルの場合は tar -xJf オプションで展開する:
sudo tar -xjf "${WORK}/build/tmp/deploy/images/ek874/core-image-weston-es10-ek874.tar.bz2" -C /mnt/sd
sync
sudo umount /mnt/boot
sudo umount /mnt/sd
  • 利用ボードに合わせて DTB ファイルを選択すること。特に RZ/G2E では CPU リビジョン (U-boot 起動メッセージに表示される) が 1.0 と 1.1 で異なるファイルを指定する。U-boot で読み込むファイル名との対応にも注意。
    • RZ/G2E (cpu rev 1.0): Image-r8a774c0-es10-ek874.dtb
    • RZ/G2E (cpu rev 1.1): Image-r8a774c0-ek874.dtb
    • RZ/G2H: Image-r8a774el-hihope-rzg2h-ex.dtb
  • Ubuntu などで自動マウントすると /mnt/boot などではなく /media/username/boot などにマウントされることに注意。
  • macOS で ext3 or ext4 パーティーションの読み書きをサポートしている OSS ツールは存在しない (読み込みだけなら ext4fuse などで良い)。

Weston の設定

ボードによってはサポートしている画面解像度を指定して起動させるよう /etc/xdg/weston/weston.ini を書き換える必要がある。例えば RZ/G2E では次のような設定にすることがある (RZ/G2E 公式サポートは 1280x720 であり FullHD 表示などは問題が生じる)。

[core]
repaint-window=34
require-input=false
xwayland=true

[v4l2-renderer]
device=/dev/media0
device-module=vsp2

[output]
name=LVDS-2
mode=off

[output]
name=HDMI-A-1
mode=1280x720

WebGL2 のサポートが不要な場合は xwayland=true の指定は不要。

シリアルコンソール接続

SD カードに焼き込んだブートイメージファイルを指定する形で U-Boot の設定を変更する必要があり、これはシリアルコンソールで接続して行う必要があります。

以下、GNU/Linux で screen を使用して接続する場合の例:

screenをインストール

$ sudo apt-get install screen
$ sudo screen /dev/ttyUSB0 115200
# 問題が無ければ、実機の電源投入後にコンソールに出力が表示される。

シリアルコンソール用のケーブルは壊れやすいので注意すること。最近の macOS では OS のセキュリティ制限で /dev/tty* として認識できずシリアルコンソールに繋げないので適当な VM の Ubuntu から接続する。但し Virtualbox の Ubuntu はシリアルコンソール接続時にフリーズすることがあるなど不安定なため注意 (適当な Linux マシン用意した方が早い)。

U-Boot

多くのボードでカーネルのロードに U-Boot が使われる。よく使うコマンドのメモ:

  • print $env
    • 環境変数の表示。$env 省略すると全ての変数を表示する
  • setenv $env "key=val"
    • 変数 $env の設定
  • saveenv
    • setenv した後の結果を Flash ROM 等に記録させる