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.

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

インストール

カーネル

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

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

(推奨されないことですが)万一、標準カーネル機能が手動設定になっている場合、elogind は追加で eventpoll signalfd() 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
+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
cgroup-hybrid Use hybrid cgroup hierarchy instead of unified (OpenRC's default).
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/shadow pam USE フラグを有功にしてビルドされている必要があります。この考え方は、使用している他の全てのグラフィカルログインマネージャや代替のターミナルログインプログラムにも当てはまります。この場合、それらも PAM を有功にしてビルドされている必要があります。

startx D-Bus との統合

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

ファイル ~/.xinitrc
exec dbus-run-session <WINDOW_MANAGER>

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

ヒント
この exec コマンドは、選択した WM を起動する dbus-daemon --session を実行します。この "exec" 行より後にあるコマンドは一切実行されません。

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

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

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

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

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

elogind.conf

他の自動アクションは /etc/elogind/logind.conf を介して構成することができます。例えば、ラップトップを閉じたときのサスペンドを無効化するためには、

ファイル /etc/elogind/logind.conf.d/lid.conf ラップトップを閉じたときのサスペンドを無効化する
[Login]
HandleLidSwitch=ignore

構成変更後は忘れずに loginctl をリロードしてください。

root # loginctl reload
警告
loginctl reload を使用する代わりにサービスマネージャから logind サービスを再起動すると、すべての既存のログインセッションが失われるでしょう。

使い方

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
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

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

hidepid=2 and gid=wheel として procfs をマウントする と、elogind との衝突が発生します。これを変更するには、 gid gid=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

外部の情報