QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9154|回复: 8

Slax 6.2.0 全中文化全过程(utf8)(二)

[复制链接]
发表于 2009-8-13 21:56:49 | 显示全部楼层 |阅读模式
接上回咱继续说。。。。。
用这张启动盘启动计算机,然后把启动盘上 /slax/base/001-core.lzm 这个文件拷到 /tmp目录里。
用文件管理器找到它,点右键,选择 Extract Slax Module,把这个模组给解压喽。
编辑 /tmp/001-core/etc/rc.d/rc.local 这个文件
事实上这个文件原配置内容为空,就是说啥都没有,我们来手动加入我们要的配置:

  1. echo Chang vfat32 and vfat16 mounted fs to display Chinese filename with UTF-8 code!
  2. hd_vfat=`fdisk -l | awk '/FAT32/{print $1}'`
  3. hd_vfat16=`fdisk -l | awk '/FAT16/{print $1}'`

  4. i=0
  5. for file in $hd_vfat
  6.    do
  7.       vfat_hd=$file
  8.       let i="$i+1"
  9.    done

  10. j=0
  11. for file in $hd_vfat16
  12.    do
  13.       vfat16_hd[j]=$file
  14.       let j="$j+1"
  15.    done
  16. I=0
  17. while [ $I -lt $i ]
  18.    do
  19.       umount "${vfat_hd[$I]}"
  20.       vfat_mnt=`echo  ${vfat_hd[$I]} | awk -F/ '{print $3}' `
  21.       mount -t vfat -o iocharset=utf8 "${vfat_hd[$I]}" "/mnt/$vfat_mnt"
  22.       let I="$I+1"
  23.    done
  24. J=0
  25. while [ $J -lt $j ]
  26.    do
  27.       umount "${vfat16_hd[$J]}"
  28.       vfat16_mnt=`echo ${vfat16_hd[$J]} | awk -F/ '{print $3}' `
  29.       mount -t vfat -o iocharset=utf8 "${vfat16_hd[$J]}" "/mnt/$vfat16_mnt"
  30.       let J="$J+1"
  31.    done
复制代码
然后把这个文件设为可执行(打开终端,chmod 0777 /tmp/001-core/etc/rc.d/rc.local)
也许会有前辈们问我为什么不加入ntfs的配置,关于这点,在slax 6.0.9 以后(以前的版本我不清楚,因为我只从6.0.9开始玩的slax)按我这套配置下来后,NTFS盘(移动硬盘)根本没有任何问题(读写也正常,ntfs-3g在内核文件中已内置了)。
言归正传
进入/tmp/001-core/sbin目录
新建两个文件,一个名叫 mount.vfat, 一个名叫  mount.ntfs ,注意大小写,一定要是小写的,文件内容如下:

mount.vfat

  1. #! /bin/sh
  2. /sbin/mount -i -t vfat -o fmask=133,dmask=022 "$@" -o rw,users,exec,suid,umask=0,check=s,codepage=936,utf8,shortname=mixed
复制代码
mount.ntfs

  1. #! /bin/sh
  2. /sbin/mount.ntfs-3g  -o fmask=133,dmask=022 "$@" -o rw,users,suid,dev,exec,locale=zh_CN.utf8,codepage=936,nls=utf8
复制代码
补充一下,把这两个文件给设成可执行:
  1. chmod 0777 /tmp/001-core/sbin/mount.vfat
  2. chmod 0777 /tmp/001-core/sbin/mount.ntfs
复制代码
接下来还有一个工作要做,到 /tmp/001-core/usr/share/locale 目录里,把 locale.alias 文件给删了,对,没错,删了!(Slax 的一个重要的原则,文件尽最大可能不要重复,这个文件与我们改的启动文件中的locale.alias文件重复了,如果locale.alias 文件放在这里,启动时你会收到 cat locale.alias文件找不到的错误,放到启动文件中去就没这个错误了)

找到 /tmp/001-core/etc/profile.d/ 目录下的  lang.csh 和 lang.sh 两个文件,进行如下修改:
lang.csh
  1. 把 setenv LANG 后面改成 zh_CN.utf8
  2. 把 setenv LC_COLLATE 后面改成 zh_CN.utf8
复制代码
lang.sh
  1. 把export LC_ALL= 后面改成 zh_CN.utf8
  2. 把export LANG= 后面改成 zh_CN.utf8
复制代码
然后再从文件管理器中找到/tmp/001-core目录,对着它点右键,选 "Build Slax Module",重新生成新的内核文件,得到新的 001-core.lzm,用这个文件把启动盘上 /slax/base/001-core.lzm这个文件给替换掉。

再用这个盘启动计算机,还是英文界面,没错,但是别急,因为X的管理不在这里,这里是底层的中文编码支持配置,正式的中文化是从 xorg 开始的。。。。。。。。

呵呵,这文章是我 AppleWolf 原创的,即兴写的。。。。。。。

[ 本帖最后由 applewolf 于 2009-8-14 04:45 编辑 ]
发表于 2009-10-8 14:17:39 | 显示全部楼层
写得如此详细的好文,为什么这么久了,我还是第一个跟帖的人?感谢lz
回复

使用道具 举报

发表于 2009-10-26 11:14:32 | 显示全部楼层
继续学习,谢谢楼主的奉献。
回复

使用道具 举报

发表于 2009-11-6 22:00:21 | 显示全部楼层

回复 1# applewolf 的帖子

很感谢楼主的很详细的步骤。

不过缺少了一点条理。每一部分究竟是干什么的?
让我这个新手看得很糊涂。

直接在slax的官网上下载了Chinese.fcitx6.lzm和Zh_English_KDE.lzm,挂载之后,fcitx不能用,另外要把字体重新设置为WenQuanYi Bitmap Song,不知道该怎么解决?
回复

使用道具 举报

发表于 2009-11-6 22:52:47 | 显示全部楼层

回复 1# applewolf 的帖子

再次感谢AppleWpe,从slax官网上下载了他的所有.lzm包,很轻松搞定了中文化。

mount那个是挂载分区的是明白的,可是这个core的到底是什么“底层”的中文配置呢?

[ 本帖最后由 felonwan 于 2009-11-6 23:10 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-11-11 01:41:11 | 显示全部楼层
原帖由 felonwan 于 2009-11-6 22:52 发表
再次感谢AppleWpe,从slax官网上下载了他的所有.lzm包,很轻松搞定了中文化。

mount那个是挂载分区的是明白的,可是这个core的到底是什么“底层”的中文配置呢? ...


呵呵,这个怎么说呢,如果试着编译一次 Slax 的内核,可能你会更明白一点,不管说不说得清了,我来说一下它的基本构成吧。

core 英文本意就是 核 的意思。而linux 内核是连接硬件平台与软件平台的中间介质。

我觉得 Tomas M 在这方面做得非常棒,他在处理内核时,把95%以上的内核驱动给M掉了,M掉就是指外挂化了,这样,内核文件本身体积就比较小,而且允许用户自己弹入新的外挂驱动。那么,这些驱动到哪儿去了?!
呵呵,不用我说,你也知道,在CORE这个文件中,你一定会问,CORE为什么这么大,驱动有这么多吗?!

其实,正常编译好内核后,总容量也就二十M不到一点,也就是说,CORE中不仅仅是内核的外挂驱动,Tomas M 还把基本系统运行库和一些C之类的编译工具给放进去了。至于究竟放了哪些东东,我记得我在官网论坛上看到过一篇贴子,就是每个包的列表,这个你可以找一下。

那么现在来说这个“底层”的问题。呵呵,这是我对它的定义,并不是官方的,之所以这样定义它,主要是它的内容构成,驱动,系统基本库,相对于SLAX 桌面系统来说,这些是Slax 系统包中的最最底层的包了。呵呵,所以我给它寇了个“底层”。

这个底层的中文配置其实是我自己对它的称呼,并不是什么特别的原因,主要是 Tomas M 把我们需要进行中文化修改的某些配置文件放到了这个包里,所以,我把这一步的修改称之为底层配置,我并不想大动系统,我的原则是尽可以一切维持原样,原汁原味化。

哈哈哈,请别介意,但这确确实实是我自己对它的定义。
回复

使用道具 举报

发表于 2009-11-15 09:17:35 | 显示全部楼层
继续学习!
回复

使用道具 举报

发表于 2010-7-30 10:05:35 | 显示全部楼层
理解和另外的方式:
applewolf添加的rc.conf就是把已经挂在的所有fat分区卸下来重新使用utf8挂载。恩,如果initrd.gz如我上一个帖子中设置好了的话,这个没必要了,applewolf只是想上个保险。
然后mount.vfat和mount.ntfs也是没有必要添加的,applewolf还是想上个保险。
lang.csh估计是用csh登录的时候设置locale的,这个一般不会用到,别管它了;lang.sh在开机的时候则一般会被执行,也是用来设置locale的,仔细看看着lang.sh,里面其实就是调用liblinuxlive中的locale_id来获取locale,如果获取不到才会变长en_US之类
所以呢,applewolf说的这些呢,都不必设置或者添加。
我的修改呢,因为core.lzm里也有个liblinuxlive,所以,请参考我上一个跟帖修改它。
这样基本都不会有问题了,截止今天(看发帖日期),slax官网上明确的下载链接仍是6.1.2,里面的ntfs-3g比较老了,使用它挂载需要指定locale参数(applewolf的mount.ntfs就是这么干的),而新版的ntfs-3g已经去掉了locale参数,也就是除了性能改进之外,它不再依赖于locale来挂载,他会把所有“乱码”按照utf8翻译过来——也就是说,使用新版的ntfs-3g吧,不需要任何配置,带汉字的文件都会出来了。
下载源码,编译,然后把编译出来的东西中的头文件(include目录)和静态库(.a)都去掉,剩下的都是会用到的(没几个文件了);我编译的时候出来的文件比较大,里面还带着调试信息,所以把这些个可执行文件和动态库(so文件)都用strip过一遍减减肥(不明白就跳过这一步),往core里覆盖就行。
回复

使用道具 举报

发表于 2011-1-13 09:35:11 | 显示全部楼层
安装在硬盘上,找不到/slax/base/001-core.lzm这个替换文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 23:01 , Processed in 0.289195 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表