前園ソフトウェア開発ロゴ

前園ソフトウェア開発

 

記号 タイトル 公開日
0002 Yoctoを利用してJetson用のLinuxを制作してみる。 2023/12/31

 

 年末、暇だったので、Yoctoを用いてJetson用のLinuxを簡単に制作実験してみた。
今回は、Linuxを特別にカスタマイズする目的はない。ただ、起動さえすればよい。
その時の手順を記録しておく。多分、数週間したら忘れてしまうので、、、
Google先生に聞くと、いろいろな情報がヒットする。
この課題は、先駆者により、解決されており、先駆者たちの掲載情報をそのまま実行した。
ここに記載することは、特段新しい情報はない。

 

①基本情報:

・ボード情報:Jetson-nano devkit B01
・Linuxホスト:Kubuntu22.04LTS

 

②Linuxホストの準備:

下記のコマンドを実行することで、必要なツールをインストールする。
(※注1・・・どこかのWebページ記載そのままである。多分このままでは不十分だったように思う。
 必要に応じて適切に変更が必要だと考える。)

$ sudo apt-get update
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm binutils

 

③Yoctoのダウンロード:

下記のコマンドを実行することで、Yoctoのビルド環境をダウンロードする。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃#!/bin/sh
┃USER=user33・・・Linuxホストのユーザー名を示す。
┃YOCTO_DIR=/home/$USER/yocto-tegra
┃mkdir $YOCTO_DIR
┃export BRANCH="dunfell"・・・とりあえず、今回は、dunfellを使用した。
┃cd $YOCTO_DIR
┃git clone -b ${BRANCH} git://git.yoctoproject.org/poky.git poky
┃git clone -b ${BRANCH} https://github.com/OE4T/meta-tegra.git
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

下記コマンドにより、bitbakeを利用できるようにする。

$ cd ${YOCTO_DIR}/poky
$ source ./oe-init-build-env

 

④*.confを編集する:

・bblayers.conf・・・下記のように編集した。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
┃# changes incompatibly
┃POKY_BBLAYERS_CONF_VERSION = "2"

┃BBPATH = "${TOPDIR}"
┃BBFILES ?= ""

┃BBLAYERS ?= " \
┃ /home/user33/yocto-tegra/poky/meta \
┃  /home/user33/yocto-tegra/poky/meta-poky \
┃  /home/user33/yocto-tegra/poky/meta-yocto-bsp \
┃  /home/user33/yocto-tegra/meta-tegra \
┃  " 
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

・local.conf・・・下記を適当な所に追記した。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃MACHINE ?= "jetson-nano-devkit"

┃IMAGE_CLASSES += "image_types_tegra"
┃IMAGE_FSTYPES = "tegraflash"

┃SSTATE_DIR ?= "/home/user33/yocto/sstate_dir"
┃DL_DIR ?= "/home/user33/yocto/downloads"

┃PREFERRED_VERSION_python3 = "3.8%"
┃PREFERRED_VERSION_python3-native = "3.8%"
┃BB_NUMBER_THREADS = '6'
┃PARALLEL_MAKE = '-j6'
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

 

⓹ビルドする:

$ bitbake core-image-weston

ビルドが終了したら、下記のように、必要なデータをデプロイ作業ディレクトリに移動しておいた。

$ mkdir ~/yocto-deploy
$ cd ~/yocto-deploy
$ cp ~/yocto-tegra/poky/build/tmp/deploy/images/jetson-nano-devkit/core-image-weston-jetson-nano-devkit-*.tegraflash.tar.gz ./
$ tar -xvzf ./core-image-weston-jetson-nano-devkit-*.tegraflash.tar.gz

 

⓺ボードの初回設定をする:

LinuxホストとUSB接続して、強制リカバリーモードで起動する。具体的には、下記のように行う。
・SDスロットは空にしておくこと。
・ボードのスイッチピンの右から3番目ピンと4番目ピンを直結してショートさせる。(※注2・・・写真参照)
 ┗実際の作業では、このピンを直結する作業が個人的には、一番困難だった。。。

DSCN0366.png
・ボードをLinuxホストとUSB接続する。
(※注3・・・USBから給電できるように必要ならばジャンパーピンを外してショートさせているところを解除すること。)

下記のコマンドを実行することにより、ボードの初回設定は完了する。

$ sudo ./doflash.sh --spi-only

 

⑦SDに焼く:

下記のコマンドを実行することで、SDカードにビルドしたLinuxをデプロイできる。

$ sudo ./dosdcard.sh /dev/sdc

最後に、起動することを確認して、正常起動すれば完了である。
今回は、とりあえず、SDブートすればよかった。
無事起動した。

DSCN0368.png
Yoctoでの作業は、ほとんどの場合、手作業で行うことが多かった記憶がある。
しかし、Jetsonプロジェクトでは、スクリプトが用意されていて、間違いやすい作業が自動化されているようだ。
他のボードでも、これぐらい簡単になればよいと感じる。