This service is available only in Japanese-language.
renesasの評価ボードを使用しています。
ポート機能変更をする場合arch/arm/boot/dts/<board>.dts を変更してくださいという説明がありますがこのディレクトリはbuild/temp/以下にあって$bitbake core-image-weston後にできているものでした。
$bitbake core-image-weston後にできるファイルを変更した場合、それをイメージファイルに反映するにはどうすればよろしいのでしょうか?
また追加したパッケージ(vsftpd)のconfファイルを変更したいのですが、これも$bitbake core-image-weston後にできるディレクトリにありました。変更した後はどのようにイメージファイルへ反映するのでしょうか?
この辺の仕組みを教えていただけないでしょうか。
以上よろしくお願いいたします。
yakuhito
2020/6/24 (水) 23:36
その場で変更をおこなう手順の説明となります
回答が長くなりますので、まずは現在構築中のtmp/work 以下のファイルの編集によって、対応する方法を
説明します。
bitbake core-image-weston を実行すると、
1) bitbake は conf/bblayers.conf に記載されている各レイヤーの情報を基に、それぞれのレイヤーに含まれるレシピファイルを
認識します。
2) パラメータとして渡されたcore-image-weston のレシピの中を調べ、
・イメージレシピである
・イメージを構成するパッケージを確認
・パッケージの生成元のレシピを確認
・各レシピに記載された依存関係を確認し、構築する順番を決定する
・決定した順番に従って各レシピの構築を実施する
・core-image-westonを構成するパッケージがすべて整った段階で、パッケージを展開してターゲット向けのイメージを生成する
といった手順で、最終的にターゲットボードにインストールするイメージを作成します。
カーネルに関しては、conf/local.conf で指定されたMACHINEに関する定義ファイル BSPレイヤーの
conf/machine/[$MACHINE].conf 内で指定された、カーネルのレシピ名、バージョンで、イメージに含まれる
パッケージが生成されることになります。
vsftpd に関しては、IMAGHE_INSTALL 変数にインストールを行うパッケージとしてvsftpdが追加されている
ため、meta-openembedded/meta-networking/recipes-daemon/vsftp/ 以下のレシピの構築を行って
vsftpdのパッケージが生成されています。
A.1 デバイスツリーの変更の反映
デバイスツリーファイル(dtb)は、linux-renesasレシピで展開されるカーネルのソースコードの中にある
arch/arm/boot/dts/[MACHINE].dts ファイルを元に生成されるため、変更を行う場合は
1. arch/arm/boot/dts/[MACHINE].dts ファイルを編集する
2. bitbake linux-renesas -f -c compile を実行して、強制的に再コンパイルを行う
3. bitbake linux-renesas を実行して、2. で強制再コンパイルされたカーネル関連パッケージの再生成を行う。
この状態でbitbake core-image-weston を実行すると、生成しなおされたkernlのパッケージを使用して
イメージの生成を行います。
A.2 vsftpd.conf の置き換え
vsftpdのレシピファイルを解析すると、do_install の段階で、構築時のworkディレクトリに置かれたvsftpd.conf
ファイルをimages/etc/ 以下にインストールを行っていることを確認できます。
よって、vsftpd.conf の修正を行う場合は
1. tmp/work/[アーキテクチャ]/vsftpd/[バージョン]/vsftpd.conf を修正する
2. bitbake vsftpd -f -c install を実行して、書き換えを行ったvsftpd.conf がimageディレクトリに展開されるよう強制実行する
3. bitbake vsftpd を実行して、更新されたimageディレクトリの内容を元にパッケージの再生成を行う
この状態でbitbake core-image-weston を実行すると、生成しなおされたvsftpdのパッケージを使用して
イメージの生成を行います。
今回の変更は、tmp/work 以下の編集で対応を行っているため、新規にプロジェクトを生成したり、当該レシピに対して
bitbake -c cleanall 等を実行した場合には作業内容が消えてしまします。
この対応を継続的に使用するためには、それぞれbbappendファイルを作成し、その中でpatchファイルや.conf ファイルを
指定することで可能となります。
この手順に関しては、別コメントにて回答します。
tororoimo
2020/6/26 (金) 17:35
変更が反映されたイメージを生成できました
yakuhito様
回答ありがとうございます。
変更が反映されたイメージを生成できました。
具体的に教えていただきありがとうございます。
追加でA.1で回答いただいた内容に質問です。
「デバイスツリーファイル(dtb)は、linux-renesasレシピで展開されるカーネルのソースコードの中にあるarch/arm/boot/dts/[MACHINE].dts ファイルを元に生成されるため、」
とありますが、どこからlinux-renesasレシピと関係していると判断されたのでしょうか?
conf/bblayers.confやconf/local.conf からは読み解けませんでした。
また、継続的に対応する方法に関してもご教示いただければ幸いです。
以上よろしくお願いいたします。
yakuhito
2020/6/29 (月) 09:55
linux-renesas が特定されるのは、以下からとなります。
まず、local.conf に記載されたMACHINE= で指定されているターゲットボードを特定します。
次に、MACHINE名.conf を探します。
見つかったファイルが、当該マシンの設定ファイルとなります。
このファイルの中、またはファイルからinclude なり require で指定されたファイル内で
# Configuration for kernel
PREFERRED_PROVIDER_virtual/kernel = "linux-renesas"
といった行が見つかると思います。
同じ機能を提供する複数のレシピが存在する場合、どのレシピを使用するのか指定するのが
PREFERRED_PROVIDE_virtual/[機能名] = ”レシピ名" となります。
上記の指定は、複数あるkernelレシピの中で、このボード(マシン)は、"linux-renesas" の
レシピを使用するといった宣言となります。
tororoimo
2020/7/1 (水) 11:00
yakuhito様
yakuhito様
回答ありがとうございます。
デバイスツリーを変更したときに何故カーネルを探すのかといったところが疑問に残りますが、一般的にデバイスツリーとカーネルの関係性が理解できていないのが原因かと思いました(この辺りは社内で学習します)。
yakuhito
2020/7/1 (水) 15:07
デバイスツリーの導入はカーネルのソースツリーの肥大化に対応するため始まりました
といったいきさつが有り、デバイスツリーのソースファイルは、カーネルのソースツリーに含まれております。