エラーメッセージ

エラーメッセージ

依存関係エラーが発生するのはなぜですか?私は何を実行するかを指定せず、以前に実行する項目のみを指定しました。しかし、依存関係のサイクルがあります。

systemdにサービスを追加しようとしましたが、ソートエラーが発生しました。

エラーメッセージ

から抜粋/var/log/boot.log

[ SKIP ] Ordering cycle found, skipping local-fs-pre.target
[ SKIP ] Ordering cycle found, skipping systemd-ask-password-plymouth.path
[ SKIP ] Ordering cycle found, skipping paths.target
[ SKIP ] Ordering cycle found, skipping cryptsetup.target
[ SKIP ] Ordering cycle found, skipping local-fs.target
[ SKIP ] Ordering cycle found, skipping local-fs-pre.target
[ SKIP ] Ordering cycle found, skipping systemd-ask-password-plymouth.path
[ SKIP ] Ordering cycle found, skipping cryptsetup.target
[ SKIP ] Ordering cycle found, skipping systemd-pcrphase-sysinit.service
[ SKIP ] Ordering cycle found, skipping local-fs.target
[ SKIP ] Ordering cycle found, skipping local-fs-pre.target
[ SKIP ] Ordering cycle found, skipping plymouth-start.service
[ SKIP ] Ordering cycle found, skipping cryptsetup.target
[ SKIP ] Ordering cycle found, skipping local-fs.target
[ SKIP ] Ordering cycle found, skipping local-fs-pre.target
[ SKIP ] Ordering cycle found, skipping systemd-ask-password-plymouth.path
[ SKIP ] Ordering cycle found, skipping cryptsetup.target
[  OK  ] Finished plymouth-read-write.service - Tell Plymouth To Write Out Runtime Data.
[  OK  ] Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.
         Starting systemd-timesyncd.service - Network Time Synchronization...
         Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...
[ SKIP ] Ordering cycle found, skipping systemd-ask-password-plymouth.path
[ SKIP ] Ordering cycle found, skipping cryptsetup.target

サービスファイル

cat ./remove-bad-yoga-keyboard-device.service

[Unit]
Description=disable the internal keyboard
Before=keyboard-setup.service 
Before=console-setup.service 
Before=systemd-user-sessions.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/local/remove-bad-yoga-keyboard-device
WorkingDirectory=/local
StandardOutput=inherit
StandardError=inherit
User=root

[Install]
WantedBy=multi-user.target

インストーラ

cat setup-disable-yoga-keyboard

#!/bin/bash
cwd="$(pwd)"
cd "$(dirname "$(realpath "$0")")"
this_dir="$(pwd)"

mkdir -p /local
cd /local
cp -t . "${this_dir}"/remove-bad-yoga-keyboard-device

cd /etc/systemd/system
cp -t . "${this_dir}"/remove-bad-yoga-keyboard-device.service

systemctl daemon-reload
systemctl enable remove-bad-yoga-keyboard-device.service

systemd-analyzeディスプレイを使用した一部のプレイでは、競合が表示されますshutdown.target。しかし、この目標を分析してみると、すべてと衝突することがわかりました。私の考えでは、シャットダウンが特別であり、アナライザがこれを理解していないようです。それはshutdown.target問題ではありません。これは私に何かという質問を残します。

もう少し試した後、ルールを削除してパスし、Before=keyboard-setup.serviceエラーsystemd-analyze verifyなしで起動しました。

しかし、依存関係エラーが発生するのはなぜですか?私は何を実行するかを指定せず、以前に実行する項目のみを指定しました。しかし、依存関係のサイクルがあります。


オペレーティングシステム:Debian GNU / Linux 12(bookworm)は /localルートパーティションのディレクトリです。

ベストアンサー1

設定が含まれていないため、自動的にいくつかの追加の依存関係が得られますDefaultDependencies=noremove-bad-yoga-keyboard-device.service

Requires=sysinit.target
After=sysinit.target
After=basic.target
Conflicts=shutdown.target
Before=shutdown.target

次の段落を参照してください基本依存関係存在するman 5 systemd.service

cryptsetup.serviceキーボードはパスワード入力を必要とする可能性があるため、システムの起動時に初期化されます。サービスを実行するように指定したので、Before=keyboard-setup.serviceサービスは実際には非常に早く配置されます。ただし、自動的に生成されたデフォルトの依存関係は、との両方を入れる必要があるため、After循環が発生します。sysinit.targetbasic.target

man 7 bootupしたがって、以前の場所に配置するサービスを作成するたびにフローチャートを研究する必要がありますbasic.targetDefaultDependencies=noこれらのサービスを追加することを忘れないでください。

おすすめ記事