|
|
发表于 2009-9-21 18:55:09
|
显示全部楼层
终于,我也搞定了U盘的自动挂载了。
以前挂载fat32格式的U盘的时候,老是失败。
原来是
- CONFIG_FAT_DEFAULT_CODEPAGE=936
- CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
复制代码
这两项不能为空,我在以前配置内核的时候,把CONFIG_FAT_DEFAULT_IOCHARSET=置空了。
如今,加上CONFIG_FAT_DEFAULT_IOCHARSET="cp936",重新genkernel就OK了。
貌似,随然mount的vfat的时候制定-o utf8会忽略codepage和iocharset的设置(我手工mount一个vfat试过,指定了iocharset以后,不指定utf8和指定utf8的挂在效果是不一样的,在utf8的locale下,前者是乱码,后者就显示正常的汉字了),但是却必须指定这两个参数。如果不指定的话,就会提示no found。
虽然可以在/etc/hal/fdi/policy/storage-vfat.fdi中merge key一个iocharset=cp936,但是KDE4的kdebase-runtime中的kioslave组件只能识别utf8挂载选项,不能识别iocharset和codepage。见《shortname以及自动挂载》,里面有源代码为证的。
所以如果kernel中,如果忽略了CONFIG_FAT_DEFAULT_CODEPAGE
和CONFIG_FAT_DEFAULT_IOCHARSET的设置,即是在hal中添加了,也导致KDE挂载U盘的时候失败,因为hal仅提供设备属性(lshal能看到对应设备出现了iocharset和codepage属性),真正的挂载动作还是KDE执行的,KDE的kioslave天生没有识别并指定iocharset和codepage的能力,在挂载的时候就永远不会指定iocharset和codepage挂载参数,导致挂载失败,其中内核配置的时候哪个没设置,就会在dmesg中提示哪个no found。
多谢newsky_老兄的大力支持,终于我走出迷宫了。 |
|