This service is available only in Japanese-language.

自社製kernelmoduleをaptから操作する場合の考慮

自社製の独自の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/
}

本件回答します。

「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
}
===

こちらは動作確認をしておりませんのでご留意ください。

以上、よろしくお願いいたします。