一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何通过修改配置为基础 CentOS 镜像默认注入中文内核

时间:2026-07-13 08:58:02 编辑:袖梨 来源:一聚教程网

基础CentOS镜像默认不含cjktty中文内核补丁,需手动编译集成:下载对应版本内核源码,克隆cjktty-patches并打补丁,复用现有.config配置,编译安装新内核,再配合glibc-langpack-zh、wqy-zenhei-fonts及locale设置实现完整中文支持。

基础 CentOS 镜像默认不包含中文内核支持,所谓“注入中文内核”并非简单复制文件,而是指在构建镜像时提前集成支持中文显示(特别是控制台 tty)的内核模块与补丁,核心是 cjktty 补丁 —— 它为 Linux 内核增加中文字体渲染、GB2312/GBK 编码支持及中文控制台字体加载能力。

确认内核是否已含 cjktty 支持

标准 CentOS 官方内核不含 cjktty。需验证当前内核是否已打补丁:

  • 检查内核配置:运行 zcat /proc/config.gz | grep -i cjktty(若提示无此文件,则需先安装 kernel-devel 并从 /boot/config-$(uname -r) 查看)
  • 查看已加载模块:lsmod | grep cjktty —— 若无输出,说明未启用
  • 观察控制台:切换到 tty(Ctrl+Alt+F2),输入中文字符是否正常显示或乱码

在镜像构建阶段注入中文内核

适用于 Docker 构建或 Kickstart 自动化部署场景。关键是在构建时编译并安装带 cjktty 的内核:

  • 下载对应版本内核源码(如 linux-5.17.tar.xz),解压至构建环境
  • 克隆或下载 cjktty-patches(推荐从 https://github.com/zhmars/cjktty-patches 获取匹配内核版本的 patch)
  • 执行补丁注入:patch -Np1 < ../cjktty/v5.x/cjktty-5.17.patch
  • 复用现有配置:cp /boot/config-$(uname -r) .config,再运行 make olddefconfig 确保新选项被合理继承
  • 编译安装:make -j$(nproc) && make modules_install && make install
  • 更新 grub 配置:grub2-mkconfig -o /boot/grub2/grub.cfg

配套设置中文系统环境

仅内核支持不够,还需语言环境与字体协同:

  • 安装中文语言包:yum install -y glibc-common glibc-langpack-zh
  • 安装中文字体:yum install -y wqy-zenhei-fonts
  • 设置系统 locale:echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
  • 生成 locale 数据(可选但推荐):localedef -c -i zh_CN -f UTF-8 zh_CN.UTF-8

制作最小化中文基础镜像

若用于容器或云镜像,建议精简流程:

  • 使用 ELRepo 提供的预编译 kernel-lt(含部分中文支持),但注意其默认不含 cjktty;如需完整控制台中文,仍需自行编译
  • 在 Dockerfile 中,将编译好的内核、initramfs、vmlinuz 拷贝进镜像,并替换 /boot 下对应文件
  • 通过 grubby --set-default 或修改 /etc/default/grubGRUB_DEFAULT 锁定新内核
  • 最后清理编译中间文件,减小镜像体积

热门栏目