GDM
來自GDM - GNOME顯示管理器:「GNOME顯示管理器(GDM)是一個管理圖形顯示服務並處理圖形用戶登錄的程序。
顯示管理器為X Window System和Wayland提供圖形登錄提示。
安裝[編輯 | 編輯原始碼]
可通過安裝gdm包包來安裝GDM,或作為gnome包組組的一部分安裝。
啟動[編輯 | 編輯原始碼]
若要開機啟動GDM,啟用gdm.service
。
自動啟動應用[編輯 | 編輯原始碼]
欲使程序於登錄後自動啟動,請參照 Autostarting#桌面環境中適用您的桌面環境的指示。
配置[編輯 | 編輯原始碼]
登錄頁面背景圖片[編輯 | 編輯原始碼]
- 自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-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使用的分辨率, 這可能不一定是圖像的分辨率。顯示分辨率列表見Display resolution。同樣,將 filename 替換為背景圖像的文件名。
如果您僅想改變背景顏色,請調整 #lockDialogGroup
的定義,如下:
#lockDialogGroup { background-color: #color; }
這裡 color 是作為背景的十六進制編碼的新顏色。
最後,使用以下命令編譯主題:
$ glib-compile-resources gnome-shell-theme.gresource.xml
然後將生成的 gnome-shell-theme.gresource
文件複製到 /usr/share/gnome-shell
目錄下。
然後重啟 gdm.service
(注意:重啟而不是退出) ,它就會使用您想要的背景圖片了。
更多信息見此貼。一個自動執行以上步驟的 shell 腳本在 DimaZirix's github repository 上可用。
dconf配置[編輯 | 編輯原始碼]
一些 GDM 設置存儲在 DConf database 中。 可以通過將 keyfiles 添加到 /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@ /bin/bash
登錄頁面的logo[編輯 | 編輯原始碼]
創建以下密鑰文件:
/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen] logo='/path/to/logo.png'
然後重新編譯 GDM database,或作為 GDM 用戶執行以下操作:
[gdm]$ dbus-launch 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 database,或作為GDM用戶執行以下操作:
[gdm]$ dbus-launch 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 用戶更改圖標主題:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface icon-theme 'theme-name'
在登錄頁面顯示大字體[編輯 | 編輯原始碼]
單擊屏幕右上角的輔助功能圖標(一個白色圓圈,中間有一個人的輪廓),然後選中大號文本選項。
要設置特定的縮放比例,可以創建以下密鑰文件(以1.25為例):
/etc/dconf/db/gdm.d/03-scaling
[org/gnome/desktop/interface] text-scaling-factor='1.25'
然後重新編譯GDM database,或作為GDM用戶執行以下操作:
[gdm]$ dbus-launch 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 database,或作為GDM用戶執行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.sound event-sounds 'false'
更改電源按鈕行為[編輯 | 編輯原始碼]
創建如下的 keyfile:
/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power] power-button-action='action'
然後重新編譯GDM database,或作為GDM用戶並執行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'
這裡 action 可以是 nothing
, suspend
或 hibernate
其中之一。
開啟觸摸板輕觸以點擊[編輯 | 編輯原始碼]
GDM(和GNOME)中默認關閉輕觸以點擊,但可以使用dconf設置開啟它。
若要啟用輕觸以點擊,創建以下keyfile:
/etc/dconf/db/gdm.d/06-tap-to-click
[org/gnome/desktop/peripherals/touchpad] tap-to-click=true
然後重新編譯GDM database,或作為GDM用戶執行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click 'true'
開啟或關閉無障礙菜單[編輯 | 編輯原始碼]
若要禁用或啟用無障礙菜單,創建以下 keyfile:
/etc/dconf/db/gdm.d/07-accessibility
[org/gnome/desktop/interface] toolkit-accessibility='boolean'
然後重新編譯GDM database,或作為GDM用戶執行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface toolkit-accessibility 'boolean'
當key的值為false
時,無障礙菜單默認關閉;true
則開啟。
在 GDM 上啟用夜間模式[編輯 | 編輯原始碼]
欲啟用夜間模式,運行
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
鍵盤布局[編輯 | 編輯原始碼]
GDM 會應用系統鍵盤布局。您可以用 localectl set-x11-keymap
來指定鍵盤布局。細節參見 Keyboard configuration in Xorg#Setting keyboard layout。
更改語言[編輯 | 編輯原始碼]
系統語言將應用於 GDM。 如果系統有多個用戶,則可以為 GDM 設置與系統語言不同的語言。 在這種情況下,首先請確保安裝了 gnome-control-center包。 然後,啟動 gnome-control-center 並選擇「區域和語言」。 在標題欄中,選中登錄屏幕切換按鈕。 最後,單擊語言並從列表中選擇您的語言。 系統將提示您輸入 root 密碼。 請注意,除非系統上存在多個用戶,否則標題欄中的「登錄屏幕」按鈕將不可見. [5]
用戶與登錄[編輯 | 編輯原始碼]
自動登錄[編輯 | 編輯原始碼]
將以下內容添加至/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
組,然後您只需點擊您的用戶名以登錄。
- 不要對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" "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
前添加以下行:
/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 用戶列表的用戶由 [6][失效鏈接 2022-09-17 ⓘ] 收集。 它會自動隱藏系統用戶(UID < 1000)。 要從登錄列表中隱藏普通用戶,請創建或編輯一個以用戶命名的文件,並將其保存在 /var/lib/AccountsService/users/
中,隨之隱藏該文件。文件至少應包含:
/var/lib/AccountsService/users/username
[User] SystemAccount=true
通過 RDP 的遠程登錄[編輯 | 編輯原始碼]
通過圖形化接口[編輯 | 編輯原始碼]
可在 Gnome 設置程序中找到「系統>遠程桌面>遠程登錄」來圖形化地配置遠程登錄。
通過終端接口[編輯 | 編輯原始碼]
要顯示當前狀態和憑證,可採用以下命令:
# grdctl --system status --show-credentials
要設置憑證:
# grdctl --system rdp set-credentials rdp_login rdp_password
要生成新的 TLS 密鑰和證書:
# winpr-makecert3 -rdp -path /etc/gnome-remote-desktop -n rdp-tls
若省略了 -n rdp-tls
部分,就會使用 hostname 作為名字。
要設置新的 TLS 密鑰和證書:
# grdctl --system rdp set-tls-key /etc/gnome-remote-desktop/rdp-tls.key # grdctl --system rdp set-tls-cert /etc/gnome-remote-desktop/rdp-tls.crt
最終,啟用遠程登錄:
# grdctl --system rdp enable
設置默認顯示器[編輯 | 編輯原始碼]
一些桌面環境將顯示設置保存在 ~/.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
使用 Systemd#附加配置片段:
/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
。
- 如果在Wayland下使用GDM,則必須使用在Wayland下創建的
monitors.xml
。詳見GDM bug 224。也可以強制讓GDM #使用Xorg後端,並使用在Xorg下創建的monitors.xml
。 - 如果您使用 fractional scaling (分數縮放),您需要為用戶
gdm
啟用它:
[gdm]$ dbus-launch gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
配置X服務器的訪問權限[編輯 | 編輯原始碼]
您可以使用 xhost
命令來配置 X 服務器的訪問權限。
例如,要授予 GDM 訪問 X 服務器的權限,請使用以下命令:
# xhost +SI:localuser:gdm
疑難解答[編輯 | 編輯原始碼]
Wayland 與 NVIDIA 專有驅動[編輯 | 編輯原始碼]
要在 GDM 中使用帶有 NVIDIA 驅動程序的 Wayland,您必須滿足以下三個條件:
- 啟用 DRM KMS;
從 GDM 42 和 NVIDIA 驅動程序 510 開始,GDM 默認為 Wayland。 對於較舊的 NVIDIA 驅動程序(版本 470 和 510 之間),GDM 具有依賴於芯片組的 udev 規則使用 Xorg 而不是 Wayland。 要強制啟用 Wayland,不遵循上述三個常規步驟,請通過創建以下符號鏈接來覆蓋這些規則:
# ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
/etc/udev/rules.d/
中的規則會覆蓋 /usr/lib/udev/rules.d/
中的規則(參見 Udev#About udev rules)。 建議修改 /etc/
中的文件,而非 /usr/
中的文件,也是因為 /etc/
中的文件由 pacman 管理。如果出現黑屏而不是 GDM,請嘗試在計算機的 BIOS 設置中禁用集成顯卡。
一些情況下,GNOME 無法啟動,將控制權轉回 GDM,最終導致登錄頁面重複出現。您可以嘗試設置以下環境變量,參考BBS#2126478:
/etc/environment
MUTTER_DEBUG_KMS_THREAD_TYPE=user
註銷失敗[編輯 | 編輯原始碼]
如果 GDM 在啟動時正常啟動,但在多次嘗試註銷後失敗,請嘗試將此行添加到 /etc/gdm/custom.conf
的守護程序部分:
GdmXserverTimeout=60
無 root 的 Xorg[編輯 | 編輯原始碼]
使用Xorg後端[編輯 | 編輯原始碼]
默認使用 Wayland 後端,只有在 Wayland 後端無法啟動時才使用 Xorg 後端。 在如以下情況下,您可能希望使用 Xorg 後端:
- GDM 崩潰
要默認使用 Xorg 後端,請在 /etc/gdm/custom.conf
中將以下行取消注釋:
#WaylandEnable=false
沒有完全卸載 GDM[編輯 | 編輯原始碼]
user 'gdm': directory '/var/lib/gdm' does not exist
要刪除此警告,請以 root 身份登錄並刪除私有用戶 gdm
然後刪除組 gdm
:
驗證 gdm
是否已通過具有 root 權限的 pwck
和 grpck
成功刪除。 解決這個問題 ,您可能需要仔細檢查無主文件(缺失中文翻譯)是否保留 gdm。
GDM自動掛起(GNOME 3.28)[編輯 | 編輯原始碼]
GDM 使用單獨的 dconf 數據庫來控制電源管理。 要應用用戶的電源設置,請將它們複製到 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 上的自動掛起,運行:
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
(要同時禁用電池自動掛起,請使用 battery
而不是 ac
運行命令。)
重新啟動 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,(見上文)。
此外,如果您使用 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 重新啟動時出現黑屏,並在 GDM 的日誌中顯示以下消息(通過以 root 身份運行 journalctl -u gdm -b
訪問):
Gdm: Child process -<some PID> was already dead.
解決方法同上所描述: 防止 /usr/lib/gdm-disable-wayland
在 {{ic|nvidia} 上運行 } 模塊加載。
請注意,一旦 /usr/lib/gdm-disable-wayland
運行,Wayland 上的 GDM 將不再工作。 這是因為 WaylandEnable=false
已寫入 /run/gdm/custom.conf
,它會覆蓋 /etc/gdm/custom.conf
。 要在不重新啟動系統的情況下解決此問題,請刪除 /run/gdm/custom.conf
,然後重新啟動 GDM。
無法啟用 GDM[編輯 | 編輯原始碼]
參見 systemd/FAQ#Failure to enable unit due to preexisting symlink.