如果你试着在Linux系统里面输入中文,那么将会有一片乱码呈现在你面前,这是因为Linux系统的默认语言是英文。但是如果可以显示中文的话,那么在使用过程中的便利程度一定会大大提升。今天小编就通过飞凌嵌入式的OKA40i-C
开发板来为大家演示让Linux系统显示中文的修改方法。
STEP 1
如果之前使用的是全源码编译方式对源码进行编译处理的,就可以直接往下走;如果之前有更改过源码部分,且使用的是单步编译,则需要重新解压一份OKA40i-C开发板的源码,进入该源码的lichee文件夹,执行sudo ./build.sh进行一次全编译,耗时会有点长,需要耐心的等待。
STEP 2
在新的源码全编译的过程中,到之前使用的源码里面做一些准备工作吧;要是更改过程中遇到只读等权限问题,打开的时候加上sudo就好了。
- 首先在lichee下面找到linux-3.10/.config这个配置文件,将里面的iso8859-1全部替换成utf8,就像下面这样,一共有两处。行前面的“-”表示去掉,“+”表示添加上。
FAT使用的默认输入/输出字符集:
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
挂载文件系统时使用的默认NLS
-CONFIG_NLS_DEFAULT=" iso8859-1"
+CONFIG_NLS_DEFAULT="utf8"
- out/sun8iw11p1/linux/common/buildroot/target/etc/inputrc
在上方lichee中的文件中添加两行命令:
- lichee/out/sun8iw11p1/linux/common/buildroot/target/root
然后到上方路径下创建一个.vimrc文件,打开.vimrc文件,在里面添加上三行命令:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=utf8
STEP 3
现在,新的源码已经全部编译完成了,在新源码的里面找到busybox-1.25.1这个文件夹。进入以下路径:
lichee/out/sun8iw11p1/linux/common/buildroot/build/busybox-1.25.1
- 执行make menuconfig ARCH=arm进入busybox的图形化编辑界面。
Busybox Set
tings ---> General Configuration --->
Enable locale support (system needs locale for this to work) Support Unicode Use libc routines for Unicode (else uses internal ones)
(65533) Character code to substitute unprintable characters with
(195102) Range of supported Unicode characters
更改好之后一路Exit退出,最后选择yes保存配置。
- 然后更改busybox-1.25.1文件夹路径下的文件
libbb / printable_string.c,
搜索0x7f,删除以下两行:
将这里更改为
-if (c < ' ' || c >= 0x7f)
+if (c < ' ')
- 更改libbb/unicode.c文件,先找到这样一段:static char* FAST_FUNC。然后将里面的1022行和1030行进行修改:
将*d++ = (c >= ' ' && c < 0x7f) ? c : '?';
修改为*d++ = (c >= ' ') ? c : '?';
将if (c < ' ' || c >= 0x7f)
修改为if (c < ' ')
修改完成之后,删除.stamp_built文件和.stamp_target_installed文件,返回到lichee文件夹下面,重新进行全编译sudo ./build.sh操作。
在out/sun8iw11p1/linux/common/buildroot/target/bin路径后面会生成一个busybox的可执行文件,将这个叫busybox的可执行文件替换到需要中文源码的相同路径下面——
lichee/out/sun8iw11p1/linux/common/buildroot/target/bin里面。
STEP 4
最后,在需要中文的那一份源码里面进行内核编译,打包文件系统,打包镜像操作,再将镜像烧录到OKA40i-C开发板里面就可以显示中文了。
sudo ./build.sh -m kernel
sudo ./build.sh -m pack_rootfs
sudo ./build.sh pack
最后我们来验证一下。可以看到此时已经可以直接进行中文输入了,并且和windows对接的中文文件可以直接显示查看。
结语
Linux系统中文显示的更改其实就是更改内核的字符集和打开busybox的显示封锁,第一次编译好后,以后需要中文的busybox可以直接使用这次的busybox进行替换,节省了很多的工作量。更改完成之后就可以在OKA40i-C开发板的Linux系统上面编辑和查看中文了。
原作者:飞凌嵌入式