GDM虚拟机汉化的核心思路是:把GDM登录界面的语言跟随系统改成中文,再补全中文字体和中语言包,绝大多数发行版不用修改文件,一条命令就能搞定。
先搞清楚GDM到底指什么
很多新手在虚拟机里打开Linux,看到登录界面和锁屏界面是英文,就以为是系统没汉化,系统里已经装好的桌面环境应用可能是中文的,但登录界面那层叫GDM,全称GNOME Display Manager,是GNOME桌面环境默认的显示管理器。
GDM是独立于桌面运行的程序,它显示登录窗口、用户列表、密码输入框,以及右上角的电源和辅助功能菜单,你见过的那三个点菜单、用户头像选择列表,都是GDM负责的,它受系统整体语言设置影响,但和桌面环境里的语言设置不是一套完全相同的控制逻辑。
在虚拟机场景里,Ubuntu、Debian、Fedora这类带GNOME桌面的系统都用GDM,Windows虚拟机上装Linux后,GDM汉化往往被忽略,因为很多人都去调桌面设置里的Language,而GDM那层实际上需要单独确认。
GDM虚拟机汉化前需要确认的基础条件
在动手之前,先快速检查三个前提,跳过这步,后面可能会白忙活。
- 虚拟机里已安装的Linux桌面环境是GNOME,或基于GNOME的Ubuntu默认桌面
- 系统源能正常访问,也就是apt或dnf能联网拉取软件包
- 物理机内存至少给了2GB以上,否则虚拟机里装中文语言包时卡顿明显
如果虚拟机里装的是KDE Plasma桌面,那登录管理器是SDDM而不是GDM,这种情况不在本文范围内,方法也不同,如果拿不准,在终端里敲下面这条命令来确认:
systemctl status gdm
只要看到绿色的active (running),那就是GDM在运行。
Linux虚拟机中文界面怎么设置
GDM虚拟机汉化,实际分两步走,第一步是给系统安装中文语言包,第二步是把GDM的语言环境变量切成中文,先做第一步。
Ubuntu和Debian系GDM汉化步骤
打开终端,依次执行以下命令:
sudo apt update sudo apt install language-pack-zh-hans
安装完成后,安装GNOME的图形语言配置工具,用来同步登录界面的语言:
sudo apt install gnome-language-selector
然后打开系统设置,路径是Settings > Region & Language,把Language一栏的选项改为简体中文,如果是英文界面,就找Chinese (Simplified),改完别着急重启,先重启虚拟机里的GDM服务来验证效果:
systemctl restart gdm
按下Ctrl+Alt+F3切换到纯文本终端,登录后执行上面的systemctl命令,再按Ctrl+Alt+F1回到图形界面,GDM就已经是中文了。
Fedora系GDM汉化步骤
Fedora使用dnf包管理器,命令会稍有不同:
sudo dnf install langpacks-zh_CN sudo systemctl restart gdm
langpacks-zh_CN这个包是Fedora的中文语言包元数据,会拉取glibc语言文件和中文字体依赖,装完以后继续用Settings里的Language选项切成中文即可。
Arch Linux系GDM汉化
Arch系用户手动配置的习惯比较重,但在虚拟机里安装过桌面环境的用户,直接执行:
sudo pacman -S adobe-source-han-sans-cn-fonts noto-fonts-cjk sudo localectl set-locale LANG=zh_CN.UTF-8 sudo systemctl restart gdm
GDM登录界面英文的排查步骤
也有很多用户发现一个奇怪的现象:桌面应用是中文了,但GDM登录界面还是英文,这是GDM虚拟机汉化里最常遇到的问题。
行业共识认为,GDM在登录前阶段会读取一个系统级语言配置,它不读取你当前桌面用户个人的语言设置,个人用户的语言设置位于~/.config/plasma-localerc或~/.config/environment.d/这类位置,GDM启动时根本不会去读它。
也就是说,需要检查系统级语言配置,执行以下命令来查看系统当前的LANG变量状态:
localectl status
输出里如果显示LANG=en_US.UTF-8,就需要把它强制改成中文:
sudo localectl set-locale LANG=zh_CN.UTF-8
改完再重启GDM,登录界面就会变成中文,这个方法在Ubuntu、Debian、Fedora、Arch上通用。
桌面环境和GDM的语言状态不同步
还有一种情况是,桌面环境内已经切换成中文,但GDM还是英文,这是GDM虚拟机汉化的另一个难点,比如Ubuntu在图形界面设置里改语言,通常会自动同步到GDM,但如果用了一些第三方定制脚本,可能只改了用户级别配置,系统级的/etc/default/locale文件没有变动。
可以手动检查这个文件的内容:
cat /etc/default/locale
正常状态下,内容应该类似下面这样:
LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8
如果是英文,就直接用文本编辑器修好它,执行下面的命令手动写入系统语言配置:
sudo tee /etc/default/locale <<'EOF' LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 EOF
写入后再执行systemctl restart gdm,GDM登录界面就会完全变成中文。
GDM登录界面部分菜单仍是英文的应对方式
即便上面所有步骤都做完,GDM右上角的电源菜单、辅助功能菜单里依然可能保留一部分英文,这里要区分开两件事。GDM提供的操作按钮属于GNOME Shell的扩展程序界面,扩展程序的语言跟随GNOME Shell运行时的环境变量,而GNOME Shell在GDM阶段只读取系统级配置,不读取用户语言环境。
部分GDM界面元素来自系统用户的locale设置,即/var/lib/AccountsService/users/目录下的用户配置文件,这个文件里记录着该用户的语言偏好,GDM读取这个文件以决定显示哪种语言。
打开这个目录下的用户文件,比如当前用户是demo,就执行:
sudo nano /var/lib/AccountsService/users/demo
把文件里类似Language=的行改成以下内容:
Language=zh_CN.UTF-8
保存后重启GDM,这一步能解决绝大部分虚拟机GDM登录界面汉化不彻底的问题。
虚拟机GDM汉化常见错误操作
新手有几种常见误区,会导致明明按教程做了,GDM还是英文,第一个是只安装字体不安装中文包,或者反过来只安装语言包不装字体,语言文件负责翻译,字体负责显示汉字,缺了字体,GDM上显示的是一排方框。
第二个是修改文件后不重启,GDM在每次用户会话结束时重新加载,但不重启GDM或虚拟机,新配置不会生效。
第三个是在虚拟机里直接删除了英文locale,有些教程建议精简语言,但直接移除en_US可能会导致GDM语言环境解析异常,从而回退到C locale,所谓C locale是一种POSIX标准的默认英文模式,此时界面显示的是纯英文,建议保留en_US,只把默认语言切换成中文。
第四个误区是忘了中文字体在虚拟机的显卡驱动环境下需要重新绘制,某些老旧显卡驱动对中文渲染支持不佳,导致GDM中文字体模糊或异常,可以安装文泉驿微米黑来缓解:
sudo apt install fonts-wqy-microhei
虚拟机软件差异对GDM汉化的影响
虚拟机软件本身基本不影响GDM的语言显示,但会影响GDM的显示模式,VMware Workstation和VirtualBox在默认显卡配置下,GDM渲染分辨率较低。中文字体在低分辨率下更容易发虚,看起来像没汉化成功。
比较明显的例子是VirtualBox默认分配给虚拟机的显存只有16MB,GDM界面下中文渲染会显得模糊,把显存调到128MB,并启用3D加速,GDM中文显示会更清晰。
使用VMware的用户如果安装了open-vm-tools,GDM可以自适应窗口大小,分辨率合适后,中文显示观感会好很多,执行以下命令安装:
sudo apt install open-vm-tools open-vm-tools-desktop
VirtualBox用户则执行:
sudo apt install virtualbox-guest-utils
GDM服务重启的方法对比
根据场景选择适合的方式,表格形式列出来更清楚:
| 场景 | 命令 | 适用条件 |
|---|---|---|
| 只重启图形会话 | systemctl restart gdm |
GDM正在运行,能切换到TTY终端 |
| 重启整个虚拟机 | reboot |
无法进入TTY,或修改了固件相关配置 |
| 立即重启图形界面 | sudo systemctl restart gdm |
当前用户在TTY,同时保持系统服务正常 |
有一点需要留意,执行systemctl restart gdm会把当前图形会话踢掉,如果正在桌面环境里有未保存的工作,要先保存内容,再执行命令,否则GDM重启后,桌面环境进程全部退出,未保存的数据会丢失,在虚拟机使用中,这个问题非常容易踩坑,请特别注意。
如果重启GDM时卡在A stop job is running for User Manager for UID 121
,说明某个用户的进程阻止了GDM正常停止,这是systemd的常见等待超时问题,静等90秒后系统会自动强制停止,如果想缩短等待时间,可以编辑/etc/systemd/system.conf,把DefaultTimeoutStopSec改为10s,但该方法需要注销当前图形用户才能生效。
如何验证GDM汉化成功
成功的判定标准很简单,GDM登录界面左上角或者屏幕底部出现中文或或简体中文字样,登录按钮、密码提示、用户名占位符全部是中文,右上角的电源菜单出现中文选项,GDM界面的日期时间格式也应变为中文习惯格式。
如果还看到桌面选择器里有英文,比如GNOME、GNOME Classic这两个选项,那属于正常状态,这里的名称不跟随系统语言切换,因为这个名称是桌面会话的标识符,不是应用翻译文本,GDM登录界面最底部通常有”会话”菜单,该项保持英文名属于正常现象。
在VMware或VirtualBox虚拟机里,通过执行systemctl restart gdm使GDM重启后,一看到界面按钮变成中文,就说明GDM虚拟机汉化工作已经全部完成。
GDM虚拟机汉化过程中其他系统组件的同步问题
GDM登录页面汉化完成后,还需关注系统其他显示语言的同步,部分用户反馈,登录后桌面里某些应用还是英文,这是另一层面的问题,如Firefox和LibreOffice各自独立维护语言包,需要单独安装,命令如下:
sudo apt install firefox-locale-zh-hans libreoffice-l10n-zh-cn
这些与GDM无直接关联,但常在系统汉化的讨论中一并涉及,据信在大多数基于Debian的发行版中,这条命令可以正常工作。
系统加载程序的启动菜单,即GRUB引导界面语言也是另一回事,它由/etc/default/grub中的GRUB_LANG变量管理,部分用户期望整个系统从开机到登录全流程汉化,则需要同步修改。
Q&A:GDM虚拟机汉化相关问题汇总
GDM虚拟机汉化需要联网吗?
需要,安装语言包和中文字体都必须从软件源下载,如果在离线环境里操作,只能手动下载deb或rpm格式的离线语言包,再用dpkg -i或rpm -ivh安装,过程繁琐,不建议新手尝试,物理机的网络连接稳定后,虚拟机里用apt或dnf拉取即可。
为什么系统已是中文,GDM仍是英文?
绝大多数情况是的系统级locale没有改成中文,只改了桌面环境的用户级设置,用户级设置位于图形登录后的用户会话里面,GDM在登录前阶段读取不了它,按上文给出的localectl set-locale LANG=zh_CN.UTF-8操作,然后重启GDM即可,这个问题的背后,是用户服务和系统服务间的权限边界。
GDM汉化后能否再切回英文?
可以,用sudo localectl set-locale LANG=en_US.UTF-8就能切回英文,如果系统里没有en_US语言包,用sudo apt install language-pack-en补上,系统设置中先添加English语言再设置为默认,效果与命令一致,靠的仍然是系统语言切换机制本身。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/617968.html


![[齿轮/GDM]最新版教程1:制作动画](https://i2.hdslb.com/bfs/archive/eb8e2bcad7874b064e9cb0ad8828684dfab64e00.jpg)


