3

openembedded-classic の openembedded/bitbake レシピを書いています。私のレシピは keyutils で RDEPENDS を実行しましたが、1 つのことを除いてすべてが機能しているように見えます。そこで、レシピに以下を追加しました。

pkg_postinst_${PN} () {
  echo 'create ... more stuff ..' >> ${sysconfdir}/request-key.conf
}

ただし、意図した追加行が結果の画像にありません。update-rc.dそれが違いを生む場合、私のレシピは継承されます。

私の主な質問は次のとおりです。これをデバッグするにはどうすればよいですか? 現在、rootfs イメージ全体を作成してから、変更が表示されるかどうかを確認します。きっともっと良い方法がありますか?

更新: レシピを次のように変更しました:

pkg_postinst_${PN} () {
  echo 'create ... more stuff ...' >> ${D}${sysconfdir}/request-key.conf
}

しかし、まだ運がありません。

4

4 に答える 4

6

私の知る限り、postinstrootfs の作成時に実行され、rootfs が失敗した場合は最初の起動時にのみ実行されます。

そのため、最初の起動だけで何かを実行する簡単な方法があります。$D次のように を確認してください。

pkg_postinst_stuff() {
#!/bin/sh -e
if [ x"$D" = "x" ]; then
    # do something at first boot here
else
    exit 1
fi
}
于 2015-06-25T12:00:45.513 に答える
4

postinst スクリプトはルート時に実行されるため、 ${sysconfdir} はホストの/etc です。$D${sysconfdir} を使用して、生成される rootfs 内のファイルに書き込みます。

于 2015-06-24T11:08:16.827 に答える
0

OE-Classic はかなり古いので、本当に oe-core に更新する必要があります。

そうは言っても、postinst は最初の起動時に実行されますか? わからない。また、一時ディレクトリのレシピ作業ディレクトリを調べ、ログと実行ファイルを読んで、そこに手がかりがあるかどうかを確認します。

于 2015-06-25T11:50:19.583 に答える