This service is available only in Japanese-language.
自社製の独自のkernel module(abc.ko)を作成しており、この更新等の管理をapt(debパッケージでの操作)で行いたいです。
パッケージ更新や削除時、外部から操作せずとも自動的にmodule動作を止めて(rmmodして)から操作するようにしたいのですが、
レシピにはどのように記載すれば、debパッケージにそのような情報が付随するでしょうか
下記URLに類似したキーワードを使うイメージで考えています。
https://www.man7.org/linux/man-pages/man5/deb-prerm.5.html
現在のレシピは以下のとおりです。
LICENSE = "CLOSED"
DEPENDS = "virtual/kernel"
inherit module
SRC_URI = "file://.."
S = "${WORKDIR}/${PN}"
PV = "1.0"
EXTRA_OEMAKE = "ARCH=arm"
EXTRA_OEMAKE += "KERNEL_DIR=${STAGING_KERNEL_BUILDDIR}"
do_compile () {
# You will almost certainly need to add additional arguments here
oe_runmake
}
do_install () {
install -d ${D}/lib/modules/${KERNEL_VERSION}/extra
install -m 0755 ${B}/abc.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/
}
みつきん
2025/8/29 (金) 11:34
prerm処理のレシピの記述方法
本件回答します。
「bitbakeで作成するパッケージにprermのスクリプトを追加したいがレシピでどのように記述するか?」という観点での回答となります。
Yocto Projectのレシピでは、パッケージに以下のスクリプトを埋め込むことができるようになっています。(rpm,deb,ipkどれでも同じ)
* preinst
* postinst
* prerm
* postrm
レシピ中に「pkg_<script>:${PN}」とすることでスクリプトを追加できます。
prermの場合は以下のようになります。
===
pkg_prerm:${PN}() {
... 処理内容 ...
}
===
これらのスクリプトは、bitbake実行時にビルドホスト上で実行されるケースと、
ターゲット上でrpmやdpkgなどによって実行されるケースがあり、両方に対応する必要があります。
一般的には${D}を評価し、見つかった場合にはビルドホストでの実行、見つからない場合はターゲットでの実行と判断します。
===
pkg_prerm:${PN}() {
if test -n "$D"; then
... ビルドホスト上の処理 ...
else
... ターゲット上の処理 ...
fi
}
===
ターゲット上でのprermのタイミングでabc.koをアンロードする場合は以下のような実装が考えられます。
===
pkg_prerm:${PN}() {
if test -z "$D"; then
modprobe -r abc
fi
}
===
こちらは動作確認をしておりませんのでご留意ください。
以上、よろしくお願いいたします。