私はyoctoを使って起動時に起動するカスタムのinitスクリプトを設定したいと思います。私はcorrect answer hereに従いました - これは私が望むのと同じです - そして私はpyroバージョンiドキュメントに記載されているようにlocal.confファイルでこれらの変数を設定起動時にyoctoを使ってinitcriptを実行する
DISTRO_FEATURES_append = "systemdに"
VIRTUAL-RUNTIME_init_manager = "systemdに"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "はsysvinit"
VIRTUAL-RUNTIME_initscripts =「」
問題がinitscript.serviceの時にシステムを起動と呼ばれていないことであると私はスクリプトにもかかわらず、/ var/log/messagesにものを見つけることができませんし、サービスファイルが転送され、システムファイルが存在します。
私もyocto
pkg_postinst_keyfile() { #where keyfile is a recipe is added to IMAGE_INSTALL_append
if [ x"$D" = "x" ]; then
logger "key file is added"
else
exit 1
fi
}
、再度のinitの代わりとして使用するには、このオプションを試したレシピが実行されるにもかかわらず、私は声明ログに「キーファイルが追加され、」見つけることができないと、Aキーファイルは、レシピから期待どおりに画像に転送されます。
正しい答えについては何か間違っていますか?私はそれが良い参照してくださいが、私は問題がどこにわからない。そして、誰かが私にVinitを使って等価なことをしっかりとした例を与えることができたら?
ターゲットマシンは "qemux86-64"
レシピです
I持っているメタmylayerと呼ばれる層、その木がある:
のconf/layer.conf
recipes-core/mylayer-initscript /(上記のリンクに記載)
件のレシピコア/画像/
のapt-画像 apt-image.bbは、私は、コア最小限とその内容
SUMMARY = "An image which add the support of using deb package management"
inherit core-image
include recipescore/images/core-image-minimal.bb
IMAGE_FEATURES += "package-management"
IMAGE_INSTALL_append = "gnupg coreutils keyfile initscript"
IMAGE_LINGUA = " "
LICENSE = "MIT"
IMAGE_ROOTFS_SIZE ?= "16192"
PACKAGE_FEED_URIS = "http://<public ip here>/my-repo/yahia-repo/expiremental \"
PACKAGE_FEED_BASE_PATHS = "deb"
PACKAGE_FEED_ARCHS = "all"
pkg_postinst_keyfile() {
if [ x"$D" = "x" ]; then
logger "key file is added"
else
exit 1
fi
}
のinitscriptレシピの上に構築された画像と、すべてのファイルがあります変更なしのリンクに記載されているものと同じです。
あなたはキーファイルレシピについて興味を持って、ここでは
#
# The goal of this recipe is to move keyFile to target machine so it can be used as public key for
# authoriztion of deb repo.
#
# Author: Yahia Farghaly
SUMMARY = "Move keyFile example to /deb_key"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://keyFile \
file://sources.list"
#to inform yocto where to package the file
FILES_${PN} += " /deb_key"
S = "${WORKDIR}"
do_install() {
install -d ${D}/deb_key
install -m 0755 keyFile ${D}/deb_key
}
されており、確かに、私はbitbakeのapt-画像
サービススクリプト
[Unit]
Description=start initscript upon first boot
[Service]
Type=simple
ExecStart=/bin/sh -c 'sleep 5 ; /usr/sbin/initscript.sh'
initスクリプトを実行する場合。時間
#!/bin/sh
logger "starting initscript"
# do some work here. Mount rootfs as rw if needed.
logger "initscript work done"
echo "hi yahia" > /deb_key/hello
私は、デフォルトまたはr-のみによってRWあるrootfsの結果yoctoのことを確認していませんか?
のinitscriptレシピ
SUMMARY = "Initial boot script"
DESCRIPTION = "Script to do any first boot init, started as a systemd service which removes itself once finished"
LICENSE = "CLOSED"
PR = "r3"
SRC_URI = " \
file://initscript.sh \
file://initscript.service \
"
inherit allarch systemd
NATIVE_SYSTEMD_SUPPORT = "1"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "initscript.service"
do_compile() {
}
do_install() {
install -d ${D}/${sbindir}
install -m 0755 ${WORKDIR}/initscript.sh ${D}/${sbindir}
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/initscript.service ${D}${systemd_unitdir}/system
}
レシピを共有できますか? – jku
実際にサービスファイルをインストールするレシピ(問題がどこにあるか分かっていた)、またはサービスファイル自体は表示されませんでした。代わりの方法としては、postinstがイメージレシピで動作するかどうかはわかりません。通常postinst関数が使用するパッケージを生成するレシピで定義されています。 – jku
@jku ok、私はそれらを入れます –