分享
 
 
 

设置fc3HAL自动挂载优盘上的vfat分区

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

内容部分是翻译,参见 redhat magazine 第一期中,关于 fedora core 3 新特性的文章

http://www.redhat.com/magazine/001nov04/features/fedoracore3/

Meet Fedora Core 3

by Warren Togami and Colin Charles

* Introduction

* Desktop Improvements

* Behind the Desktop

* NetworkManager

* International Language Input

* Multimedia and Fun

* GCC

* Faster Updates

* Common Gotchas in Fedora Core 3

* Looking Ahead

* About the Authors

本来把文档翻译了一遍,但是在后台打开另一个网页时,firefox 挂掉了

本来还做了很多很多评注的。把大概意思说说

FC3 的新东西,包括 gnome-2.8, kernel-2.6.9, gcc-3.4.2 等等。(文中就是这样说的, 而论坛上大家关心的 fat32, ntfs, mp3, nvidia,fonts 等等几乎不可能成为自由软件的东西是永远不会出现的。)(所有其他发行版都会用到 redhat 在 linux 的开发中做出的贡献,并不是只有一个公司会受益。即使你使用别的发行版,也有一大半的组件是 redhat 的作品,那么用 fedora 有什么不好?)

fedora 中主要的新内容,是设备的即插即用。这一套并不是表面上可以看到的。它主要由 hotplug, udev, D-BUS, HAL, gamin 几个组件组成。

hotplug 是内核的一部分,在设备插入或拔出时,自动进行配置内核状态。udev 是 hotplug 的一部分,负责维护动态的 /dev 目录,使 /dev 目录的内容与当前系统状态一致。D-BUS 可以在应用程序之间传送消息,例如可以把“连接上一台打印机”的消息发送给 HAL。HAL 可以集成多种来源的信息,包括内核消息,配置文件等等,然后根据 D-BUS 的消息进行操 作。gamin 是改进的文件状态监视程序。

例如插入优盘。hotplug 自动加载需要的模块,udev 创建相应的 /dev/sda1 等等节点,hotplug 向 HAL 发消息,HAL 收到消息后,根据配置文件,它运行 fstab-sync 来修改 fstab,创建 /media 的子目录作为挂载点。gamin 检测到 fstab 发生变化之后,通知桌面系统。桌面系统在 “计算机” 项目中建立驱动器图标。

在拔出优盘时,与上面的过程类似,模块被卸载,设备文件被删除,fstab 中相应条目被删除,/media 目录下的挂载点也被删除了。

如果认为 autofs 或者手动 mount 比这个要简单,那么可以同时使用两个优盘,试试看哪个更好用。

这个过程非常有用,不同的设备都可以用这个过程,例如音乐 CD 放入光驱后,HAL 可以启动播放程序或者抓轨程序等等。另一个最重要的用途,在 redhat magazine 第三期中提到了,是 NetworkManager。因为使用移动无线通讯的用户可能会频繁更换网络的连接方式,只有用 hotplug 和 hal 等协作,才可能快速地作出反应,动态切换网络配置。

gnome-2.8 对于 gnome-2.6 的改进,体现在文件选择框上。只要按任意键,就会弹出简单 的搜索窗口,可以更快地找到自己需要的内容。如果按下 `/' 键,那么会跳出与在 nautilus 中按下 ctrl-l 一样的跳转位置框。

evolution-2.0 采用了 SpamAssassin,垃圾邮件的防范非常出色。另外还有 gpg 等等非常重要的功能。至于去掉的新闻功能,使用 firefox 的动态书签可以更方便.

忘了其他的了。

建议大家关心一下 redhat magazine 中关于 fedora 的内容,有些是非常精彩的!

设置 hal 的 mount policy 使优盘自动挂载可以正常工作

声明

部分转载并翻译自 redhat 网站,本文遵循 GNU FDL,仅正文部分可自由修改,重发布时正 文之外的部分必须同时原样发布。译者对未告知作者表示歉意,但对误读的后果表示不负责。

正文开始

由于 fc3 内核默认 fat32 文件系统字符编码是 ascii,如果优盘的文件名包含中文,那么在转换时会出问题,应用程序就会失去响应。具体的表现有多种,比如桌面假死,关机时提示无法卸载分区等等

解决的办法是在挂载时,根据语言环境 locale 的值,使用挂载参数。如果是 UTF-8 那么就用 mount -o utf8,如果是 GB* 那么就用 mount -o iocharset=cp936。但是这样繁琐地手动挂载就失掉了 FC3 的好处。正确的解决办法,是添加自己的配置文件,我的是这样

代码:

[yuan@jackycom ~/Desktop]$ cat /usr/share/hal/fdi/95userpolicy/storage-policy.fdi

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

<device>

<match key="@block.storage_device:storage.removable" bool="true">

<merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge>

<merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge>

<merge key="volume.policy.mount_option.users" type="bool">true</merge>

<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>

</match>

<match key="@block.storage_device:storage.hotpluggable" bool="true">

<merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge>

<merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge>

<merge key="volume.policy.mount_option.users" type="bool">true</merge>

<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>

</match>

</device>

</deviceinfo>

原理正如上面所说,hal 在收到优盘插入的通知时,将读取这些 storage policy 配置文件。在改写 /etc/fstab 时,将用到配置文件中的数据,将这些 mount_option 全部加入 fstab 中去。

如何测试效果

测试效果的办法简单得很,但是不要急着插入优盘,而是应当先运行

代码:

service haldaemon restart

然后插入优盘。几秒钟之后,桌面上会出现优盘图标。看看你的 fstab,如果多了这样一行

代码:

/dev/sda1 /media/YUAN vfat pamconsole,utf8,users,dmask=0,fmask=111,noatime,sync,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0

那么说明没什么问题。也许你的系统中 selinux 已经被关闭了,所以参数没有这么长。访问优盘,应该不会再出错了。

可能的问题

如果你的语言环境是 gb2312,那么要把上面的配置文件稍微修改一下,把两次出现的 utf8 修改为 iocharset=cp936

小心配置文件中的拼写错误

如果仍然会挂起或死机,那么可能 haldaemon 没有重启动,甚至可能被关闭了。运行

代码:

chkconfig haldaemon on

chkconfig messagebus on

service messagebus restart

service haldaemon restart

命令的可重复性

不要手动修改 /etc/fstab,所有修改都会被丢弃掉,应该只修改 hal 的配置文件

因为我们只新建了一个配置文件,然后重启了一个服务,因此可重复性应该很好。配置文件中的选项如果发生冲突,据说将使用读取时靠后的一个,也就是说 95userpolicy 将比 90defaultpolicy 后读取?

与其他方案的兼容性

autofs 修改的是 /etc/auto.misc 和 /etc/auto.master,不会有冲突

手动挂载,或手动修改 /etc/fstab, 在重启后都将失效,因为 haldaemon 将接管 fstab 文件,除非在 fstab 中加入选项 unmanaged (?)

如何回退到最初的状态

因为只添加了一个配置文件,因此只要将它删除就可以了。另外最好执行一次

代码:

service haldaemon restart

正文结束

后记

这篇文档中的配置文件已经没有意义了,因为它的主要目的是添加 utf8 选项,而新版本的 hal 中已经包含了这个配置。并且,新版本的配置文件中使用 volume.fstype 作为匹配时的关键字,具有更好的通用性,当优盘是其他格式时仍然可用。代码如下,节选自新的 90defaultpolicy/storage-policy.fdi

代码:

<!-- Use UTF-8 charset for vfat -->

<match key="volume.fstype" string="vfat">

<merge key="volume.policy.mount_option.iocharset=utf8" ype="bool">true</merge>

</match>

所以仿照这个文件,将自定义的策略文件 /usr/share/hal/fdi/95userpolicy/storage-policy.fdi 修改如下

代码:

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

<device>

<match key="block.is_volume" bool="true">

<match key="volume.fsusage" string="filesystem">

<match key="volume.fstype" string="vfat">

<merge key="volume.policy.mount_option.fmask=111" type="bool">true</merge>

<merge key="volume.policy.mount_option.dmask=0" type="bool">true</merge>

<merge key="volume.policy.mount_option.users" type="bool">true</merge>

<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>

</match>

</match>

</match>

</device>

</deviceinfo>

update:

在新的 hal-0.50 中,配置文件的位置发生了变化,因此如果以前做过上面所说的设置,那么必须在安装之后,将 /usr/share/hal/fdi/95userpolicy 移动到 policy 子目录中,也就是说,移动后成为 /usr/share/hal/fdi/policy/95userpolicy 目录

如果以前没有做过任何设置,那么只要新建 /usr/share/hal/fdi/policy/95userpolicy 目录,并按照上面的内容复制配置文件就可以了

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有