現在のシステムはコンソールから起動しますが、ディスプレイマネージャーを使用したくありません。
Ubuntu 13.10
に更新した後、ConsoleKit
はユーザーログインの管理に使用されなくなり、代わりにsystemd-logind
サービスが使用されることに気付きました。
Ubuntu 13.04の.xinitrc
設定は次のようになりました。
exec ck-launch-session startxfce4
ck-launch-session
により、ディスクをマウントしたり、PCをシャットダウン/リブート/サスペンドできました。
これらの機能を有効にする方法に関するドキュメントを見つけることができる唯一の場所は、 Arch Linuxのドキュメント でした。
ユーザーは最初にsystemd-logindを設定して、セッションを管理する必要があります。 systemdがシステム初期化デーモンとして実行されている場合、これはすでに発生しています。
次に、ユーザーは
~/.xinitrc
に次を入力してsystemdを起動する必要があります:/usr/lib/systemd/systemd --user
これらのコマンドは不要であるため、ユーザーは
ck-launch-session
またはdbus-launch
のインスタンスを~/.xinitrc
から削除する必要があります。
ただし、Ubuntuはupstart
ではなくsystemd
を使用しているため、構成ではできません。
同様のことをしようとしたので、これを.xinitrc
に入れました:
export DESKTOP_SESSION=xfce
init --user
そして、xfceセッションは開始しますが、ハードディスクをマウントしたり、PCを再起動、シャットダウン、およびサスペンドすることはできません。 startxfce4
を直接呼び出すのと同じです。
Xサーバーをvt01
引数(01
は現在のtty
のID)で起動すると、すべて正常に動作しますが、CTRL+C
のようなものは使用できません何かがハングした場合にサーバーを終了します。はい、killall xinit
を呼び出すなどの回避策がありますが、これで問題は解決しません。
新しいttyでXサーバーを起動した場合、新しいlogind
セッションが生成されないため、シャットダウンを実行できないと思います。 logind documentation を読んだ後、Xサーバーの起動時に新しいセッションを作成する必要があり、Xサーバーにいるときにそのセッションをアクティブとしてマークする必要があることに気付きました。これは、次のコマンドで確認できます。
loginctl show-session $XDG_SESSION_ID | grep Active
Logindドキュメントの次の行は、私を混乱させます。
CreateSession()およびReleaseSession()を使用して開閉することができますログインセッション。これらの呼び出しは、クライアントによって直接呼び出されることはありません。セッションの作成/終了は、PAMとそのpam_systemdモジュールの仕事のみです。
私の質問は、Xサーバーの起動時にPAMに新しいログインセッションを作成させるにはどうすればよいですか?
UbuntuコンソールブートとOpenboxのセットアップでこれを一晩中見てきましたが、あなたと同じ船に乗っていました。 systemdはUbuntu 13.10では完全には使用されていませんが、あなたが言ったようにConsoleKitに取って代わります。私はloginctlまで持っていて髪を引き裂きたいと思っていましたが、それから http://blog.falconindy.com/articles/back-to-basics-with-x-and-systemd.htmlを見つけました これはおやつです。
私の.xinitrcは次のとおりです-
exec dbus-launch --sh-syntax --exit-with-session openbox-session
上記のリンクでヘルパースクリプトを使用し、startxを「exec path/to/the/helper/script」としてエイリアスしました。おやつに動作し、nmアプレットもボールをプレーしています。
追伸上記のリンクが消えた場合、startxを置き換えるヘルパースクリプトを以下に示します。
#!/bin/bash
TTY=${TTY:-$(tty)}
TTY=${TTY#/dev/}
if [[ $TTY != tty* ]]; then
printf '==> ERROR: invalid TTY\n' >&2
exit 1
fi
printf -v vt 'vt%02d' "${TTY#tty}"
xinit -- "$vt" "$@"