最近在某个项目上,需要使用字符终端的显示,并且还需要显示中文。通过网络发现,Framebuffer Console支持中文的功能默认却没在linux的主分支,但是github上有人在维护这个patch。https://github.com/zhmars/cjktty-patches 。鉴于此,本文介绍一下Framebuffer Console的配置方法以及cjktty的配置步骤
# # Console display driver support # CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
这样就打开了内核的字符终端
对应defconfig打开CONFIG_FRAMEBUFFER_CONSOLE即可
make bindeb-pkg -j64
这里编译出来会产生如下包,安装即可
../linux-headers-5.10.66_5.10.66-13_arm64.deb ../linux-headers-5.10.66_5.10.66_arm64.deb ../linux-image-5.10.66_5.10.66-13_arm64.deb ../linux-image-5.10.66_5.10.66_arm64.deb ../linux-image-5.10.66-dbg_5.10.66-13_arm64.deb ../linux-image-5.10.66-dbg_5.10.66_arm64.deb ../linux-libc-dev_5.10.66-13_arm64.deb ../linux-libc-dev_5.10.66_arm64.deb
如果使用rk平台默认boot编译,可使用如下编译方法
export ARCH=arm64 export CROSS_COMPILE=aarch64-none-linux-gnu- export PATH=$PATH:$YOURSDK/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/ make rockchip_linux_defconfig make rk3588-evb1-lp4-v10-linux.img -j64
编译完成将生成boot.img
在正常进入系统之后,通过组合按键
Ctrl+Alt+F{1-6} 即可进入字符终端界面
但是,默认的字符界面,没办法正常的显示中文。原系统的中文的文件显示乱码。于是找到了cjktty
cjktty的patch仓库地址在 https://github.com/zhmars/cjktty-patches ,通过其README.md 可以发现其已经不断支持到最新内核上了
因为我们的内核版本是5.10,故拉取5.10的patch
wget https://raw.githubusercontent.com/zhmars/cjktty-patches/master/v5.x/cjktty-5.10.patch
打补丁就简单了
patch -p1 < cjktty-5.10.patch
CONFIG_FONT_CJK_16x16=y CONFIG_FONT_CJK_32x32=y
编译方法同上,使用时可以发现,该作者实际就是把两个原英文字符叠加成一个中文字符,从而显示了的中文字符