Fedora Core 4.0 HAL配置即插即用移動(dòng)存儲(chǔ)(USB及1394)的實(shí)踐
更新時(shí)間: 2007-02-08 01:29:57來(lái)源: 粵嵌教育瀏覽量:1673
由于本人思維固化,對(duì)新事物接受不足,所以在學(xué)習(xí)Fedora Core 4.0 總是用老思維;對(duì)于對(duì)移動(dòng)存儲(chǔ),比如U盤(pán);移動(dòng)硬盤(pán);數(shù)碼相機(jī),現(xiàn)在大多能在Linux即插即用;只有少數(shù)不行;比如筆記本集成的6合1讀卡器.
我對(duì)Fedora 用的極少,感覺(jué)Fedora 是實(shí)驗(yàn)室,新的特性都會(huì)在Fedora 中出現(xiàn),這增強(qiáng)Linux桌面版的易用性;其實(shí)這也是好事;
對(duì)即插即用的USB存儲(chǔ)的原理,bbbush兄弟已經(jīng)在《設(shè)置 fc3 HAL 的 storage-policy 自動(dòng)掛載優(yōu)盤(pán)上的 vfat 分區(qū)》中已經(jīng)談過(guò)。大家可以去看一下,看過(guò)后思路就清晰多了;看過(guò)后此文后,功力也會(huì)大長(zhǎng);:)
HAL - Hardware Abstraction Layer (硬件提取層),這是我直譯的,不知道怎么譯才好,以我的理解和Windows的硬件管理類(lèi)似;
而我寫(xiě)的這篇其實(shí)一文不值,為什么這樣說(shuō)呢?因?yàn)闆](méi)有技術(shù)含量,只是為了解決問(wèn)題而寫(xiě),沒(méi)有原理,只是改幾行或者加幾行的字;可能對(duì)新手還有點(diǎn)用;
一、USB移動(dòng)存儲(chǔ);
數(shù)碼相機(jī);MMC 卡, SD卡;USB MINI 盤(pán);USB移動(dòng)硬盤(pán)(有個(gè)USB接口的盒子,里面裝的是筆記本硬盤(pán)、大電腦硬盤(pán)),1394接口的移動(dòng)存值儲(chǔ);錄音筆;DV等,大多都是用的移動(dòng)存儲(chǔ);
二、fat 、ntfs、fat32、reiserfs 、ext3及hfs文件系統(tǒng)的支持;
Fedora core 4.0 幾乎支持所有文件系統(tǒng),所以沒(méi)有必要編內(nèi)核,如果您和我一樣有一個(gè)移動(dòng)硬盤(pán)是NTFS分區(qū)的,請(qǐng)安裝內(nèi)核NTFS模塊的支持;
內(nèi)核已經(jīng)支持了fat格式的,無(wú)論是 fat16 fat32都已經(jīng)支持;對(duì)于NTFS格式的文件系統(tǒng)的支持,要安裝NTFS的kernel-moduls ;我感覺(jué)NTFS移動(dòng)磁盤(pán)分區(qū),沒(méi)有太大的意義(但我有一個(gè)移動(dòng)硬盤(pán),有一個(gè)分區(qū)就是ntfs的),因?yàn)镹TFS是不可寫(xiě)的;所以還是用fat或者fat32吧;
如果您的機(jī)器有1394接口,如果想購(gòu)買(mǎi)容量比較大的存儲(chǔ)設(shè)備,建議還是買(mǎi)1394接口的盒子,USB對(duì)大文件的寫(xiě)入支持并不好,無(wú)論是什么文件系統(tǒng)(以事實(shí)說(shuō)話,我試過(guò));另外1394接口的硬盤(pán),能在系統(tǒng)啟動(dòng)的過(guò)程中穩(wěn)定的加載;
三、即插即用,系統(tǒng)自動(dòng)mount 移動(dòng)存儲(chǔ)設(shè)備;
1、首先確保 以下的幾個(gè)服務(wù)是打開(kāi)的;
[root@localhost beinan]# chkconfig --list |grep haldaemon
haldaemon 0:啟用 1:啟用 2:啟用 3:啟用 4:啟用 5:啟用 6:啟用
[root@localhost beinan]# chkconfig --list |grep messagebus
messagebus 0:啟用 1:啟用 2:啟用 3:啟用 4:啟用 5:啟用 6:關(guān)閉
如果在3和5模式并未啟用,則需要打開(kāi);
[root@localhost beinan]# chkconfig --level 0123456 haldaemon on
[root@localhost beinan]# chkconfig --level 0123456 messagebus on
在所有模式化全部打開(kāi);查看我們所提及的服務(wù)是否在所有模式運(yùn)行;請(qǐng)用前面所說(shuō)的 chkconfig --list |grep 服務(wù)器名;
如果這樣做后,我們提到的這些服務(wù),開(kāi)機(jī)自動(dòng)在所有模式下運(yùn)行;不用我們?nèi)藶槿ジ缮媪耍徊贿^(guò)有時(shí)為了調(diào)試,還得我們自己來(lái)打開(kāi)和關(guān)閉;看下一部分;
2、以standalone模式運(yùn)行的服務(wù),大多是在 /etc/init.d目錄中;
用法:
/etc/initrd 服務(wù)器 start|stop|status|restart|condrestart
舉例:
比如我們要開(kāi)啟 haldaemon 服務(wù)器則是:
[root@localhost beinan]# /etc/init.d/haldaemon start
啟動(dòng) HAL 守護(hù)進(jìn)程: [ 確定 ]
[root@localhost beinan]# /etc/init.d/haldaemon restart
正在關(guān)閉 HAL 守護(hù)進(jìn)程: [ 確定 ]
啟動(dòng) HAL 守護(hù)進(jìn)程: [ 確定 ]
[root@localhost beinan]# /etc/init.d/haldaemon stop
正在關(guān)閉 HAL 守護(hù)進(jìn)程: [ 確定 ]
[root@localhost beinan]# /etc/init.d/haldaemon status
hald 已停
這個(gè)初學(xué)的弟兄都懂;start 啟動(dòng); restart 重啟; stop 停止;status 狀態(tài);
我們?cè)诒疚奶岬降娜齻€(gè)服務(wù)器,都在 /etc/init.d目錄中;
3、其實(shí)如果能把上面的幾步弄好了,其實(shí)移動(dòng)存儲(chǔ)設(shè)備大多都是即插即用的,同時(shí)也是自動(dòng)掛載的;
雖然系統(tǒng)即插即用了,但對(duì)權(quán)限可能不太符合我們的需要;另外如果在fat和ntfs文件系統(tǒng)中存放了文本,對(duì)文件名的中文支持不太友好;所以......解決.....
四、解決vfat和ntfs文件系統(tǒng)正常顯示中文文件名和文件權(quán)限的解決;
1、確認(rèn)系統(tǒng)的locale ;
[beinan@localhost ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[beinan@localhost ~]$
如果您的系統(tǒng)編碼是gb2312、gbk、gb18030的;就不要改locale;我們只是改hal服務(wù)器的一個(gè)文件就行;
2、改hal的配置文件;
在Fedora 4.0 中,hal服務(wù)器關(guān)于移動(dòng)存儲(chǔ)配置文件
/usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi ;
在更改之前,請(qǐng)備份;
[root@localhost 10osvendor]# cp 10-storage-policy.fdi 10-storage-policy.fdiBAK
我們打開(kāi) 10-storage-policy.fdi 文件;然后可以加下面的兩段;
<device>
<match key="volume.fsusage" string="filesystem">
<match key="volume.fstype" string="vfat">
<merge key="volume.policy.should_mount" type="bool">true</merge>
<merge key="volume.policy.mount_option.auto" type="bool">true</merge>
<merge key="volume.policy.mount_option.user" type="bool">true</merge>
<merge key="volume.policy.mount_option.rw" type="bool">true</merge>
<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
</match>
</match>
</device>
<device>
<match key="volume.fsusage" string="filesystem">
<match key="volume.fstype" string="ntfs">
<merge key="volume.policy.should_mount" type="bool">true</merge>
<merge key="volume.policy.mount_option.auto" type="bool">true</merge>
<merge key="volume.policy.mount_option.user" type="bool">true</merge>
<merge key="volume.policy.mount_option.umask=000" type="bool">true</merge>
<merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
</match>
</match>
</device>
加在下面這段的后面;
<device>
<match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
<merge key="storage.policy.default.mount_root" type="string">/media</merge>
<merge key="storage.policy.default.use_managed_keyword" type="bool">true</merge>
<merge key="storage.policy.default.managed_keyword.primary" type="string">managed</merge>
<merge key="storage.policy.default.managed_keyword.secondary" type="string">kudzu</merge>
<merge key="storage.policy.default.mount_option.noauto" type="bool">true</merge>
<merge key="storage.policy.default.mount_option.pamconsole" type="bool">true</merge>
<merge key="storage.policy.default.mount_option.exec" type="bool">true</merge>
</match>
</device>
注:如果您的系統(tǒng)的編碼是 gb2312、gbk、gb18030或者其它的,請(qǐng)改我們加的那兩段中的 utf8的,改為cp936或者 gb2312 ;一步一步的實(shí)驗(yàn),總會(huì)行的通的;
3、重啟 hal守護(hù)程序;
[root@localhost beinan]# /etc/init.d/haldaemon restart
正在關(guān)閉 HAL 守護(hù)進(jìn)程: [ 確定 ]
啟動(dòng) HAL 守護(hù)進(jìn)程: [ 確定 ]
4、插上USB或1394設(shè)備;點(diǎn)桌面的計(jì)算機(jī)就能看到磁盤(pán)的圖標(biāo);
有時(shí)可能慢一點(diǎn)出來(lái),是不是掛載了,掛載到哪去了,我們可以用 df -lh 來(lái)查看;
[root@localhost beinan]# df -lh
Filesystem 容量 已用 可用 已用% 掛載點(diǎn)
/dev/hda8 11G 5.9G 4.5G 58% /
/dev/shm 236M 0 236M 0% /dev/shm
/dev/sdc5 5.2G 63M 4.9G 2% /media/usbdisk2
/dev/sdc1 4.2G 1.4G 2.8G 34% /media/usbdisk1
/dev/sdb1 988M 3.7M 984M 1% /media/usbdisk
/dev/sda1 56G 22G 35G 39% /media/ieee1394disk
5、是不是權(quán)限能讓普通用戶(hù)可寫(xiě)的測(cè)試;
如果是fat 或者 fat32的文件格式,我們?cè)?10-storage-policy.fdi 中這個(gè)文件中已經(jīng)定義了mount的option ,比如 user 和rw,用戶(hù)可讀可寫(xiě);
如果是ntfs的分區(qū),我們?cè)O(shè)置了mount 的option 的umask=000 ,這樣所有的用戶(hù)都有所有的權(quán)限,但ntfs分區(qū)只能在 Linux 下可讀;沒(méi)有太大的意義;
如果是ext3、reiserfs、ext2文件系統(tǒng),如果能讓普通用戶(hù)擁有可讀寫(xiě)的能力,查看掛載點(diǎn)到哪里了,執(zhí)行一下 chmod -R 777 目錄名 ;這樣所有的用戶(hù)就可讀可寫(xiě)可
執(zhí)行;而且每個(gè)用戶(hù)的文件相互獨(dú)立,相互之間保密;中文支持不存在問(wèn)題,如果出現(xiàn)亂碼,可以用export LANG= 來(lái)臨時(shí)設(shè)置一下編碼;比如export LANG=zh_CN
如果是其它文件格式,一是要支持內(nèi)核才行;大多FC4 已經(jīng)支持了,比如hfs文件系統(tǒng);
五、關(guān)于hal配置文件的學(xué)習(xí)的幾點(diǎn)提示;
1、查看 /usr/share/doc/hal-0.5.2/conf
2、查看 hal的包分而在系統(tǒng)的何處,也能打到一點(diǎn)提示的;
[root@localhost beinan]# rpm -ql hal
3、文檔在 /usr/share/doc/hal-0.5.2/ 的目錄;有配置文件的示例;
4、HAL - Hardware Abstraction Layer (硬件提取層),
這是我直譯的,還是硬件抽象層?感覺(jué)和windows的硬件管理有點(diǎn)類(lèi)似;我們能通過(guò)lshal|more 來(lái)查看;
[root@localhost beinan]# lshal |more
還有一個(gè)更為直觀的工具; hal-gnome ,能通過(guò)apt 或者 yum 獲取;安裝完成后,有一個(gè)更為直觀的hal圖形界面;
[root@localhost beinan]# hal-device-manager
5、hal配置硬件較為靈活;而且語(yǔ)法也比較簡(jiǎn)單
我們應(yīng)該根據(jù) lshal 或者 hal-device-manager 來(lái)查看系統(tǒng)的設(shè)備;hal 能管理所有的設(shè)備;而且結(jié)構(gòu)清晰清了;我也是為了解決問(wèn)題,看了man 才找到 hal;后來(lái)又找到bbbush 兄弟的帖子,通過(guò)bbbush兄弟的帖子(一個(gè)大大的精華),我卻沒(méi)有發(fā)現(xiàn),浪費(fèi)了我好多的時(shí)間;:(
目前我也只是在實(shí)踐中即插USB ;1394 移動(dòng)存儲(chǔ)設(shè)備而用hal ,更直接的說(shuō)是為了解決問(wèn)題而做一些測(cè)試和實(shí)踐;更多的就不懂了:(
如果想指定一個(gè)設(shè)備以 開(kāi)頭,以結(jié)層,和html語(yǔ)法類(lèi)似;匹配,如果想要把設(shè)置更精確的區(qū)配,應(yīng)該在多次匹配;在這里面放上我們對(duì)設(shè)備所指行的動(dòng)作,比如是否加載,如果是,就true ,是否關(guān)系是邏輯關(guān)系bool 型;也就是1和0,通過(guò)lshal能得到;另外 string 是字符串,比如mout_root (掛載點(diǎn)) /media ,這也在lshal中可以找到;所有的條件信息,都可以在 lshal 中得到;
一個(gè)條件一行,是我們要未系統(tǒng)執(zhí)行我們的動(dòng)作的合集;而 是我們要求系統(tǒng)匹配硬件更為精確,應(yīng)該是交集,比如有些設(shè)備,有些參數(shù)是一樣的,這種情況下要多次匹配;但是說(shuō)越精確越好;比如移動(dòng)存儲(chǔ),我們可以找到所有的移動(dòng)存儲(chǔ)的相同信息來(lái) ,這樣共性的設(shè)備就能動(dòng)起來(lái)了;
我只是說(shuō)一點(diǎn)點(diǎn)原理,其實(shí)系統(tǒng)默認(rèn)的配置文件足可以讓我們的設(shè)備動(dòng)起來(lái);沒(méi)有必要改動(dòng)的太多;
后記:為新手而寫(xiě);和新手弟兄同學(xué),希望能與弟兄們交流;
參考:
1、 《設(shè)置 fc3 HAL 的 storage-policy 自動(dòng)掛載優(yōu)盤(pán)上的 vfat 分區(qū)》── bbbush
2、 HAL 官方站: http://freedesktop.org/Software/hal
4、 man fsck-sync
5、 man mount
6、 http://www.ometer.com/hardware.html
7、 http://vrfy.org/projects/hal/hal-spec.htm
粵嵌動(dòng)態(tài)
推薦閱讀
- ·湖北精實(shí)機(jī)電科技有限公司專(zhuān)場(chǎng)招聘會(huì)(長(zhǎng)沙校區(qū))
- ·信號(hào)量與互斥鎖在資源競(jìng)爭(zhēng)中的協(xié)同控制機(jī)制
- ·粵嵌科技2025年中總結(jié)大會(huì)召開(kāi)——擘畫(huà)產(chǎn)教融合新藍(lán)圖
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專(zhuān)場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國(guó)家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式