• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Fedora Core 4.0 HAL配置即插即用移動存儲(USB及1394)的實踐

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    提要: 對于Fedora Core 4.0 中,普通用戶對即插即用支持的比較好;只是適當改一下,就能適合我們的需要;和新手弟兄同學中~ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 正文: +++++++++++++++++++++++++++++++++++++++++++++++++++++

    提要:對于Fedora Core 4.0 中,普通用戶對即插即用支持的比較好;只是適當改一下,就能適合我們的需要;和新手弟兄同學中~


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    正文:
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    由于本人思維固化,對新事物接受不足,所以在學習Fedora Core 4.0 總是用老思維;對于對移動存儲,比如U盤;移動硬盤;數碼相機,現在大多能在Linux即插即用;只有少數不行;比如筆記本集成的6合1讀卡器(好多都不支持,也有支持的);

    我對Fedora 用的極少,感覺Fedora 是實驗室,新的特性都會在Fedora 中出現,這增強Linux桌面版的易用性;其實這也是好事;

    對即插即用的USB存儲的原理,bbbush兄弟已經在《設置 fc3 HAL 的 storage-policy 自動掛載優盤上的 vfat 分區》中已經談過。大家可以去看一下,看過后思路就清晰多了;看過后此文后,功力也會大長;:)

    HAL - Hardware Abstraction Layer (硬件提取層),這是我直譯的,不知道怎么譯才好,以我的理解和Windows的硬件管理類似;

    而我寫的這篇其實一文不值,為什么這樣說呢?因為沒有技術含量,只是為了解決問題而寫,沒有原理,只是改幾行或者加幾行的字;可能對新手還有點用;


    一、USB移動存儲;

    數碼相機;MMC 卡, SD卡;USB MINI 盤;USB移動硬盤(有個USB接口的盒子,里面裝的是筆記本硬盤、大電腦硬盤),1394接口的移動存值儲;錄音筆;DV等,大多都是用的移動存儲;

    二、fat 、ntfs、fat32、reiserfs 、ext3及hfs文件系統的支持;

    Fedora core 4.0 幾乎支持所有文件系統,所以沒有必要編內核,如果您和我一樣有一個移動硬盤是NTFS分區的,請安裝內核NTFS模塊的支持;

    內核已經支持了fat格式的,無論是 fat16 fat32都已經支持;對于NTFS格式的文件系統的支持,要安裝NTFS的kernel-moduls ;我感覺NTFS移動磁盤分區,沒有太大的意義(但我有一個移動硬盤,有一個分區就是ntfs的),因為NTFS是不可寫的;所以還是用fat或者 fat32吧;

    如果您的機器有1394接口,如果想購買容量比較大的存儲設備,建議還是買1394接口的盒子,USB對大文件的寫入支持并不好,無論是什么文件系統(以事實說話,我試過);另外1394接口的硬盤,能在系統啟動的過程中穩定的加載;

    三、即插即用,系統自動mount 移動存儲設備;

    1、首先確保 以下的幾個服務是打開的;

    [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:關閉
    

    如果在3和5模式并未啟用,則需要打開;

    [root@localhost beinan]# chkconfig --level 0123456  haldaemon  on
    [root@localhost beinan]# chkconfig --level 0123456   messagebus  on
    

    在所有模式化全部打開;查看我們所提及的服務是否在所有模式運行;請用前面所說的 chkconfig --list |grep 服務器名;
    如果這樣做后,我們提到的這些服務,開機自動在所有模式下運行;不用我們人為去干涉了;不過有時為了調試,還得我們自己來打開和關閉;看下一部分;


    2、以standalone模式運行的服務,大多是在 /etc/init.d目錄中;

    用法:

    /etc/initrd  服務器   start|stop|status|restart|condrestart
    

    舉例:

    比如我們要開啟 haldaemon 服務器則是:

    [root@localhost beinan]# /etc/init.d/haldaemon  start
    啟動 HAL 守護進程:                                        [  確定  ]
    [root@localhost beinan]# /etc/init.d/haldaemon  restart
    正在關閉 HAL 守護進程:                                    [  確定  ]
    啟動 HAL 守護進程:                                        [  確定  ]
    [root@localhost beinan]# /etc/init.d/haldaemon  stop
    正在關閉 HAL 守護進程:                                    [  確定  ]
    [root@localhost beinan]# /etc/init.d/haldaemon  status
    hald 已停
    

    這個初學的弟兄都懂;start 啟動; restart 重啟; stop 停止;status 狀態;

    我們在本文提到的三個服務器,都在 /etc/init.d目錄中;

    3、其實如果能把上面的幾步弄好了,其實移動存儲設備大多都是即插即用的,同時也是自動掛載的;

    雖然系統即插即用了,但對權限可能不太符合我們的需要;另外如果在fat和ntfs文件系統中存放了文本,對文件名的中文支持不太友好;所以......解決.....

    四、解決vfat和ntfs文件系統正常顯示中文文件名和文件權限的解決;

    1、確認系統的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 ~]$
    

    如果您的系統編碼是gb2312、gbk、gb18030的;就不要改locale;我們只是改hal服務器的一個文件就行;


    2、改hal的配置文件;

    在Fedora 4.0 中,hal服務器關于移動存儲配置文件

    /usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi ;

    在更改之前,請備份;

    [root@localhost 10osvendor]# cp 10-storage-policy.fdi  10-storage-policy.fdiBAK
    

    我們打開 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>

    注:如果您的系統的編碼是 gb2312、gbk、gb18030或者其它的,請改我們加的那兩段中的 utf8的,改為cp936或者 gb2312 ;一步一步的實驗,總會行的通的;


    3、重啟 hal守護程序;

    [root@localhost beinan]# /etc/init.d/haldaemon restart
    正在關閉 HAL 守護進程:                                    [  確定  ]
    啟動 HAL 守護進程:                                        [  確定  ]
    


    4、插上USB或1394設備;點桌面的計算機就能看到磁盤的圖標;

    有時可能慢一點出來,是不是掛載了,掛載到哪去了,我們可以用 df -lh 來查看;

    [root@localhost beinan]# df -lh
    Filesystem            容量  已用 可用 已用% 掛載點
    /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、是不是權限能讓普通用戶可寫的測試;

    如果是fat 或者 fat32的文件格式,我們在 10-storage-policy.fdi 中這個文件中已經定義了mount的option ,比如 user 和rw,用戶可讀可寫;

    如果是ntfs的分區,我們設置了mount 的option 的umask=000 ,這樣所有的用戶都有所有的權限,但ntfs分區只能在 Linux 下可讀;沒有太大的意義;

    如果是ext3、reiserfs、ext2文件系統,如果能讓普通用戶擁有可讀寫的能力,查看掛載點到哪里了,執行一下 chmod -R 777 目錄名 ;這樣所有的用戶就可讀可寫可

    執行;而且每個用戶的文件相互獨立,相互之間保密;中文支持不存在問題,如果出現亂碼,可以用export LANG= 來臨時設置一下編碼;比如export LANG=zh_CN

    如果是其它文件格式,一是要支持內核才行;大多FC4 已經支持了,比如hfs文件系統;


    五、關于hal配置文件的學習的幾點提示;

    1、查看 /usr/share/doc/hal-0.5.2/conf

    2、查看 hal的包分而在系統的何處,也能打到一點提示的;

    [root@localhost beinan]# rpm -ql hal

    3、文檔在 /usr/share/doc/hal-0.5.2/ 的目錄;有配置文件的示例;

    4、HAL - Hardware Abstraction Layer (硬件提取層),

    這是我直譯的,還是硬件抽象層?感覺和windows的硬件管理有點類似;我們能通過lshal|more 來查看;

    [root@localhost beinan]# lshal |more

    還有一個更為直觀的工具; hal-gnome ,能通過apt 或者 yum 獲??;安裝完成后,有一個更為直觀的hal圖形界面;

    [root@localhost beinan]# hal-device-manager

    5、hal配置硬件較為靈活;而且語法也比較簡單

    我們應該根據 lshal 或者 hal-device-manager 來查看系統的設備;hal 能管理所有的設備;而且結構清晰清了;我也是為了解決問題,看了man 才找到 hal;后來又找到bbbush 兄弟的帖子,通過bbbush兄弟的帖子(一個大大的精華),我卻沒有發現,浪費了我好多的時間;:(

    目前我也只是在實踐中即插USB ;1394 移動存儲設備而用hal ,更直接的說是為了解決問題而做一些測試和實踐;更多的就不懂了:(

    如果想指定一個設備以 開頭,以結層,和html語法類似;匹配,如果想要把設置更精確的區配,應該在多次匹配;在這里面放上我們對設備所指行的動作,比如是否加載,如果是,就true ,是否關系是邏輯關系bool 型;也就是1和0,通過lshal能得到;另外 string 是字符串,比如mout_root (掛載點) /media ,這也在lshal中可以找到;所有的條件信息,都可以在 lshal 中得到;

    一個條件一行,是我們要未系統執行我們的動作的合集;而 是我們要求系統匹配硬件更為精確,應該是交集,比如有些設備,有些參數是一樣的,這種情況下要多次匹配;但是說越精確越好;比如移動存儲,我們可以找到所有的移動存儲的相同信息來 ,這樣共性的設備就能動起來了;

    我只是說一點點原理,其實系統默認的配置文件足可以讓我們的設備動起來;沒有必要改動的太多;

    后記:為新手而寫;和新手弟兄同學,希望能與弟兄們交流;

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>