GDM
関連記事
GDM - GNOME Display Manager より: "GNOME Display Manager (GDM) はグラフィカルディスプレイサーバーを管理しグラフィカルユーザーログインを処理するプログラムです。"
ディスプレイマネージャは X Window System や Wayland のユーザーにグラフィカルなログインプロンプトを提供します。
目次
インストール
GDM は gdm パッケージでインストールできます。また、gnome グループの一部としてもインストールされます。
起動
ブート時に 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-today.svg</file> <file>calendar-today-light.svg</file> <file>checkbox.svg</file> <file>checkbox-focused.svg</file> <file>checkbox-off-focused-light.svg</file> <file>checkbox-off-focused.svg</file> <file>checkbox-off-light.svg</file> <file>checkbox-off.svg</file> <file>gnome-shell.css</file> <file>gnome-shell-high-contrast.css</file> <file>gnome-shell-start.svg</file> <file>pad-osd.css</file> <file>process-working.svg</file> <file>toggle-off.svg</file> <file>toggle-off-hc.svg</file> <file>toggle-off-light.svg</file> <file>toggle-on.svg</file> <file>toggle-on-hc.svg</file> <file>toggle-on-light.svg</file> <file>workspace-placeholder.svg</file> <file>filename</file> </gresource> </gresources>
filename は使用する背景画像のファイル名に置き換えてください。あるいは、16進数のカラーコードを使用する場合は、この行を削除してください。
そのディレクトリ内の gnome-shell.css
ファイルを開き、#lockDialogGroup
の定義を以下のように変更してください:
#lockDialogGroup { background: url(filename); background-size: widthpx heightpx; background-repeat: no-repeat; }
background-size
は GDM が使用する解像度に設定してください (これは、画像の解像度と同じとは限りません)。画面解像度の一覧は、Wikipedia:Display_resolution#Computer_monitors を見てください。最後に、filename の部分は背景画像のファイル名に置き換えてください。
背景色だけを変更したい場合は、#lockDialogGroup
の定義を以下のように変更してください:
#lockDialogGroup { background-color: #color; }
color は背景色の16進数カラーコードです。
次に、以下のコマンドでテーマをコンパイルしてください:
$ glib-compile-resources gnome-shell-theme.gresource.xml
そして、出来上がった gnome-shell-theme.gresource
ファイルを /usr/share/gnome-shell
ディレクトリにコピーしてください。
最後に、gdm.service
を再起動してください (注意: 一度ログアウトして再度ログインし直すだけでは十分ではありません)。設定された背景画像が使用されるようになっているはずです。
詳細は、このフォーラムスレッドを見てください。上記の手順を自動化するシェルスクリプトは DimaZirix の github リポジトリで入手できます。
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 にも適用されます。Xorg でのキーボード設定#X の設定ファイルを使う を見てください。
Wayland を使用している場合、localectl(1) で X のキーボードレイアウトを手動で指定する必要がある場合があります。以下の例では、フランス語のレイアウトが設定されています:
# localectl set-x11-keymap fr
システムに複数のユーザが存在する場合、GDM によって使用されるキーボードレイアウトをシステムのキーボードレイアウトとは異なるものに設定することができます。まず、gnome-control-center がインストールされていることを確認してください。そして、gnome-control-center を起動し、Region & Language > Input Sources を開いてください。ヘッダーバーにある Login Screen トグルボタンをクリックし、リストの中からキーボードレイアウトを選択してください。注意点として、システムに複数のユーザが存在しないと Login Screen ボタンは表示されません [4]。
GDM 2.x (レガシーな GDM) では、~/.dmrc
を以下のように編集する必要があります:
~/.dmrc
[Desktop] Language=de_DE.UTF-8 # デフォルトの言語 Layout=de nodeadkeys # キーボードレイアウト
言語の変更
システムの言語は 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
# ユーザに対して自動ログインを有効化する [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" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd"> <!-- Policy definitions for logind --> <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) は org.freedesktop.login1(5) で見られます。
GDM で root ログインを有効にする
root としてログインすることは推奨されていませんが、必要であれば、/etc/pam.d/gdm-password
を編集して以下の設定を auth required pam_deny.so
行より前に追加することで root としてログインできるようになります:
/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 ...
GDM を再起動したら、root としてログインできるようになっているはずです。
ログインリストからユーザを非表示にする
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/
ブートするたびにモニターのセットアップを自動的に再設定するには、gdm.service
のドロップインファイルを使用してください:
/etc/systemd/system/gdm.service.d/override.conf
[Service] ExecStartPre=/bin/cp /home/user/.config/monitors.xml /var/lib/gdm/.config/monitors.xml
monitors.xml
の中でスクリーンの回転とスケーリングに関連する部分は以下のとおりです:
<monitors version="2"> <configuration> <logicalmonitor> ... <scale>2</scale> ... <transform> <rotation>right</rotation> <flipped>no</flipped> </transform> ... </logicalmonitor> </configuration> </monitors>
変更はログアウト時に適用されます。GDM は xorg.conf
の設定を尊重しないため、ログアウトが必須です。
X サーバーのアクセス権限を設定
xhost
コマンドを使うことで X サーバーのアクセス権限を設定できます。
例えば、GDM に X サーバーのアクセス権限を与えるには、以下のコマンドを使います:
# xhost +SI:localuser:gdm
トラブルシューティング
Wayland とプロプライエタリな NVIDIA ドライバ
NVIDIA ドライバを使って GDM で Wayland を使用するには、まず DRM カーネルモード設定を有効化しなければなりません。
GDM バージョン 42 と NVIDIA ドライババージョン 510 の時点で、GDM はデフォルトで Wayland を使用します。それより古い NVIDIA ドライバ (バージョン 470 から 510 の間) の場合、GDM にはチップセット依存の udev ルールが存在しており、Wayland ではなく Xorg を使用します。Wayland を強制するには、以下のシンボリックリンクを作成してこれらのルールをオーバーライドしてください:
# ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
GDM が表示されずに黒画面になる場合、コンピュータの BIOS 設定から統合グラフィックスを無効化してみてください。
ログアウト時に GDM が動かない
起動時には GDM が問題なく立ち上がるのに、ログアウトした後に問題が発生する場合は、次の行を /etc/gdm/custom.conf
の daemon セクションに追加してみて下さい:
GdmXserverTimeout=60
Rootless Xorg
Xorg#Rootless Xorg を見て下さい。
Xorg バックエンドを使う
Wayland バックエンドはデフォルトで使用されます。Xorg バックエンドが使用されるのは、Wayland バックエンドを起動できない場合のみです。例えば以下のような場合には Xorg バックエンドを代わりに使用する必要があるでしょう:
- GDM がクラッシュしてしまう
Xorg バックエンドをデフォルトで使用するには、/etc/gdm/custom.conf
内の以下の行をアンコメントしてください:
#WaylandEnable=false
何らかの入力がないと 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
グループを削除してください。
gdm
が正しく削除されたかどうかは pwck
と grpck
を root 権限で実行することで確認できます。最後に、gdm 由来のどのユーザにも所有されていないファイルが残留していないかどうかダブルチェックしたほうが良いでしょう。
GDM の自動サスペンド (GNOME 3.28)
GDM は GNOME とは別の dconf データベースを使用して電源管理を制御しています。ユーザーセッションと同じように GDM が振る舞うようにしたい場合、ユーザー設定を GDM の dconf データベースにコピーしてください ( username
はユーザー名です):
$ 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
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 の出力しか表示されなかったりすることもあります。
この問題は、KMS をより早い段階で開始することで解決できます。また、GDM の設定ファイルで Wayland が有効化されていることも確認したほうが良いでしょう (#Xorg バックエンドを使う を参照)。
また、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 -<PID> was already dead.
解決策は #GDM が Wayland を無視し、デフォルトで X.Org を使用する と同じです: nvidia
モジュールのロード時に /usr/lib/gdm-disable-wayland
が実行されないようにするのです。
Wayland 上で動作している GDM は、/usr/lib/gdm-disable-wayland
が一度でも実行されていると機能しなくなってしまうことを留意してください。これは、WaylandEnable=false
が、/etc/gdm/custom.conf
の設定をオーバーライド /run/gdm/custom.conf
に書き込まれるからです。再起動せずにこの問題を修正するには、/run/gdm/custom.conf
を削除し、GDM を再起動してください。
GDM が有効にならない
systemd FAQ#既存のシンボリックリンクのためにユニットを有効にすることができない を参照してください。