GDM
GDM - GNOME Display Manager より:
- GNOME Display Manager (GDM) はグラフィカルディスプレイサーバーを管理しグラフィカルユーザーログインを処理するプログラムです。
ディスプレイマネージャは X Window System や Wayland のユーザーにグラフィカルなログインプロンプトを提供します。
目次
- 1 インストール
- 2 起動方法
- 3 設定
- 4 トラブルシューティング
- 4.1 Wayland とプロプライエタリな NVIDIA ドライバ
- 4.2 ログアウト時に GDM が動かない
- 4.3 Xorg 1.16
- 4.4 Xorg バックエンドを使う
- 4.5 GDM で黒画面に白い点滅するカーソルしか表示されない
- 4.6 手元で操作しないと GDM が起動しない
- 4.7 GDM の不完全な削除
- 4.8 GDM 自動サスペンド (GNOME 3.28)
- 4.9 GDM が Wayland を無視し、デフォルトで X.Org を使用する
- 4.10 NVidia (e)GPU が存在する場合、AMD または Intel GPU で黒い画面が表示される
- 4.11 GDM が有効にならない
- 5 参照
インストール
GDM は gdm パッケージでインストールできます。また、GDM は gnome グループに含まれています。マシンの起動時に GDM を実行するには gdm.service
を有効化してください。
GNOME 2 で使われていた旧式の GDM や設定ユーティリティを使いたい場合は gdm-oldAUR パッケージをインストールしてください。以下では基本的に旧バージョンの GDM ではなく最新の GDM について解説しています。
以下のパッケージも任意でインストールしてください:
- gdm3setup — GDM3 や自動ログインオプションを設定したり Shell テーマを変更できるインターフェイス。
起動方法
ブート時に GDM を起動するには、gdm.service
を 有効化 して下さい。
アプリケーションの自動起動
ログイン後に自動的にアプリケーションを起動するには、自動起動 にある、お使いのデスクトップ環境に関連した指示に従ってください。
設定
ログインの背景画像
まず、既存の GNOME Shell テーマをホームディレクトリに抽出する必要があります。以下のスクリプトを使ってください:
extractgst.sh
#!/bin/sh gst=/usr/share/gnome-shell/gnome-shell-theme.gresource workdir=${HOME}/shell-theme for r in `gresource list $gst`; do r=${r#\/org\/gnome\/shell/} if [ ! -d $workdir/${r%/*} ]; then mkdir -p $workdir/${r%/*} fi done for r in `gresource list $gst`; do gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/} done
それから作成されたディレクトリに移動してください。抽出されたテーマファイルが確認できるはずです。お好きな背景画像を作成されたディレクトリにコピーしてください。
次に、ディレクトリの中に以下の内容でファイルを作成する必要があります:
gnome-shell-theme.gresource.xml
<?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/org/gnome/shell/theme"> <file>calendar-arrow-left.svg</file> <file>calendar-arrow-right.svg</file> <file>calendar-today.svg</file> <file>checkbox-focused.svg</file> <file>checkbox-off-focused.svg</file> <file>checkbox-off.svg</file> <file>checkbox.svg</file> <file>close.svg</file> <file>close-window-active.svg</file> <file>close-window-hover.svg</file> <file>close-window.svg</file> <file>corner-ripple-ltr.png</file> <file>corner-ripple-rtl.png</file> <file>dash-placeholder.svg</file> <file>filter-selected-ltr.svg</file> <file>filter-selected-rtl.svg</file> <file>gnome-shell.css</file> <file>gnome-shell-high-contrast.css</file> <file>icons/message-indicator-symbolic.svg</file> <file>key-enter.svg</file> <file>key-hide.svg</file> <file>key-layout.svg</file> <file>key-shift-latched-uppercase.svg</file> <file>key-shift.svg</file> <file>key-shift-uppercase.svg</file> <file>logged-in-indicator.svg</file> <file>no-events.svg</file> <file>no-notifications.svg</file> <file>filename</file> <file>pad-osd.css</file> <file>page-indicator-active.svg</file> <file>page-indicator-checked.svg</file> <file>page-indicator-hover.svg</file> <file>page-indicator-inactive.svg</file> <file>process-working.svg</file> <file>running-indicator.svg</file> <file>source-button-border.svg</file> <file>summary-counter.svg</file> <file>toggle-off-hc.svg</file> <file>toggle-off-intl.svg</file> <file>toggle-off-us.svg</file> <file>toggle-on-hc.svg</file> <file>toggle-on-intl.svg</file> <file>toggle-on-us.svg</file> <file>ws-switch-arrow-down.png</file> <file>ws-switch-arrow-up.png</file> </gresource> </gresources>
filename は使用する背景画像のファイル名に置き換えてください。
そして、ディレクトリ内の gnome-shell.css
ファイルを開いて #lockDialogGroup
の定義を以下のように変更してください:
#lockDialogGroup { background: #2e3436 url(filename); background-size: [WIDTH]px [HEIGHT]px; background-repeat: no-repeat; }
background-size
は GDM が使用する解像度に設定します。必ずしも画像の解像度である必要はありません。ディスプレイの解像度については Wikipedia にリストがあります。filename は背景画像の名前に置き換えてください。
最後に、以下のコマンドでテーマをコンパイルします:
$ glib-compile-resources gnome-shell-theme.gresource.xml
作成された gnome-shell-theme.gresource
ファイルを /usr/share/gnome-shell
ディレクトリにコピーしてください。
GDM を再起動したら設定した背景画像が表示されるはずです (ログアウトするだけでは変更されません)。
詳しい情報は フォーラムスレッド を参照してください。
DConf による設定
GDM の設定は一部 DConf データベースに保存されます。/etc/dconf/db/gdm.d
ディレクトリにキーファイルを追加してから root で dconf update
を実行して GDM のデータベースを再コンパイルするか、あるいは GDM ユーザーでログインして gsettings コマンドラインツールを使って直接設定を変更することができます。前者の場合、GDM のプロフィールファイルが必要です。パッケージには付属していないため手動で作成する必要があります:
/etc/dconf/profile/gdm
user-db:user system-db:gdm file-db:/usr/share/gdm/greeter-dconf-defaults
後者の場合、以下のコマンドで GDM ユーザーでログインできます:
# machinectl shell gdm@
ログイン画面のロゴ
以下のキーファイルを作成してください:
/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen] logo='/path/to/logo.png'
その後 GDM データベースを再コンパイルしてください。
もしくは GDM ユーザーでログインして以下のコマンドを実行してください:
$ gsettings set org.gnome.login-screen logo '/path/to/logo.png'
カーソルテーマの変更
GDM は GNOME のカーソルテーマの設定を使用せず、XDG の仕様に準拠して設定されたカーソルテーマも無視します。GDM で使用されるカーソルテーマを変更するには、以下のキーファイルを作成してください:
/etc/dconf/db/gdm.d/10-cursor-settings
[org/gnome/desktop/interface] cursor-theme='theme-name'
その後 GDM データベースを再コンパイルしてください。
もしくは GDM ユーザーでログインして以下のコマンドを実行してください:
$ gsettings set org.gnome.desktop.interface cursor-theme 'theme-name'
アイコンテーマの変更
アイコンのテーマを変更する場合も、同じ方法で行うことができます。以下のキーファイルを作成します。
/etc/dconf/db/gdm.d/11-icon-settings
[org/gnome/desktop/interface] icon-theme='theme-name'
その後、GDM データベースを再コンパイルします。または、以下を実行して GDM ユーザに一時的にログインし、アイコンテーマを変更します。
$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.interface icon-theme 'theme-name'
ログイン画面のフォントを大きくする
画面右上のアクセシビリティアイコン (白丸に人影のアイコン) をクリックして Large Text オプションにチェックを入れてください。
スケーリングファクタを指定したい場合、以下のキーファイルを作成してください:
/etc/dconf/db/gdm.d/03-scaling
[org/gnome/desktop/interface] text-scaling-factor='1.25'
その後 GDM データベースを再コンパイルしてください。
もしくは GDM ユーザーでログインして以下のコマンドを実行してください:
$ gsettings set org.gnome.desktop.interface text-scaling-factor '1.25'
サウンドをオフにする
以下の設定をするとログイン画面でシステム音量を (キーボードで) 変更したときに音が鳴らなくなります。
以下のキーファイルを作成してください:
/etc/dconf/db/gdm.d/04-sound
[org/gnome/desktop/sound] event-sounds='false'
その後 GDM データベースを再コンパイルしてください。
もしくは GDM ユーザーでログインして以下のコマンドを実行してください:
$ gsettings set org.gnome.desktop.sound event-sounds 'false'
電源ボタンの挙動の設定
以下のキーファイルを作成してください:
/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power] power-button-action='action'
その後 GDM データベースを再コンパイルしてください。もしくは GDM ユーザーでログインして以下のコマンドを実行:
$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'
action には nothing
, suspend
, hibernate
のどれかを指定します。
タップでクリックを有効化
デフォルトでは GDM (と GNOME) ではタップでクリックが無効になっています。dconf の設定で簡単に有効化できます。
直接タップでクリックを有効にするには、以下のコマンドを使用:
# sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
GUI で設定したい場合、以下のコマンドを使用:
# sudo -u gdm dconf-editor
正しく設定されたか確認するには、以下のコマンドを使用:
$ sudo -u gdm gsettings get org.gnome.desktop.peripherals.touchpad tap-to-click
dconf-WARNING **: failed to commit changes to dconf: Error spawning command line
というエラーが表示されるときは、dbus が実行されているか確認してください:
$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
アクセシビリティメニューの無効化・有効化
アクセシビリティメニューを無効化・有効化したいときは、dconf エディタでキーを設定してください:
# machinectl shell gdm@ # gsettings set org.gnome.desktop.interface toolkit-accessibility false # exit
キーが false の場合はメニューが無効、true の場合は有効になります。
GDM で夜間モードを有効にする
GDM で 夜間モード を有効にするには、以下を実行します。
$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
を設定します。
GDM キーボードレイアウト
システムのキーボードレイアウトが GDM にも適用されます。Xorg でのキーボード設定#X の設定ファイルを使うを見てください。
GNOME Control Center
ユーザーが複数存在する場合、システムのキーボードレイアウト以外のレイアウトを GDM で指定することができます。gnome-control-center パッケージがインストールされている場合、グラフィカルフロントエンドを使ってキーボードレイアウトを設定できます。gnome-control-center を起動して Keyboard -> Input Sources を開いてください。そして、ヘッダーバーにある Login Screen ボタンを押して GDM のキーボードレイアウトを設定してください。ユーザーが一人しかいない場合は Login Screen ボタンは表示されません [4]。
GDM 2.x レイアウト
旧バージョンの GDM では ~/.dmrc
を編集してください:
~/.dmrc
[Desktop] Language=de_DE.UTF-8 # change to your default lang Layout=de nodeadkeys # change to your keyboard layout
言語の変更
システムの言語が GDM にも適用されます。ユーザーが複数存在する場合、GDM の言語をシステム言語以外に設定することができます。GDM の言語を変更するには、gnome-control-center をインストールしてください。そして、gnome-control-center を起動して Region & Language を選択してください。ヘッダーバーにある Login Screen ボタンをクリックしてください。最後に Language をクリックしてリストから言語を選択してください。root パスワードが要求されます。システム上に複数のユーザーが存在しないと Login Screen ボタンは表示されないので注意してください [5]。
ユーザーとログイン
自動ログイン
GDM で自動ログインを有効にするには、以下を /etc/gdm/custom.conf
に追加してください。(username
を自分のものに置き換えてください)
/etc/gdm/custom.conf
# Enable automatic login for user [daemon] AutomaticLogin=username AutomaticLoginEnable=True
または、遅延を伴う自動ログインの場合。
/etc/gdm/custom.conf
[daemon] TimedLoginEnable=true TimedLogin=username TimedLoginDelay=1
自動ログインに使用するセッションを設定できます(gnome-xorg
を任意のセッションに置き換えてください)
/var/lib/AccountsService/users/username
XSession=gnome-xorg
パスワードなしログイン
GDM のパスワードプロンプトを飛ばしたいのならば次の行を /etc/pam.d/gdm-password
の一番最初に追加してください:
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
次に、グループ nopasswdlogin
をシステムに追加してください。グループの説明と管理コマンドについてはグループを見てください。
そして、あなたのユーザーを nopasswdlogin
に加えればユーザー名をクリックするだけでログインできるようになるはずです。
パスワードなしシャットダウン
GDM はシャットダウンの権限を取得するために polkit と logind を使っています。以下を設定することでパスワードを入力することなくシャットダウンできるようになります:
/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "https://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd"> <policyconfig> <action id="org.freedesktop.login1.power-off-multiple-sessions"> <description>Shutdown the system when multiple users are logged in</description> <message>System policy prevents shutting down the system when other users are logged in</message> <defaults> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> </policyconfig>
利用可能な logind のオプション (例: reboot-multiple-sessions) の全ては ここ に載っています。
GDM セッションの追加と編集
ディスプレイマネージャ#セッション設定を見てください。
GDM の root ログインを有効にする
root でログインすることは推奨されていませんが、どうしても必要ならば /etc/pam.d/gdm-password
を編集して auth required pam_deny.so
の前に以下の行を追加してください:
/etc/pam.d/gdm-password
auth sufficient pam_succeed_if.so uid eq 0 quiet
ファイルは以下のようになるはずです:
/etc/pam.d/gdm-password
... auth sufficient pam_succeed_if.so uid eq 0 quiet auth sufficient pam_succeed_if.so uid >= 1000 quiet auth required pam_deny.so ...
root でログインするには GDM を再起動する必要があります。
ログインリストのユーザーを非表示にする
GDM のユーザーリストに表示されるユーザーは AccountsService で決められています。システムユーザー (UID < 1000) は自動的に非表示になります。通常ユーザーもログインリストに表示しないようにするには /var/lib/AccountsService/users/
に隠したいユーザーの名前を付けたファイルを作成・編集して中身を以下のようにしてください:
/var/lib/AccountsService/users/<username>
[User] SystemAccount=true
デフォルトのモニター設定
デスクトップ環境によってはディスプレイの設定は ~/.config/monitors.xml
に保存されます。ファイルの内容を元に xrandr コマンドが生成されます。GDM は同じように設定を /var/lib/gdm/.config/monitors.xml
ファイルに保存します。
~/.config/monitors.xml
でモニターの設定 (モニターの方向やプライマリモニターの設定など) を行っている場合、GDM も同じ設定を使うようにするには以下のコマンドを実行:
# cp ~/.config/monitors.xml /var/lib/gdm/.config/monitors.xml
変更はログアウトしたら適用されます。GDM は xorg.conf
を使用しないためログアウトが必要です。
X サーバーのアクセス権限を設定
xhost
コマンドを使うことで X サーバーのアクセス権限を設定できます。
例えば、GDM に X サーバーのアクセス権限を与えるには、以下のコマンドを使います:
# xhost +SI:localuser:gdm
トラブルシューティング
Wayland とプロプライエタリな NVIDIA ドライバ
GDM は、Wayland モードでプロプライエタリな NVIDIA ドライバではうまく動作しません。このドライバを使う場合、GDM は Xorg を代わりに使います。[6]
Wayland を強制的に有効にするには、GDM で Wayland を無効にする udev ルールを無効にします。
# ln-s/dev/null/etc/udev/rules.d/61 gdm.rules
GDM の代わりに黒い画面が表示される場合は、コンピュータの BIOS 設定で内蔵グラフィックスを無効にしてみてください。
ログアウト時に GDM が動かない
起動時には GDM が問題なく立ち上がるのに、ログアウトした後に問題が発生する場合は、次の行を /etc/gdm/custom.conf
の daemon セクションに追加してみて下さい:
GdmXserverTimeout=60
Xorg 1.16
Xorg#Rootless Xorg (v1.16) を見て下さい。
Xorg バックエンドを使う
GDM バージョン 3.16 から、デフォルトで Wayland バックエンドが使われるようになっており、Wayland バックエンドで起動できない場合にのみ Xorg バックエンドが使われます。ユーザーによっては Wayland バックエンドで問題が発生しているという 報告 があり、場合によっては Xorg バックエンドの使用が必要なことがあります。デフォルトで Xorg バックエンドを使用させるには、/etc/gdm/custom.conf
ファイルを編集して以下の行をアンコメントしてください:
#WaylandEnable=false
GDM で黒画面に白い点滅するカーソルしか表示されない
起動後に、左上に白い点滅するカーソルだけの黒い画面を GDM が表示することがあります。これはグラフィックドライバーが完全に初期化される前に GDM が起動してしまうことが原因です。解決方法のひとつは KMS を初期段階で起動するように設定することです。また、別の解決方法として systemd サービスを編集してタイプを "idle" に設定する、あるいは遅延時間を追加する方法もあります:
[Service] Type=idle
または:
[Service] ExecStartPre=/bin/sleep 2
ドライバーの初期化にかかる時間が長い場合は、上記の時間を増やしてください。
手元で操作しないと GDM が起動しない
起動しても画面が暗いままで、マウスを動かしたりキーボードに何か打ち込まないと GDM が起動しない場合、原因はおそらく乱数生成のためのエントロピーが不足しているためです。問題を確認するために systemd-random-seed のログ (journalctl --unit systemd-random-seed
コマンドで読むことができます) の中に以下のような行がないかチェックしてください:
Kernel entropy pool is not initialized yet, waiting until it is.
問題を解決するには、random.trust_cpu=on
カーネルパラメータを設定してください (あなたの使っている CPU が RDRAND 命令をサポートしている場合)。もしくはエントロピーを供給するために haveged をインストールすることでも解決できます (ただしエントロピーの品質は保証されていません)。Debian の記事 に記載されている他の解決方法も参照。
GDM の不完全な削除
GDM を削除すると、systemd が以下のようにエラーを吐くことがあります:
user 'gdm': directory '/var/lib/gdm' does not exist
上記の警告を消すには、root でログインしてプライマリユーザーの "gdm" とグループの "gdm" を削除してください:
# userdel gdm # groupdel gdm
pwck
や grpck
を使うことで gdm が削除されたことを確認できます。所有者がないファイルがないか確認すると良いでしょう。
GDM 自動サスペンド (GNOME 3.28)
GDM は GNOME と別の dconf データベースを使用して電源管理を制御しています。ユーザーセッションと同じように GDM が振る舞うようにしたい場合、ユーザー設定を GDM の dconf データベースにコピーしてください:
$ IFS=$'\n'; for x in $(sudo -u username gsettings list-recursively org.gnome.settings-daemon.plugins.power); do eval "sudo -u gdm dbus-launch gsettings set $x"; done; unset IFS
username
はユーザー名です。
AC 環境での自動サスペンドを無効にするには、次のコマンドを実行します。
$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
(バッテリー環境での自動サスペンドも無効にするには、ac を battery に変えてしてコマンドを実行します)
GDMを再起動して、変更を有効にします。
GDM が Wayland を無視し、デフォルトで X.Org を使用する
Wayland が動作するためには、カーネルモード設定 (KMS) が動作している必要がありますが、マシンによっては GDM プロセスが KMS よりも早く開始し、結果として GDM が Wayland を見ることができず、X.Org のみで動作することになります。その結果、ログに次のようなメッセージが表示されることがあります。
gnome-shell[569]: Failed to open gpu '/dev/dri/card0': GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Operation not permitted gnome-shell[569]: Failed to create backend: No GPUs found systemd[505]: org.gnome.Shell@wayland.service: Failed with result 'protocol'. systemd[505]: Failed to start GNOME Shell on Wayland.
あるいは、同じ問題で GDM が表示されなかったり、モニタに TTY 出力しか表示されなかったりすることがあります。
この問題は starting KMS earlier で解決できます。
また、NVIDIAドライバを使っている場合、Wayland セッションが udev ルールによってブロックされているかもしれません (GNOME Wayland セッション を見てください) その結果、以下のようなメッセージが表示されることがあります。
systemd[1022]: Condition check resulted in GNOME Shell on Wayland being skipped. systemd[1022]: org.gnome.Shell@wayland.service: Skipped due to 'exec-condition'. systemd[1022]: org.gnome.Shell@wayland.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
回避策については Wayland と独自の NVIDIA ドライバ を参照してください。
NVidia (e)GPU が存在する場合、AMD または Intel GPU で黒い画面が表示される
最初は NVidia デバイスがなくても、GDM は Wayland 上で正常に起動し動作しますが、NVidia eGPU が接続されると(あるいは他の理由で nvidia
モジュールがロードされると) 動作が停止してしまいます。この問題の典型的な症状は、ログアウトと GDM の再起動時にカーソルが点滅する黒い画面と、GDM のログ(root で journalctl -u gdm -b
を実行してアクセス)に次のメッセージが表示されることです。
Gdm: Child process -<some PID> was already dead.
解決策は 上記 と同じです /usr/lib/gdm-disable-wayland
が nvidia
モジュールのロード時に実行されないようにします。
Wayland 上の GDM は /usr/lib/gdm-disable-wayland
が実行されるともう動作しなくなることに注意してください。これは WaylandEnable=false
が /run/gdm/custom.conf
に書き込まれ、/etc/gdm/custom.conf
が優先されているためです。再起動せずに修正するには、/run/gdm/custom.conf
を削除してから、GDM を再起動してください。
GDM が有効にならない
systemd FAQ#既存のシンボリックリンクのためにユニットを有効にすることができない を参照してください。