1. 为什么我们需要fbterm很多运维工程师第一次在CentOS字符界面下打开中文文件时都会遇到满屏的乱码或方块。这种情况在生产环境特别常见比如查看中文日志、编辑配置文件时。系统自带的终端模拟器往往对中文支持有限这时候就需要fbterm出场了。fbterm全称Frame Buffer Terminal是运行在Linux帧缓冲framebuffer上的终端模拟器。它最大的优势就是能绕过传统终端的字符编码限制直接通过帧缓冲渲染文字。我曾在十几台服务器上部署过这个方案实测下来显示效果比默认终端稳定得多。传统终端显示中文会出现乱码主要是因为缺少合适的中文字体终端模拟器不支持UTF-8编码没有正确的locale设置而fbterm通过直接操作帧缓冲配合正确的中文字体可以完美解决这些问题。下面我会手把手带你完成整个配置过程。2. 环境准备与基础配置2.1 检查系统语言环境首先登录你的CentOS服务器建议使用7.x或8.x版本。先检查当前语言环境locale如果输出中没有zh_CN.UTF-8说明需要安装中文语言包sudo yum groupinstall Chinese Support然后设置默认语言为英文这个设置很关键后面会解释原因echo LANGen_US.UTF-8 | sudo tee /etc/locale.conf source /etc/locale.conf这里有个小技巧我们保持系统默认语言为英文只在fbterm中临时切换为中文。这样做的好处是避免其他命令行工具因中文locale出现异常。2.2 安装中文字体没有中文字体再好的终端也显示不了中文。先安装字体管理工具sudo yum -y install fontconfig检查现有中文字体fc-list :langzh如果输出为空就需要安装字体。我推荐使用微软雅黑Monaco的组合创建字体目录并设置权限sudo mkdir -p /usr/share/fonts/chinese sudo chmod -R 755 /usr/share/fonts/chinese如果你有Windows机器可以从C:\Windows\Fonts复制msyh.ttc微软雅黑到服务器。同时下载Monaco字体wget http://d.xiazaiziti.com/en_fonts/fonts/m/Monaco.ttf -P /tmp将字体文件复制到字体目录生成字体索引sudo cp /tmp/Monaco.ttf /usr/share/fonts/chinese/ sudo yum install mkfontscale -y cd /usr/share/fonts/chinese sudo mkfontscale现在再运行fc-list :langzh应该能看到中文字体列表了。3. 编译安装fbterm3.1 安装依赖包fbterm需要从源码编译安装先安装必要的开发工具sudo yum -y install make gcc gcc-c fontconfig-devel freetype-devel gpm-devel libX11-devel libXmu-devel这些依赖包确保fbterm能正常处理字体渲染和输入输出。我曾经因为漏装libX11-devel导致编译失败折腾了好久才发现问题。3.2 下载和编译源码推荐使用1.7稳定版cd ~ wget https://www.javatang.com/_download/fbterm-1.7.0.tar.gz tar xzvf fbterm-1.7.0.tar.gz cd fbterm-1.7 ./configure make sudo make install编译过程通常需要5-10分钟。如果遇到证书错误可以在wget命令后添加--no-check-certificate参数。安装完成后可以用which fbterm检查是否安装成功。如果返回路径说明安装正确。4. 配置fbterm显示中文4.1 设置用户权限普通用户直接运行fbterm会报错因为需要访问/dev/fb0设备。解决方法是将用户加入video组sudo gpasswd -a $USER video然后注销重新登录使权限生效。这个步骤经常被忽略导致很多新手卡在这里。4.2 创建配置文件fbterm的配置文件在~/.fbtermrc我们先设置字体vim ~/.fbtermrc找到font-names行修改为font-namesMonaco,Microsoft YaHei这里注意字体顺序英文字体在前中文字体在后。这样可以确保英文用Monaco显示中文用微软雅黑显示。4.3 设置启动别名为了方便使用我们创建一个别名echo alias fbtermLANGzh_CN.UTF-8 fbterm | sudo tee -a /etc/bashrc source /etc/bashrc这个别名做了两件事临时将语言环境设为中文启动fbterm终端现在只要输入fbterm命令就能进入支持中文的终端环境了。退出按CtrlD或输入exit。5. 高级配置与优化5.1 调整显示效果fbterm支持多种显示调整比如修改字体大小echo font-size16 ~/.fbtermrc常用配置参数还有cursor-shape0 # 光标样式screen-rotate0 # 屏幕旋转input-methodfcitx # 输入法支持5.2 解决常见问题中文显示为方块检查字体路径是否正确确认字体文件权限是755重新生成字体缓存fc-cache -fvfbterm启动闪退检查/dev/fb0设备权限确认用户是否在video组尝试用sudo fbterm测试输入法不工作安装ibus或fcitx输入法框架设置input-method参数5.3 性能优化对于老旧服务器可以关闭一些特效提升性能echo text-blink0 ~/.fbtermrc echo cursor-blink0 ~/.fbtermrc如果经常使用fbterm建议将常用配置写成脚本自动加载。我在生产环境就写了个初始化脚本部署新机器时一键运行。6. 实际应用场景6.1 查看中文日志现在可以直接用less或cat查看中文日志了fbterm less /var/log/messages再也不用担心日志中的中文变成乱码影响排错。6.2 编辑中文配置文件在fbterm中运行vim编辑中文配置文件fbterm vim /etc/nginx/nginx.conf中文注释和配置项都能正常显示和编辑。6.3 与其他工具配合fbterm可以和tmux、screen等工具一起使用fbterm tmux new -s mysession这样即使断开SSH连接回到会话时中文显示也不会出问题。经过这样一套配置你的CentOS字符界面就能完美支持中文了。这个方案我在几十台服务器上都部署过稳定性经得起考验。遇到任何问题都可以查看fbterm的日志文件~/.fbterm.log里面通常会有详细的错误信息。