Yocto Projectの基本の振り返り

未分類

Yoctoベースの環境からあるディストリビューションのLinuxOSを作成した経験を振り返ります。

学習コストは個人的になかなかのものです。(まだ知らないこともたくさん)

初めての人は、基本をしっかり学習しながら作るとなると1~2週間はかかる感覚です。

Ubuntu や RedHat のようなディストリビューションのLinux OSを使うのではなく、

必要な機能だけを組み込んだ“自分専用、あるいは仕事においてプロジェクトに必要なのOS”を作
方法の1つが Yocto Project です。

Yocto Projectとは何か?

Yocto は Linux OS を自分で組み立てるための“調理場”のようなものです。

特徴は以下。

  • OSを構成するパッケージをレシピ(recipe)で管理
  • レイヤー(meta-xxx)を組み合わせて機能を追加
  • BitBake で OS をビルド
  • 必要な機能だけを入れた最小構成の OS を作れる

Yoctoで作れるLinux OSの種類

標準テンプレートとして以下のようなイメージが用意されています。

  • core-image-minimal(最小構成のLinux)
  • core-image-base
  • core-image-dev(開発ツール入り) 等

YoctoでUbuntuやRedHatは作れるのか?

作れません。

Yocto は既存ディストリを再現するツールではなく、 自分専用のOSを作るための仕組みだからです。

どんなときに使われる?

企業が産業機器や組み込み機器などの商品を開発するために使われることがほとんどと考えられます。

ただ自分たちで何もかも一から考えて作るのは困難なので、商用 Linux OSを購入します。

この商用Linux OSがYoctoベースで作られていることが多いです。

購入すれば自分たちでカスタマイズする環境もたいてい付属されるため、

ここでYoctoの知識が必要になってきたりします。

どうやってOSを作るの?

OSSであるboostライブラリのレシピを1つ作ってISOファイルを作成する流れをざっくりまとめます。

コマンドやファイルにも少し触れてみます。

1. Yocto のビルド環境を初期化する

2. 自分用レイヤー(meta-XXX)を作成する。

3. Boost のレシピ(boost_1.89.0.bb)を meta-custom に作成する

4. Boost を bitbake で単体ビルドする

5. Boost を OS イメージに組み込む設定を追加する

6. 最小構成の ISO をビルドする

1. Yocto のビルド環境を初期化する

Yocto の build ディレクトリを生成し、作業環境を整えるステップです。コマンド例は以下です。

  source oe-init-build-env

2. 自分用レイヤー(meta-XXX)を作成する

OSS のレシピを置くための専用レイヤーを作成します。

  bitbake-layers create-layer ../meta-custom

  • bitbake-layers create-layer ../meta-XXX でレイヤー作成
  • bitbake-layers add-layer ../meta-XXX で Yocto に登録

3. Boost のレシピファイルを作成する

OSS のダウンロード方法・ビルド方法を記述した .bb ファイルを作成します。

recipes-oss/boost/ ディレクトリを作成

boost_1.89.0.bb を作成

SRC_URI・sha256・依存関係・ビルド設定を記述

4. Boost レシピを bitbake で単体ビルドする

レシピが正しく書けているかを確認するため、まず単体ビルドします。

・bitbake boost を実行

 →tmp/work/… にビルド成果物が生成される

  .so/.a が正しくできているか確認

5. Boost を OS イメージに組み込む設定を追加する

Boost を ISO に含めるため、イメージにインストールする設定を追加します。

conf/local.conf に

 ・IMAGE_INSTALL:append = " boost" を追記

→イメージ生成時に Boost が自動で組み込まれる

6. 最小構成の ISO をビルドする

bitbake core-image-minimal を実行

→tmp/deploy/images/… に ISO が生成

 ISO 内に Boost が含まれているか確認

以上です。

コメント

タイトルとURLをコピーしました