読者です 読者をやめる 読者になる 読者になる

宇宙ドーナツ研究会

セキュリティ系お勉強メモ

ARM用にLinuxをビルドする

ここ を参考にした。

必要なパッケージをインストー

$ sudo yum -y groupinstall "development tools"
$ sudo yum -y install tetex gawk sqlite-devel vim-common redhat-lsb xz \
       m4 make wget curl ftp tar bzip2 gzip python-devel \
       unzip perl texinfo texi2html diffstat openjade zlib-devel \
       docbook-style-dsssl sed docbook-style-xsl docbook-dtds \
       docbook-utils bc glibc-devel pcre pcre-devel \
       groff linuxdoc-tools patch cmake \
       tcl-devel gettext ncurses apr \
       SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils \
       autoconf automake libtool xterm

poky落とす

git clone -b jethro git://git.yoctoproject.org/poky.git

バージョン2.0.3 を落とした。
最新の2.2系ではないのは、2.1 以降はhobが無くなって、代わりにtoasterとかいうのになったから。
toaster についての日本語情報は少ないので、hobでいいやという話。

buildtools 実行

こいつらが入ってないといけない。
* Git 1.7.8 以上
* tar 1.24 以上
* Python 2.7.3 以上

入ってないなら、buildtoolsを落として実行する。

# 必要なパッケージのダウンロード
wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/buildtools/poky-glibc-x86_64-buildtools-tarball-core2-64-buildtools-nativesdk-standalone-2.0.sh
source poky-glibc-x86_64-buildtools-tarball-core2-64-buildtools-nativesdk-standalone-2.0.sh

# 上記パッケージへのパスを、$PATHの先頭に追加
cd /opt/poky/2.0
source environment-setup-x86_64-pokysdk-linux

結果、一時的に python2.7やらが使えるようになる。 再起動したら元に戻るけど。

[user@yocto_lab buildtools]$ tar --version
tar (GNU tar) 1.28

[user@yocto_lab buildtools]$ git --version
git version 2.5.0

[user@yocto_lab buildtools]$ python -V
Python 2.7.9

環境変数設定スクリプト

パッケージに提供されているスクリプトを使用してシェルの環境変数を設定します。
このスクリプトを実行すると、作業ディレクトリーは build サブディレクトリーとなり、このサブディレクトリーからビルドを実行することができます。

$ cd poky 
$ . ./oe-init-build-env

ビルド設定

build/conf/local.conf にこれを追記。
local.conf は、bitbakeがビルドする時の設定を書いたもの。 ビルド並列実行数は、使ってるCPUコア数にする。

# ビルド中の作業用ディレクトリは削除する
INHERIT += "rm_work"

# アーキテクチャとしてarm64bitを指定
MACHINE ?= "qemuarm64"

# ビルドの並列実行数
BB_NUMBER_THREADS = "2"

ビルド開始

最低限の機能を持ったOSをビルドする。

bitbake core-image-minimal

ビルドしたOSを起動

runqemu 自体は、scriptディレクトリにあるスクリプト
起動後は、ユーザ名root、パスワード無しでログイン可能。

$ runqemu qemuarm64

Poky (Yocto Project Reference Distro) 2.0.3 qemuarm64 /dev/ttyAMA0
qemuarm64 login: 

終わらせる時は、shutdown -h now でいける。

ツール名について

yocto には、pokyやらbitbakeやらhobやらいろんなツールがあって関係がわかりにくい。 自分の理解だと、こんな感じ。

  • poky
    • yocto の機能を提供するパッケージ名前
    • pokyの中に、各種ツールとかが含まれてる。要は、入れ物の名前って感じ?
    • 出来上がるデフォルトのディストリビューションの名前でもある。 ちなみに、GUIを持ったフル機能なOSをビルドするレシピが、core-image-sato