GDM

提供: ArchWiki
2023年9月29日 (金) 07:02時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎GDM 自動サスペンド (GNOME 3.28): 同期)
ナビゲーションに移動 検索に移動

関連記事

GDM - GNOME Display Manager より: "GNOME Display Manager (GDM) はグラフィカルディスプレイサーバーを管理しグラフィカルユーザーログインを処理するプログラムです。"

ディスプレイマネージャX Window SystemWayland のユーザーにグラフィカルなログインプロンプトを提供します。

目次

インストール

GDM は gdm パッケージでインストールできます。また、gnome グループの一部としてもインストールされます。

起動

ブート時に GDM を起動するには、gdm.service有効化して下さい。

アプリケーションの自動起動

ログイン後に自動的にアプリケーションを起動するには、自動起動#デスクトップ環境のスタートアップ時 のページであなたのデスクトップ環境に関係する指示に従ってください。

設定

ログインの背景画像

ノート:
  • GNOME 3.16 から GNOME Shell のテーマはバイナリ形式のファイル (gresource) に保存されるようになりました。
  • gnome-shell をアップデートすると以下の変更は上書きされます。

まず、既存の 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'

電源ボタンの挙動の設定

ノート:
  • 電源ボタンの logind の設定は GNOME 設定デーモンによって上書きされます [1]
  • 2015年10月現在、電源ボタンは interactive に設定できません [2]
  • ときとして、以下の設定が無視されてハードコードされたデフォルト設定が使われることがあります [3]
警告: acpid デーモンも電源ボタンやハイバネートボタンのイベントを管理することに注意してください。両方のシステムが同時に動作すると予期しない挙動を引き起こす可能性があります。

以下のキーファイルを作成してください:

/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 の設定で簡単に有効化できます。

ノート: X で以下の設定をしたい場合、まずは X サーバーに適切なアクセス権限を設定する必要があります。#X サーバーのアクセス権限を設定を見てください。

直接タップでクリックを有効にするには、以下のコマンドを使用:

# 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 の設定ファイルを使う を見てください。

ヒント: 国名に基づくキーマップのリストについては、Wikipedia:ISO 3166-1 を参照してください。または、システムで利用可能なキーマップを localectl list-keymaps で一覧表示できます

Wayland を使用する場合、localectl(1) を使用して X キーボードレイアウトを手動で指定する必要がある場合があります。以下の例では、フランス語のレイアウトが設定されています。

# localectl set-x11-keymap fr

ユーザーが複数存在する場合、システムのキーボードレイアウト以外のレイアウトを GDM で指定することができます。gnome-control-center パッケージがインストールされている場合、グラフィカルフロントエンドを使ってキーボードレイアウトを設定できます。gnome-control-center を起動して Keyboard -> Input Sources を開いてください。そして、ヘッダーバーにある Login Screen ボタンを押して GDM のキーボードレイアウトを設定してください。ユーザーが一人しかいない場合は Login Screen ボタンは表示されません [4]

旧バージョンの 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]

ユーザーとログイン

自動ログイン

警告: systemd-homed で管理されているユーザーにはこの操作を試みないでください。これは現在 未実装 であり、GDM をクラッシュさせます

GDM で自動ログインを有効にするには、以下を /etc/gdm/custom.conf に追加してください。(username を自分のものに置き換えてください)

/etc/gdm/custom.conf
# Enable automatic login for user
[daemon]
AutomaticLogin=username
AutomaticLoginEnable=True
ヒント: これらの行を追加した後にGDMが失敗した場合、TTY からコメントアウトしてください

または、遅延を伴う自動ログインの場合。

/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 に加えればユーザー名をクリックするだけでログインできるようになるはずです。

警告:
  • root アカウントでパスワードの入力の省略を使わないで下さい
  • GDM のログイン時にセッションのタイプを変更することはできなくなります。デフォルトのセッションのタイプを変更するには、まずユーザーを 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 を使用しないためログアウトが必要です。

ノート: Wayland バックエンドは Wayland で作成された monitors.xml ファイルを使用します。詳しくは GNOME bug 748098 を見てください。Xorg で作成した monitors.xml を使うために Wayland バックエンドを無効化する方法は #Xorg バックエンドを使うを見てください。

X サーバーのアクセス権限を設定

xhost コマンドを使うことで X サーバーのアクセス権限を設定できます。

例えば、GDM に X サーバーのアクセス権限を与えるには、以下のコマンドを使います:

# xhost +SI:localuser:gdm

トラブルシューティング

Wayland とプロプライエタリな NVIDIA ドライバ

NVIDIA ドライバを使って GDM で Wayland を使用するには、まず DRM カーネルモード設定を有効化しなければなりません。

ノート: KMS を有効化して Wayland の設定をしても GDM に Wayland のオプションが表示されない場合、NVreg_PreserveVideoMemoryAllocationsNVIDIA の systemd サービスが無効化されている可能性が高いです。以下の方法で Wayland を強制してみる前に、まず NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する に書かれてある指示に従ってください。

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
ノート: このコマンドが動くのは、/etc/udev/rules.d/ 内のルールは /usr/lib/udev/rules.d/ 内のルールをオーバーライドするからです (udev#udev ルールについて を参照)。また、/usr/lib/udev/rules.d/ よりも /etc/udev/rules.d/ を変更することが推奨されます。なぜなら、前者は pacman によって管理されているからです。

GDM が表示されずに黒画面になる場合、コンピュータの BIOS 設定から統合グラフィックスを無効化してみてください。

ログアウト時に GDM が動かない

起動時には GDM が問題なく立ち上がるのに、ログアウトした後に問題が発生する場合は、次の行を /etc/gdm/custom.conf の daemon セクションに追加してみて下さい:

GdmXserverTimeout=60

Rootless Xorg

Xorg#Rootless Xorg を見て下さい。

Xorg バックエンドを使う

Wayland バックエンドはデフォルトで使用されます。Xorg バックエンドが使用されるのは、Wayland バックエンドを起動できない場合のみです。例えば以下のような場合には Xorg バックエンドを代わりに使用する必要があるでしょう:

Xorg バックエンドをデフォルトで使用するには、/etc/gdm/custom.conf 内の以下の行をアンコメントしてください:

#WaylandEnable=false

何らかの入力がないと GDM が起動しない

この記事またはセクションは情報が古くなっています。
理由: Linux 5.6 以降、この問題はもはや存在しません。 (Discuss)

起動しても画面が暗いままで、マウスを動かしたりキーボードに何か打ち込まないと 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 が正しく削除されたかどうかは pwckgrpck を 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'

(バッテリー環境での自動サスペンドも無効にするには、acbattery に変えてしてコマンドを実行してください。)

変更をアクティブ化するには、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-waylandnvidia モジュールのロード時に実行されないようにします。

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#既存のシンボリックリンクのためにユニットを有効にすることができない を参照してください。

参照