This service is available only in Japanese-language.

ユーザ独自のカーネルのビルドをYoctoで行う方法

ユーザ独自のカーネルのビルドをYoctoで行う方法について、以下のような観点から教えてください。
 (a) ユーザ独自のdefconfigファイルを使用して、カーネルイメージ(uImage、zImage)またはカーネルモジュールをビルドする。
 (b) ユーザ独自のDTS(Device Tree Source)を使用して、DTB(Device Tree Blob)をビルドする。

共通項目として、yocto-layer コマンドにサブコマンド createを使用して新規レイヤーを作成します。
作成されたレイヤーに、recipes-kernel/linux/ ディレクトリを作成し、ベースとなるlinuxに対するbbappend ファイルを
作成します。
defconfigの変更は、バージョンに依存しないので、linix-xxx_%.bbappend (xxxは、使用するカーネルのbbと同じ名称を使用します)
DTSの変更は、バージョンに依存する可能性があるので、linux-xxx_YYY.bbappend (xxxはカーネル名、YYYはカーネルバージョン)

(a) ユーザー独自のdefconfigを使用する
 1. bitbake カーネル名 -c menuconfig を実行して、make menuconfig と同様にコンフィグを変更します。
2. bitbake カーネル名 -c diffconfig を実行して、差分ファイルfragment.cfg を生成します。
3. fragment.cfg ファイルを、recipes-kernel/linux/linux-xxx/ ディレクトリ以下にコピーする。
 4. bbappend ファイルに、SRCURI += "file://fragment.cfg" を追加する。
 # xxx.cfgと、cfgがサフィックスに指定されたファイルは、コンフィグレーション関連のファイルとbitbakeは認識します。

(b)ユーザー独自のDTSを使用する
 新規ファイルとして、作成する場合は、conf/local.conf で指定しているmachineのconfファイル内で定義されている
 KERNEL_DEVICETREEに新規ファイルで生成されるdtsファイル名の指定が必要となります。

 1. bitbake カーネル名 -c devshell を実行してカーネルソースツリーに移動し、arch/arm/boot/dts 以下でdtsファイルを
 修正または変更をおこなう。
 2. git status を実行して、変更状況を確認する
 3. git add . を実行して、変更箇所を追加
4. git commit -m "変更理由等" を実行して、commit を実行。ここで指定した文字列がパッチファイル名に含まれます
 5. git format-patch -n HEAD^ を実行して、パッチファイルを生成
 6. 生成されたパッチファイルをrecipes-kernel/linux/linux-xxx/ ディレクトリ以下にコピーする。
 7. bbappend ファイルに、SRCURI += "file://パッチファイル名" を追加する。

追加したlayerが、conf/bblayers.confに含まれていることを確認した後、bitbake カーネル名 を実行することで、
変更が反映されたkernel や dtbファイルが生成されます。