This service is available only in Japanese-language.
ユーザ独自のカーネルのビルドをYoctoで行う方法について、以下のような観点から教えてください。 (a) ユーザ独自のdefconfigファイルを使用して、カーネルイメージ(uImage、zImage)またはカーネルモジュールをビルドする。 (b) ユーザ独自のDTS(Device Tree Source)を使用して、DTB(Device Tree Blob)をビルドする。
yakuhito
2017/5/24 (水) 14:16
共通項目として、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ファイルが生成されます。
yakuhito
2017/5/24 (水) 14:16
yocto(BSP)で提供されるカーネルをベースに変更を行う場合
共通項目として、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ファイルが生成されます。