tshell_blog

ソフトウェアと車輪がついた乗り物のはなし

yoctoでNano Pi NEO 2用イメージをビルドする

tshell.hatenablog.com

公式イメージもいいですが,meta-allwinner-hxレイヤーというものがあるのでyoctoでNano Pi NEO 2用イメージをビルドすることができます。

環境

以下の環境を使いました。

  • ホストPC:ubuntu 18.04 LTS
  • poky warrior 2.7.1
  • meta-allwinner-hx (warrior)
  • meta-openembedded(warrior)

ビルド環境のセットアップ

meta-allwinner-hxのREADMEを見ながら ホームディレクトリの下に以下のような構成のbuild_nanopiディレクトリを作っていきます。(名前は何でもいいです)

build_nanopi/
├── flash_sd.sh
├── setup-environment.sh
└── sources
    ├── meta-allwinner-hx 
    ├── meta-openembedded
    └── poky

yocto環境は通常~/poky-warriorなどに作成されているかと思います。上記のようなフォルダ構成を実現するためにまた同じものをダウンロードしてくるのも無駄なので,sourcesディレクトリ以下はシンボリックリンクを作成します。

以下コマンドを実行していきます。

$ mkdir ~/build_nanopi
$ cd ~/build_nanopi
$ mkdir sources
$ cd sources
$ ln -s ~/poky-warrior/meta-allwinner-hx meta-allwinner-hx
$ ln -s ~/poky-warrior poky
$ ln -s ~/poky-warrior/meta-openembedded meta-openembedded

セットアップスクリプトをコピーします。

$ cd ~build_nanopi
$ cp sources/meta-allwinner-hx/scripts/setup-environment.sh .
$ cp sources/meta-allwinner-hx/scripts/flash_sd.sh .

環境変数MACHINEにnanopi-neo2を設定します。

$ export MACHINE=nanopi-neo2

setup-environment.shを実行します。

$ source ./setup-environment.sh build

以下のようにsetup-environment-append.shが見つからないというメッセージが表示されますが,buildディレクトリは正常に生成されます。

Configuring for nanopi-neo2
Searching for append setup scripts...

ls: '/home/***/build_nanopi/sources/*/setup-environment-append.sh' にアクセスできません: そのようなファイルやディレクトリはありません
These are the default supported images:
    allwinner-image

You can now build your image. To build the allwinner-image then run this:
$ bitbake allwinner-image

buildディレクトリが生成され,confディレクトリ内にlocal.confとbblayers.confが自動生成されます。
私の環境ではbitbakeのdo_fetchでダウンロードするファイルが~/poky-warrior/downloadsに入っているのでlocal.confのDL_DIRは以下のように変更しました。

DL_DIR = "${HOME}/poky-warrior/downloads"

local.confを設定したら以下のコマンドを実行するとNano Pi NEO 2用のイメージを作成できます。(bitbakeへのパスが通っている必要があります)

$ bitbake allwinner-image

microSDカードへの書き込み

イメージが作成できたらmicroSDカードへ書き込みます。
~/build_nanopiにあるflash_sd.shを使用します。flasah_sd.shからbmaptoolが呼ばれるので,まずは必要なパッケージをインストールします。

$ sudo apt-get install bmap-tools

MACHINEと書き込み先を指定して./flash_sd.shを実行します。
デフォルトでは13.8GBのイメージを書き込むようになっているため,16GB以上のmicroSDカードを用意する必要があります。

$ sudo MACHINE=nanopi-neo2 ./flash_sd.sh /dev/sdb

meta-allwinner-hxのREADMEには「デフォルトだと13.8GBのイメージを作るが,本当に必要なのは60MB弱だから中身スカスカで,bmaptoolを使えば14GBを数秒で書き込めるんだ」みたいなことが書いてありますが,ならばもっと低容量のSDに入るようにしたいですね。

作成されるイメージを小さくするにはmeta-allwinner-hx/classes/allwinner-wks-defs.incを編集し,ROOT_EXTRA_SPACEを変更してルートディレクトリの領域を小さくします。デフォルトでは10240となっていますが,1024に変更すると1.2GBくらいのイメージが作成されます。

meta-allwinner-hx/classes/allwinner-wks-defs.incのROOT_EXTRA_SPACEを以下のように変更します。

ROOT_EXTRA_SPACE ?= "1024"

起動確認

イメージを書き込んだmicroSDをNano Pi NEO 2に挿入し,LANケーブルも接続して電源を入れます。
シリアルコンソールを繋いでいない場合,Nano Pi NEO 2のIPアドレスを知るにはNmapを使ってスキャンする必要があります。
IPアドレスがわかったらSSHで接続します。

$ sudo nmap -sP 192.168.0.*
・・・
Nmap scan report for nanopi-neo2 (192.168.0.32)
・・・

$ ssh root@192.168.0.32

なんとパスワード無しでログインできました。
早めにパスワードを変えておきましょう。