Freescale の Yocto を使う
blog
2019-4-1 12:42 JST

Freescale の Yocto を使う

Yocto で Linux を構築しようとすると、複数のソースからレシピ等のファイルをとってこなければなりません。Freescale では repo でその煩雑さを解決しています。

Freescale Yocto イメージを作りブートするまで

作業に先立ち、使用している Linux の Distribution で必要なツールをインストールしておきます。(もちろん、開発環境は Linux になります!!)シェルは bash を使います。(私は FreeBSD + tcsh 派なんですが)

参考の環境: Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64) サーバ

■ まずは repo のダウンロード
> bash
$ wget -O ~/bin/repo-1.X https://storage.googleapis.com/git-repo-downloads/repo
$ chmod a+x ~/bin/repo-1.X
$ ln -s -f ~/bin/repo-1.X ~/bin/repo
$ PATH=${PATH}:~/bin
■ 次にメタデータ(recipes + configuration files + classes)の取得
$ mkdir your-bsp
$ cd your-bsp
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform 
$ repo sync

必要であれば repo init 時にブランチも指定する。-b dylan など

■ MACHINE 名の設定
$ MACHINE=<machine-name> . ./setup-environment build

setup-environment は Freescale が用意しているシェルプロ。最後は結局、oe-init-build-env を呼びます。引数の build は別の名称でもよい。複数の build 環境を持つことが出来ます。oe-init-build-env の実行が終わると、自動的に build のディレクトリに移っていて、ちょっと面食らう。

デフォルトの MACHINE は imx6qsabresd 。conf/machine というキーワードでfind すれば設定可能な MACHINE を探すことが出来ます。

$ find sources/meta-fsl* -name "*.conf" | grep "conf/machine"

ここではimx6qsabresdだと思って先にするめます。

■ イメージの作成
$ bitbake <selected-image>

<selected-image> には "core-image-minimal" や "core-image-sato" を指定します。この環境でどんなレシピの選択肢があるかは show-recipes で表示可能です。

$ bitbake-layers show-recipes

作成されたイメージ等は’tmp/deploy/images の下に作成されます(tmp かよ!!)。作成されたイメージは日付ごとに次々と作成されてしまうので、自分でバージョン管理をする必要があります。

なお、ここにできたファイル群は手で消してはいけません。bitbake -c clean <TARGET> で消します。

bitbake -c clean <TARGET>

Freescale の環境の場合、なんと sdcard まで作成されるので、それをdd で SD カードに流し込んでやれば、起動用の Disk を生成することが出来ます。dd の取り扱いにはくれぐれも注意しましょう。

$ sudo dd 
    if=tmp/deploy/images/<selected image>-<select machine>.sdcard 
    of=/dev/sdX 
    bs=1M
$ sync

参考までに apt-get

http://www.openembedded.org/wiki/Getting_started に apt-get する方法がかかれています。たぶん libsdl1.2-dev はGUIを使わなければ必要ありません。もちろん X を使っていなければ xterm も必要ないでしょう。こういうapt-get一括方式はどうなんでしょうね?

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath