elogind

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Elogind and the translation is 100% complete.
Other languages:

elogind は、独立したパッケージに抽出された、systemd プロジェクトの logind です。systemd 以外の init system を好み、一方で KDEGNOME のような、それ以外は systemd に深く依存する人気のソフトウェアを使いたいユーザー向けに設計されています。

インストール

カーネル

以下のカーネルオプションが推奨されます:

カーネル
General setup  --->
    [*] Control Group support  --->
File systems  --->
    [*] Inotify support for userspace

(推奨されないことですが)万一、標準カーネル機能が手動設定になっている場合、elogind は追加で eventpollsignalfd()timerfd() サポートを必要とします。ほとんどのユーザーはこれを気にする必要はありません。

USE フラグ

USE flags for sys-auth/elogind The systemd project's logind, extracted to a standalone package

+acl Add support for Access Control Lists
+cgroup-hybrid Use hybrid cgroup hierarchy instead of unified (OpenRC's default).
+pam Add support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip
+policykit Enable PolicyKit (polkit) authentication support
audit Enable support for Linux audit subsystem using sys-process/audit
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

他のパッケージで elogind サポートを有功化するための elogind グローバル USE フラグが存在します。また、衝突を避けるため、他のセッショントラッカー (systemd) のサポートは無効化することが推奨されます:

ファイル /etc/portage/make.conf
USE="elogind -systemd"
警告
elogind と systemd の同時使用はテストされておらず、推奨もされません!

Emerge

USE フラグを更新したら、システムを更新して変更を適用します:

root #emerge --ask --changed-use --deep @world

設定

サービス

elogind はブート時に開始されるように設定するべきです:

root #rc-update add elogind boot

USE="elogind" フラグを有功にして D-Bus をインストールしている場合、ブート時に elogind を開始すると dbus システムデーモンも自動的に読み込まれます。

代わりに、elogind は、(対応しているディスプレイマネージャなどの)それを必要とする最初のプログラムによって、dbus システムサービスを介してオンデマンドで開始されるようにすることもできます。

警告
デスクトップ環境で電源オフ、再起動、サスペンドなどの動作に問題がある場合、elogind を boot ランレベルに入れると elogind デーモンがユーザーのログイン前に正しく開始されるようになり、問題が解決することがあります。

さらに、pam USE フラグ付きでビルドされている場合、elogind は最初にユーザーがシステムにログインしたときに有効化されます。

警告
VT コンソールターミナルで最初に elogind を起動してセッションが有効化されるようにするためには、/bin/login を提供する sys-apps/shadowpam USE フラグを有功にしてビルドされている必要があります。この考え方は、使用している他の全てのグラフィカルログインマネージャや代替のターミナルログインプログラムにも当てはまります。この場合、それらも PAM を有功にしてビルドされている必要があります。

startx D-Bus との統合

(ディスプレイマネージャではなく) startx を使用して X サーバーを開始する場合に elogind セッションが作成されるようにするには、ユーザーの ~/.xinitrc ファイルに以下を追加します:

ファイル ~/.xinitrc
exec dbus-launch --exit-with-session <WINDOW_MANAGER>

前の例の WINDOW_MANAGERウィンドウマネージャ又は単独のアプリケーションで置き換える必要があります。

ヒント
この exec コマンドは、あなたのWMを起動する dbus-daemon --system を実行します。この "exec" 行の後にある追加のコマンドは実行されません。

サスペンド/ハイバネート 復帰/解凍 フックスクリプト

elogind を使えば話はかなり簡単になります。サスペンド/復帰とハイバネート/解凍をフックする全てのスクリプトは、/lib64/elogind/system-sleep/ ディレクトリの中に置き、$1 (pre または post) と $2 (suspendhibernate または hybrid-sleep) という変数を使用する必要があります。elogind のフックスクリプトは、例えば、以下のような形式になります:

ファイル /lib64/elogind/system-sleep/example.shelogind のフックの例
#!/bin/bash
case $1/$2 in
  pre/*)
    # サスペンド時やハイバネーション時に実行するコマンドをここに書く。
    ;;
  post/*)
    # サスペンドから再開したり、ハイバネーションから解凍された時に実行するコマンドをここに書く。
    ;;
esac

フックスクリプトを実行可能にしておくのを忘れないようにしてください:

root #chmod +x /lib64/elogind/system-sleep/example.sh

使い方

loginctl

loginctl コマンドは、ログインマネージャを制御したり分析したりするために使用されます。例えば、システムをシャットダウンしたり再起動するには:

user $loginctl poweroff
user $loginctl reboot

例えば、システムをサスペンド、ハイバネート又はハイブリッドサスペンドするには:

user $loginctl suspend
user $loginctl hibernate
user $loginctl hybrid-sleep

システムをサスペンドしてから、サスペンドされている間に一定時間非アクティブであればハイバネートするようにするには:

user $loginctl suspend-then-hibernate

ここで、ハイバネーションを遅らせる時間は /etc/elogind/logind.conf で指定できます。

トラブルシューティング

全ての機能の確認

loginctl 自体を実行すると、elogind が完全に有効化されている全てのセッション、シート、ユーザー、tty が表示されます。例:

user $loginctl
SESSION  UID USER      SEAT  TTY 
      1    0 root      seat0 tty1
      2 1000 larry     seat0 tty2
 
2 sessions listed.

GUI が読み込まれる前でも、XDG 環境変数が存在しているか確認することで同様の結果を得られるはずです。例:

user $env | grep "XDG"
XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg
XDG_SEAT=seat0
XDG_SESSION_TYPE=tty
XDG_SESSION_CLASS=user
XDG_VTNR=2
XDG_SESSION_ID=2
XDG_RUNTIME_DIR=/run/user/1000
XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share

proc で hidepid を使用する場合の衝突

hidepid=2 and gid=wheel として procfs をマウントすると、elogind との衝突が発生します。これを変更するには、gidgid=polkitd に変更する必要があります。

https://forums.gentoo.org/viewtopic-t-1099870.html のフォーラム投稿も参照してください。

PAM

pam を使用する場合、/etc への書込みを保留されている変更がないか確認してください (/etc/pam.d にある全ての衝突をマージするには、dispatch-conf を実行します。)

これら2つの /etc/pam.d ファイルの変更が適用されているか確認するには:

user $grep -r "elogind" /etc/pam.d/
/etc/pam.d/elogind-user: session optional pam_elogind.so
/etc/pam.d/system-login: -session        optional        pam_elogind.so

外部の情報