sysvinitを使用せずに(しかしsystemdを使用して)コンソールキットを使用して終了する方法

sysvinitを使用せずに(しかしsystemdを使用して)コンソールキットを使用して終了する方法

Arch Linuxシステムにsysvinitなしでsystemdをインストールしました。ただし、コンソールキット(dbusインターフェース)を使用してシャットダウン/再開することはできません。# systemctl {shutdown,reboot}うまくいきますが、コンソールキットがプロセスに接続する方法がわからないためですpid 1

答え1

ソースコードを見ると、consolekit(ck)は短いスクリプトを使用してシャットダウンと再起動を実行しているようです。これら2つのスクリプトは次のようにインストールされます。

/usr/lib/ConsoleKit/scripts/ck-system-{stop,restart}

Arch Linuxでは、{,/usr}/sbin/shutdown簡単に見つけて実行することでこれを行うことができます。

したがって、これを行うようにckを設定する方法はないようです(通常は単にいくつかのファイルを編集するだけです)/etc。回避策は簡単です。

  1. これら2つのスクリプトを編集してexecしますsystemctl {shutdown,reboot}。 (しかし、少なくともArch Linuxでは、アップグレードするたびに上書きされます。)

  2. /sbin/shutdown正しい操作を行うには、ラッパースクリプトを作成してください。 (後でsysvinitをインストールしようとすると競合が発生しますが、問題にならないことを願っています。)

また、この問題のバグレポートを探して(ない場合は作成)、将来的にはより良い方法で実行できることを願っています(実際には外部で設定するのが好きではありません/etc)。

init注:Arch Linuxには、これらのエントリ(//haltなどshutdown)をsystemctl/へのシンボリックリンクとして提供するsystemd-sysvcompatパッケージがありますsystemd

関連情報