Linux配置VNC报错Could not init font path element built-ins, removing from list!

本文详细介绍了使用YUM安装libXfont、xorg-x11-xinit、xorg-x11-fonts-Type1解决VNC服务器启动时因字体路径配置不当导致的错误,并成功启动VNC服务器的过程。

现象如下:

[root@lkdb ~]# vncserver :1

WARNING: The first attempt to start Xvnc failed, possibly because the font
catalog is not properly configured.  Attempting to determine an appropriate
font path for this system and restart Xvnc using that font path ...
Could not start Xvnc.

Xvnc TigerVNC 1.1.0 - built Apr 25 2013 11:09:00
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11300000, The X.Org Foundation

Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension VNC
Initializing built-in extension GLX

Fri Jan 29 15:09:55 2016
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
[dix] Could not init font path element /usr/share/X11/fonts/misc, removing from list!
[dix] Could not init font path element /usr/share/X11/fonts/75dpi, removing from list!
[dix] Could not init font path element /usr/share/X11/fonts/100dpi, removing from list!
[dix] Could not init font path element /usr/share/X11/fonts/Type1, removing from list!
[dix] Could not init font path element built-ins, removing from list!

Fatal server error:
could not open default font 'fixed'

原因是缺少rpm包,安装如下:
[root@lkdb ~]# yum install libXfont xorg-x11-xinit xorg-x11-fonts-Type1
Loaded plugins: aliases, changelog, downloadonly, kabi, presto, product-id,
              : refresh-packagekit, security, subscription-manager, tmprepo,
              : verify, versionlock
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Loading support for Red Hat kernel ABI
Setting up Install Process
Package xorg-x11-xinit-1.0.9-14.el6.x86_64 already installed and latest version
Package xorg-x11-fonts-Type1-7.2-9.1.el6.noarch already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package libXfont.x86_64 0:1.4.1-2.el6_1 will be updated
---> Package libXfont.x86_64 0:1.4.5-2.el6 will be an update
--> Finished Dependency Resolution
Dependencies Resolved

================================================================================
 Package           Arch            Version                Repository       Size
================================================================================
Updating:
 libXfont          x86_64          1.4.5-2.el6            Server          136 k

Transaction Summary
================================================================================
Upgrade       1 Package(s)

Total download size: 136 k
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 136 k
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : libXfont-1.4.5-2.el6.x86_64                                  1/2 
  Cleanup    : libXfont-1.4.1-2.el6_1.x86_64                                2/2 
  Verifying  : libXfont-1.4.5-2.el6.x86_64                                  1/2 
  Verifying  : libXfont-1.4.1-2.el6_1.x86_64                                2/2 
Updated:
  libXfont.x86_64 0:1.4.5-2.el6                                                 
Complete!

再次执行vncserver :1正常:
[root@lkdb ~]# vncserver :1
New 'lkdb:1 (root)' desktop is lkdb:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/lkdb:1.log
<think>我们正在处理一个关于VNC启动时出现字体路径初始化错误的问题。错误信息是:"could not init font path element /usr/X11R6/lib/X11/fonts/CID removing (VNC) from list"。这个错误通常发生在VNC服务器启动时,它无法初始化指定的字体路径,因此将该路径从字体路径列表中移除。 根据错误信息,问题出在字体路径`/usr/X11R6/lib/X11/fonts/CID`上。可能的原因包括: 1. 该目录不存在。 2. 该目录存在但没有适当的权限。 3. 该目录为空或字体文件损坏。 此外,参考引用[1]中提到了权限问题,虽然问题不同(是关于xstartup文件的执行权限),但提醒我们检查相关文件和目录的权限。 **解决步骤:** 1. **检查目录是否存在**: 首先,我们需要确认`/usr/X11R6/lib/X11/fonts/CID`目录是否存在。如果不存在,那么我们需要创建它或者安装相应的字体包。 2. **检查目录权限**: 如果目录存在,检查当前用户(运行VNC的用户)是否有权限访问该目录。通常需要读取权限。 3. **安装或重新安装字体包**: 如果目录不存在,可能是缺少相应的字体包。我们可以尝试安装包含该目录字体的软件包。在基于Debian的系统(如Ubuntu)中,可以尝试安装`xfonts-cjk`或`xfonts-base`等包,因为CID字体通常与CJK(中文、日文、韩文)字体相关。 4. **更新字体缓存**: 在修改字体配置后,通常需要更新字体缓存。 5. **修改VNC的字体路径配置**: 如果问题仍然存在,我们可以考虑修改VNC服务器的字体路径配置,将无效的路径移除或替换为正确的路径。 **具体操作:** ### 1. 检查目录是否存在 在终端中运行: ```bash ls /usr/X11R6/lib/X11/fonts/CID ``` 如果目录不存在,你会看到类似“No such file or directory”的错误。 ### 2. 安装字体包 尝试安装`xfonts-cjk`(提供CID字体): ```bash sudo apt-get update sudo apt-get install xfonts-cjk ``` 安装后,检查目录是否被创建。 ### 3. 检查目录权限 如果目录存在,检查权限: ```bash ls -ld /usr/X11R6/lib/X11/fonts/CID ``` 确保目录至少具有读取和执行权限(例如权限为755)。如果需要,可以更改权限: ```bash sudo chmod 755 /usr/X11R6/lib/X11/fonts/CID ``` ### 4. 更新字体缓存 更新字体缓存: ```bash sudo fc-cache -fv ``` ### 5. 修改VNC配置(可选) 如果上述步骤无效,可以尝试修改VNC服务器的字体路径配置。通常,VNC服务器的字体路径配置在`/etc/X11/xorg.conf`或`/etc/X11/XF86Config`中,但现代系统可能使用`/etc/X11/XF86Config-4`或`/etc/X11/xorg.conf.d/`目录下的片段配置文件。 然而,在VNC中,字体路径也可以在启动脚本中设置。检查VNC的启动脚本(通常是`~/.vnc/xstartup`)是否有设置字体路径的命令(如`xset`命令)。如果脚本中设置了字体路径,可以尝试注释掉相关行,或者添加正确的字体路径。 例如,在`~/.vnc/xstartup`中,你可能会看到类似这样的行: ```bash xset +fp /usr/X11R6/lib/X11/fonts/CID ``` 如果该路径有问题,可以将其移除,或者替换为其他已知正确的字体路径,如: ```bash xset +fp /usr/share/fonts/X11 ``` 然后重新启动VNC服务器。 **注意:** 修改`xstartup`后,需要给该文件执行权限(参考引用[1]): ```bash chmod +x ~/.vnc/xstartup ``` ### 6. 重新启动VNC服务 在进行了上述修改后,重新启动VNC服务。 如果问题仍然存在,可能需要查看VNC的日志文件(通常在`~/.vnc/`目录下,以主机名和显示号命名的日志文件)以获取更多信息。 **相关问题:** 1. 如何检查VNC服务器启动时的详细日志? 2. VNC服务器启动时常见的其他错误有哪些? 3. 如何配置VNC服务器使用不同的桌面环境?</think>### VNC启动错误:无法初始化字体路径元素 `/usr/X11R6/lib/X11/fonts/CID` 的解决方案 该错误表明VNC服务器在启动时无法访问指定的字体目录,导致该路径被从字体搜索列表中移除。以下是系统性的解决方案: #### 1. **验证字体目录是否存在** 检查缺失的字体路径是否真实存在: ```bash ls /usr/X11R6/lib/X11/fonts/CID ``` - 若目录不存在,可能是字体包未安装或路径变更 - 若目录存在,检查权限:`ls -ld /usr/X11R6/lib/X11/fonts/CID` #### 2. **安装缺失的字体包(关键步骤)** 在基于Debian/Ubuntu的系统上安装核心字体包: ```bash sudo apt-get install xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cjk ``` 安装后重建字体缓存: ```bash sudo mkfontscale sudo mkfontdir sudo fc-cache -fv ``` #### 3. **修改VNC配置文件** 编辑VNC启动脚本 `~/.vnc/xstartup`: ```bash nano ~/.vnc/xstartup ``` 在启动桌面环境前添加字体路径声明: ```bash xset +fp /usr/share/fonts/X11 # 添加系统标准字体路径 xset fp rehash ``` 保存后赋予执行权限(参考引用[1]): ```bash chmod +x ~/.vnc/xstartup ``` #### 4. **检查X服务器配置** 验证Xorg的字体路径: ```bash grep FontPath /etc/X11/xorg.conf ``` 若缺少基础路径,添加: ```plaintext Section "Files" FontPath "/usr/share/fonts/X11" FontPath "/usr/share/fonts/X11/Type1" EndSection ``` #### 5. **符号链接修复(当目录迁移时)** 如果实际字体位于新路径: ```bash sudo mkdir -p /usr/X11R6/lib/X11/fonts sudo ln -s /usr/share/fonts/X11 /usr/X11R6/lib/X11/fonts/CID ``` #### 6. **重启服务** ```bash vncserver -kill :1 vncserver :1 ``` > **根本原因**:该错误通常由以下情况触发: > 1. 系统升级后字体包被移除或路径变更 > 2. 最小化安装系统缺少X11基础字体 > 3. VNC配置未继承系统字体设置 > 4. 权限问题导致字体目录不可读 --- ### 相关问题 1. VNC连接后出现"灰色屏幕无响应"如何排查? 2. 如何在无GUI的Linux服务器上配置VNC桌面环境? 3. VNC和Xrdp远程桌面协议有何本质区别? 4. 如何为VNC会话配置多显示器支持? > 引用[1]: 权限问题可能导致启动失败,确保xstartup有执行权限 > 引用[3]: 缺失核心组件时需验证路径和安装包完整性
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值