如何在ELF 1开发板实现命令行显示中文

描述

开发板

自busybox1.17.0以后的版本对中文的支持进行了限制,命令行不做修改是无法显示中文的。今天小编就带各位小伙伴了解一下如何实现在busybox1.17.0以上版本对命令行显示中文的支持。

 

步骤一、修改busybox-1.24.1源码

 

1.解压busybox-1.24.1.tar.bz2

elf@ubuntu:~$ tar xvf busybox-1.24.1.tar.bz2

 

2.进入解压之后的busybox-1.24.1文件夹

elf@ubuntu:~$ cd busybox-1.24.1/

 

3.保留默认配置

elf@ubuntu:~/busybox-1.24.1$ make defconfig  

 

4.进行图形界面编辑

elf@ubuntu:~/busybox-1.24.1$ make menuconfig 

(1)出现图形界面选择编译进busybox的功能选项

Busybox Settings --->General Configuration --->[*] Don't use /usr

找到此选项按空格键切换状态,*为built-in。

开发板

 

这样在安装的时候会安装到自己指定的目录(default ./_install)。这个选项一定要选,否则make install后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令。选择这个之后,make install后会在busybox目录下生成_install的目录,里面有busybox和指向它的链接。
 

(2)在busybox中添加locale support支持

Busybox Settings --->General Configuration --->[*] Enable locale support (system needs locale for this to work) [*] Support Unicode [*] Use libc routines for Unicode (else uses internal ones) (63)Character code to substitute unprintable characters with修改为(65533)Character code to substitute unprintable characters with; (767) Range of supported Unicode characters修改为(195102)Range of supported Unicode characters;

开发板

 

为什么是195102?中文在Unicode中的位置查了一下最高到U+2FA1D,随便给这个值改了一个大于2FA1D(195101)的值。

 

(3)添加编译过程中所需库文件路径

Busybox Settings ---> Build Options --->() Cross Compiler prefix回车输入/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- --->() Path to sysroot 回车输入/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ --->() Additional CFLAGS 回车输入-mfloat-abi=hard --->() Additional LDLIBS 回车输入-L/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/

开发板

 

(4)其他选项采用默认配置,一路Exit,最后Yes保存。

开发板

 

5.修改busybox源码

(1)修改./libbb/printable_string.c文件

找到31行和32行:

if (c >= 0x7f) break;

 

修改为:

/*if (c >= 0x7f)*/ /*break;*/

 

找到45行:

if (c < ' ' || c >= 0x7f)

 

修改为:

if (c < ' ')

效果如下:

开发板

 

(2)修改./libbb/unicode.c文件

找到1022行:

*d++ = (c >= ' ' && c < 0x7f) ? c : '?

 

修改为:

*d++ = (c >= ' '/*&& c < 0x7f*/) ? c : '?';

 

找到1030行:

if (c < ' ' || c >= 0x7f)

 

修改为:

if (c < ' ')

效果如下:

开发板

 

6.编译、安装

elf@ubuntu:~/busybox-1.24.1$ make 

elf@ubuntu:~/busybox-1.24.1$ make install (由于前面没设置安装位置将默认安装在本文件夹的_install文件夹下)

 

7.移植busybox到文件系统

(1)拷贝_install/bin下的busybox到文件系统的/bin目录下

root@ELF1:~# rm /bin/busybox

root@ELF1:~# cp /run/media/sda1/busybox /bin
 

(2)给予权限

root@ELF1:~# chmod 777 /bin/busybox
 

(3)删除旧链接文件

root@ELF1:~# rm /bin/ls
 

(4)形成新的链接文件

root@ELF1:~# ln -s /bin/busybox /bin/ls

 

步骤二、修改内核

1.执行环境变量

elf@ubuntu:~/linux-4.1.15-elf1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

 

2.生成.config文件

elf@ubuntu:~/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig

 

3.进入图形配置界面

elf@ubuntu:~/linux-4.1.15-elf1$ make menuconfig

File systems --->DOS/FAT/NT Filesystems --->(437) Default codepage for FAT修改为(936) Default codepage for FAT --->(iso8899-1) Default iocharset for FAT修改为(utf8) Default iocharset for FAT

 

File systems --->Native language support --->(cp437) Default NLS Option修改为(utf8) Default NLS Option ---><*>Simplified Chinese charset (CP936, GB2312)

保存退出。

 

4.编译

elf@ubuntu:~/linux-4.1.15-elf1$ cp .config arch/arm/configs/imx6ull_elf1_defconfig

elf@ubuntu:~/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig

elf@ubuntu:~/linux-4.1.15-elf1$ make zImage
 

5.将新的内核拷贝到开发板替换旧的内核

root@ELF1:~# cp /run/media/sda1/zImage /run/media/mmcblk1p1/

root@ELF1:~# sync

断电重启。
 

步骤三、文件系统验证

把含有中文名称文件的U盘插到开发板上,进入U盘挂载路径查看:

root@ELF1:~# ls /run/media/sda1/

开发板

 

完成以上三个步骤,就可以实现在ELF 1开发板中的命令行显示中文,希望能对屏幕前的小伙伴提供帮助。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分