|
由于在LFS中没有中文化的内容。所以LFS安装完成后,很多中文化的工作都要自己做。经过一段时间的摸索后,终于找到了让LFS支持windows分区中文文件名显示的方法,为了便于大家理解这个问题,下面先从一些基础概念讲起。
大家知道,windows采用的分区格式为FAT/VFAT/FAT32和NTFS。这些文件系统都使用了unicode来处理中文文件名,这就需要系统在处理这些中文文件名时要将其动态地转换为相应的语言编码。为了处理这些文件系统上的中文文件名和其它语种的文件名,在linux中引入了对NLS的支持。这样在加载相应的文件系统时就可以用下面的参数来设置codepage。
如简体中文的codepage为936,加载文件名是简体中文的windows分区时就可以这样:
mount -t vfat /dev/hda2 /mnt -o umask=0000,codepage=936,iocharset=cp936
这样,就可以在linux下处理中文文件名了。
这种方法对于已经支持codepage936的系统是可行的,但对于LFS来说,如果这样做就能成功,那你就可以省去下面的麻烦了。如果在mount时失败,那就是系统不支持codepage造成的。要做到这一点,在内核编译时就要在内核中加上nls_cp936的支持(在文件系统中选中"native language support"的cp936部分)。我选择了把这一项做成模块。编译核心后,用命令:
modprobe -l
查看,有nls_cp936.o模块,再用命令:
modprobe nls_cp936
将模块插入内核。用lsmod命令确认nls_cp936已经装入内核后,就可以执行
mount -t vfat /dev/hdax /mnt/xxx -o umask=0000,codepage=936,iocharset=cp936
此时,命令执行成功,显示:
MSDOS FS: Using codepage 936
MSDOS FS: IO Charset cp936
再启动zhcon,就可以处理windows分区的中文文件名了。如果不想重新编译内核,可以单独编译一个模块。办法在置顶的贴了里面有。这种方法我没有试过,希望成功的弟兄能主动提供经验。 |
|