elogind
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
外部の情報
- bug #599470 - Gentoo トラッカーへの sys-auth/elogind 統合バグ
- News item - デスクトッププロファイルの USE デフォルトの elogind への変更