2008年10月22日 星期三
Linux 使用 USB 裝置筆記
USB Univeral Serial Bus (通用串列匯流排),常見的外部匯流排,支援熱插拔 (hot plugable),一個 USB 最多可以連接127個裝置。
目前規格包括:
1.USB 1.1 支援二種傳輸速率:Low speed - 1.5 Mbps 及 Full Speed - 12 Mbps。
2.USB 2.0 傳輸速率 480 Mbps 並支援 USB 1.1。
USB 採用 Single-Master (單主控) 設計,線路架構就像多個點對點的樹狀結構,具 USB 介面的 PC 至少有一個 "root hub",並提供二個外接孔供 USB 設備或另一個 USB hub。在電腦中的 USB 主控器會去 poll USB 匯流排上的各個裝置,每個 USB 設備連接到主機時,USB 主控器會分配一個代碼給該裝置,並讀取該裝置的描述表 (Device Descriptor) 以獲知裝置的硬體資訊。
USB 主控器(USB hoot Controller) 分為三種規格:
1.OHCI (Open Host Controller Interface):USB 1.1 規格,Compaq(康柏)公司主導, 使用廠商包括 Compaq、iMacs、OPTi、SIS、ALi,採用 Memory-mapped 的 I/O 方式 (CPU 使用記憶體指令來存取 USB 主控器)。
2.UHCI (Universal Host Controller Interface) :USB 1.1 規格,Intel公司提倡, 線路比 OHCI 線路簡單,但是需要比較複雜的驅動程式,對CPU負擔也微重了些,使用廠商包括 Intel、VIA,採用 I/O-mapped 的 I/O 方式 (CPU 使用 I/O 指令來存取 USB 主控器)。
3.EHCI (Enhanced Host Controller Interface):USB 2.0 規格,速度較快 (480 Mbps),支援 USB 1.1,相容於 OHCI 和 UHCI。
Linux 對 USB的支援
Linux 從 kernel 2.2.7 版本便開始支援 USB,USB 2.0 是從 2.4.19 開始, Linux 以三層式架構來支援 USB 系統,這三層是內核層 (Core) 、主控層 (Controller)、裝置層 (Device)。內核層指的是 kernel 對 USB 系統的支援,主控層對應到不同規格的 USB 主控器,連接 USB 設備時不必考慮主控器的規格,裝置層的設定,依裝置類型會有所不同。
Linux USB 驅動程式共有三種不同的 USB 主控制器選項,因為在主板和 PCI 卡上有三種不同類型的 USB 控制晶片。
1.EHCI (ehci-hcd.o) :USB 2.0 協定的晶片。
2.OHCI (usb-ohci.o) :非 PC 系統上的(以及帶有 SiS 和 ALi 晶片組的 PC 主板上的)USB 晶片。
3.UHCI (usb-uhci.o) :大部份 PC 主機板(包括 Intel 和 Via)。
在 Linux 下可查詢 /proc/pci 所記錄的 PCI 子系統資源配置情況,或指令 lspci,從中分辦出 USB 主控器屬於那種規格,只需載入 USB 類型對應的 ?HCI 驅動程式即可,若單獨載入 EHCI 不行,則根據主板類型載入UHCI 或 OHCI 後,再載入EHCI。
使用 usbmodules 指令可查詢己連接至系統的 USB 裝置有那些可以使用的核心驅動模組,在載入/卸載核心模組會利用到 usbmodules 程式,利用 hotplug 或 usbmgr 程式可以在 USB 裝置與電腦連接/移除時,自動載入/卸載核心模組、執行相關 Scripts。
Linux 相關的指令和檔案:
mount none /proc/bus/usb -t usbdevfs
usbmodules
hotplug
usbmgr
/etc/usbmgr/
/etc/hotplug/
Linux 對應USB設備一些常用必要的驅動程式模組:
usbcore.o:支援usb所需要的最基礎模組。
usb-uhci.o / usb-ohci.o / ehci-hcd.o:USB 控制晶片驅動程式。
uhci.o :另一個uhci驅動程式,一般不需載入,可能會當機。
hid.o:USB人機界面設備,如滑鼠、鍵盤。
usbmouse.o:USB滑鼠(還需再載入mousedev.o)。
usbkbd.o:USB鍵盤(還需再載入keybdev.o)。
usb-storage.o:USB 存儲設備,Flash Disk 等。
usbnet.o:USB並聯線,讓兩部電腦資料透過USB傳輸。
Linux 相關驅動程式模組:
ide-disk.o :IDE硬碟。
ide-scsi.o :把IDE設備類比SCSI介面。
scsi_mod.o:SCSI 裝置。
sd_mod.o:SCSI硬碟。
sr_mod.o:SCSI光碟機。
sg.o:SCSI 一般裝置,在某些 Flash Disk、SCSI裝置偵測中會使用到。
Linux 使用 Flash Disk 需要載入的模組:
1.usbcore
2.usb-uhci / usb-ohci / ehci-hcd
3.scsi_mod
4.sd_mod
5.usb-storage
轉貼: Yu-Min Space 位於
http://yu-minspace.blogspot.com/2007/05/usb-usb-univeral-serial-bus-hot.html
2008年6月9日 星期一
請不要用 Foxy !
誠摯的建議您,Foxy 少用。
1. 有病毒
2. 很耗資源 (不管是 CPU 或者是 網路頻寬)
3. 很消耗硬體
說實在,以前我在管系實驗室時,最討厭就是學長或學弟在裡面放 Foxy。更討厭女同學抱著筆電哭著請我幫他修理時,裡面大剌剌開著 Foxy。
原因有幾個。
1. 很多人他沒有裝防毒軟體或是防火牆的觀念。
上面抓的東西,他也沒有安全概念,一拉回來點兩下就開了。
(1)沒裝防火牆而灌 foxy,別人很輕易的就知道有你這台電腦門戶洞開。
自然什麼啥阿貓阿狗的蠕蟲就會爬進來。
(2)沒裝防毒軟體而灌 foxy,其實很多人不知道,現在很多壓縮包和
exe 甚至連影片檔,都是有加料過的。也就是毒/木馬會被包裹在
上面,當你慾火焚身點下去的那一剎那,也是中標的時候 XD
2. 很多人不懂電腦,所以不懂 p2p 甚至 foxy 的原理,實質上會對硬體造成什麼損害。
foxy 就是採用 p2p 原理,只不過仔細去分析他的封包,就會發現他的抓檔手段很惡質。
我們都知道 p2p 原理就是把檔案切成一份一份,眾人各持有不同等份,透過 peer 交換機制,來達到各取所需的作用。機器會不斷的發出 request去問其他人有沒有缺的部分,有人有,再跟他抓回來。
(1) foxy 會抓檔那麼快的原因,就是因為他是以極暴力的手段,一次送幾十個連線去發出 request,幾近我們以前的”砍站行為”去“砍 peer”。
前面有人提到,分享器會掛掉,沒錯!!
林背還有遇過 switch 被 foxy 打掛的情形勒,這就是為什麼我那麼痛恨 foxy。整個實驗室幾十台 pc 用的網路,被一台 pc 上的 foxy打掛網路,你說幹不幹,別人都不用用網路了是不是。
暴力程度: foxy >>>>>>>> BitComet >>> emule。
為什麼這麼慘呢?
上面說過了, foxy 是幾乎以砍站行為去砍 peer。所以當你去抓人家檔時,你一次送出的並不是幾十個連線。因為你可能發現有 10 個人有這份檔案,所以你作的可能是發出幾百個 request。而你如果擁有數十份熱門 AV 檔呢? 哈哈,大家都來 request 你的電腦,如果你是直接一條網路線+一張網卡上網還好。你自己電腦 lag 到爆而已。但是你如果前面是接 hub / 分享器 / switch 呢,恭喜你,你即將成為被公幹的對象….
大家不但不用用網路了(因為塞到爆)。而且機器還可能被你的無知行為打爛。
其他的 p2p 軟體,現在都很好心的有作了限連線數甚至限流動作。
但是呢? foxy 沒有。然後這些愛用的人,又甚至連要裝限速軟體的常識都沒有。甚至他知道要裝,但是他只顧抓檔懶得裝。
遇到這種人,我第一句話就是問候他娘親。要是我室友,我就直接從幹網路設備上檔掉他的 mac address,要是他的電腦因此壞了,林背連他資料都懶得備,直接叫他重灌。
(2) 很多人不知道硬碟讀寫是怎樣運作的。
硬碟就是一個大圓盤。分區分格存你的資料。所以我們買來一顆硬碟要先幫他”格式化”(就是切成一格一格的拉),才能開始使用。
很多人常常誤以為,你存一個 100mb 的檔,假設 4mb 存一個格子的話,就是連續儲存在 25 格的位子上。錯了!!!! 如果你的硬碟不常重整的話。
你可能是存在非常零散間斷的 25 格上。as i said,他是一個大圓盤,所以這 25 格有可能是存在相差 180 度的位置上。所以當 p2p 軟體啟動時,很多人跟你要這個檔的第 2 格和第 4 格資料。你的硬碟就會一下讀第2格,一下讀第4格。偏偏這兩個差了180度的位置。想像一下我一次被要求發出500次對2和第4格的命令吧。幹,你硬碟連續這樣被濫操幾個月,不壞我頭給你拉。
所以這就是為什麼我賭爛很多女生用筆電抓的原因。
不備份、筆電硬碟修起來又困難、出事才在那裡靠背硬體很貴,資料很珍貴。
當初不要用 foxy 或多作一些功課不就沒事了 =_=
3. I/O 存取是很耗 CPU 資源的。在計算機系統裡,I/O 視為中斷,CPU 一秒鐘幾十萬上下,誰有空在那邊等你。老是被同學打來問,為什麼幫他新組的電腦打線上遊戲很慢,是不是我組裝功力有問題之類的。問到最後,才發現他是一邊掛p2p一邊打3d game,不會想用髒話幹爆他才怪。
4. request 也是很是佔網路頻寬的。很多人也認為,只有上下載行為才佔頻寬。錯了!!上下載行為會發出封包。發出 request 當然也會佔頻寬,尤其是 foxy 那種瘋狂發出封包的行為,更是佔頻寬之王。
偏偏一堆人不自覺。抓檔就算了,還不限流,不限流就算了,還灌 foxy。網路 8M/640k 他只出 1/8 的錢,卻要享有全部的頻寬權,被人拔線不檢討還在那邊嚷嚷他也有繳錢。這種人,我只有一句話,e04你娘!!!
抓 p2p 不是不可以。多作一點功課,少討一點厭。…看過不少同學就是因為這樣翻臉的。
–※ 發信站: 批踢踢兔(ptt2.cc)