記号 | タイトル | 公開日 |
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・・・写真参照)
┗実際の作業では、このピンを直結する作業が個人的には、一番困難だった。。。
・ボードをLinuxホストとUSB接続する。
(※注3・・・USBから給電できるように必要ならばジャンパーピンを外してショートさせているところを解除すること。)
下記のコマンドを実行することにより、ボードの初回設定は完了する。
$ sudo ./doflash.sh --spi-only
⑦SDに焼く:
下記のコマンドを実行することで、SDカードにビルドしたLinuxをデプロイできる。
$ sudo ./dosdcard.sh /dev/sdc
最後に、起動することを確認して、正常起動すれば完了である。
今回は、とりあえず、SDブートすればよかった。
無事起動した。
Yoctoでの作業は、ほとんどの場合、手作業で行うことが多かった記憶がある。
しかし、Jetsonプロジェクトでは、スクリプトが用意されていて、間違いやすい作業が自動化されているようだ。
他のボードでも、これぐらい簡単になればよいと感じる。