web-dev-qa-db-ja.com

Yoctoは.bbappendファイルを使用して、initramfsのデフォルトのinitスクリプトの書き込みをオーバーライドします

_.bbappend_の内容を書き込むdo_install()内のステートメントがある_initramfs-live-boot_1.0.bb_に追加する_init-live.sh_ファイルを書き込もうとしています。ブート手順を管理し、ブート時に実行される初期化スクリプトinitを管理します。私の_.bbappend_ファイルの目的は、ベースの_openembedded-core_またはpoky環境を変更せずに、元の場所の代わりにコピーされる起動スクリプトの変更バージョンを参照することです。したがって、_.bbappend_ファイルとスクリプトの私のバージョンがプロジェクトディレクトリに配置され、残りの独自のレシピがビルドされます。

私の_initramfs-live-boot_1.0.bbappend_は次のようになります:

_SUMMARY = "Replacement recipe"
FILESEXTRAPATH_prepend := "${THISDIR}/files:"
SRC_URI += "file://init.sh"

do_install_append() {
        install -m 0755 ${WORKDIR}/init.sh ${D}/init
}
_

読み取り元の_.bbappend_スクリプトを含む_init.sh_ファイルと同じディレクトリにfilesフォルダーがあります。

問題は、イメージをビルドしようとすると、次のエラーが出力されることです。

_WARNING: Failed to fetch URL file://init.sh, attempting MIRRORS if available
_

次に、プロジェクトディレクトリではなく、pokyディレクトリで不足しているファイルを検索しようとします。

_.bbappend_ファイルを間違って書きましたか? _.bbappend_ファイルを使用してinitramfsスクリプトを編集するにはどうすればよいですか?

12
Shiri

_FILESEXTRAPATH_prepend := "${THISDIR}/files:"_は_FILESEXTRAPATHS_prepend := "${THISDIR}/files:"_である必要があります。 FILESEXTRAPATHSの最後のSに注意してください。

それでうまくいくはずです。

別の改善点は、ファイルファイルの名前を_init.sh_から_init-live.sh_に変更することです。つまり元の_initramfs-live-boot_ recipeのファイルと同じ名前を使用します。これにより、bbappendからdo_install_append()- functionと_SRC_URI += "file://init.sh"_を削除できます。レシピ自体があなたのためにそれらを処理します。したがって、実際に必要なのは_FILESEXTRAPATHS_prepend := "${THISDIR}/files:"_だけです。

10
Anders