免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux下的硬件驅(qū)動(dòng)——USB設(shè)備(上)(驅(qū)動(dòng)配置部分)

聯(lián)想軟件設(shè)計(jì)中心嵌入式研發(fā)處系統(tǒng)設(shè)計(jì)工程師
2003 年 7 月

USB設(shè)備越來越多,而Linux在硬件配置上仍然沒有做到完全即插即用,對(duì)于Linux怎樣配置和使用他們,也越來越成為困擾我們的一大問題。本文著力從Linux系統(tǒng)下設(shè)備驅(qū)動(dòng)的架構(gòu),去闡述怎樣去使用和配置以及怎樣編制USB設(shè)備驅(qū)動(dòng)。對(duì)于一般用戶,可以使我們明晰Linux設(shè)備驅(qū)動(dòng)方式,為更好地配置和使用USB設(shè)備提供了方便;而對(duì)于希望開發(fā)Linux系統(tǒng)下USB設(shè)備驅(qū)動(dòng)的程序員,提供了初步學(xué)習(xí)USB驅(qū)動(dòng)架構(gòu)的機(jī)會(huì)。

前言
USB是英文"Universal Serial Bus"的縮寫,意為"通用串行總線"。是由Compaq(康柏)、DEC、IBM、Intel、NEC、微軟以及Northern Telecom(北方電訊)等公司于1994年11月共同提出的,主要目的就是為了解決接口標(biāo)準(zhǔn)太多的弊端。USB使用一個(gè)4針插頭作為標(biāo)準(zhǔn)插頭,并通過這個(gè)標(biāo)準(zhǔn)接頭,采用菊花瓣形式把所有外設(shè)連接起來,它采用串行方式傳輸數(shù)據(jù),目前最大數(shù)據(jù)傳輸率為12Mbps, 支持多數(shù)據(jù)流和多個(gè)設(shè)備并行操作,允許外設(shè)熱插拔。

目前USB接口雖然只發(fā)展了2代(USB1.0/1.1,USB2.0),但是USB綜合了一個(gè)多平臺(tái)標(biāo)準(zhǔn)的所有優(yōu)點(diǎn) -- 包括降低成本,增加兼容性,可連接大量的外部設(shè)備,融合先進(jìn)的功能和品質(zhì)。使其逐步成為PC接口標(biāo)準(zhǔn),進(jìn)入了高速發(fā)展期。

那么對(duì)于使用Linux系統(tǒng),正確支持和配置常見的USB設(shè)備,就是其使用必不可少的關(guān)鍵一步。

相關(guān)技術(shù)基礎(chǔ)
模塊(驅(qū)動(dòng)程序)

模塊(module)是在內(nèi)核空間運(yùn)行的程序,實(shí)際上是一種目標(biāo)對(duì)象文件,沒有鏈接,不能獨(dú)立運(yùn)行,但是可以裝載到系統(tǒng)中作為內(nèi)核的一部分運(yùn)行,從而可以動(dòng)態(tài)擴(kuò)充內(nèi)核的功能。模塊最主要的用處就是用來實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序。

Linux下對(duì)于一個(gè)硬件的驅(qū)動(dòng),可以有兩種方式:直接加載到內(nèi)核代碼中,啟動(dòng)內(nèi)核時(shí)就會(huì)驅(qū)動(dòng)此硬件設(shè)備。另一種就是以模塊方式,編譯生成一個(gè).o文件。當(dāng)應(yīng)用程序需要時(shí)再加載進(jìn)內(nèi)核空間運(yùn)行。所以我們所說的一個(gè)硬件的驅(qū)動(dòng)程序,通常指的就是一個(gè)驅(qū)動(dòng)模塊。

設(shè)備文件

對(duì)于一個(gè)設(shè)備,它可以在/dev下面存在一個(gè)對(duì)應(yīng)的邏輯設(shè)備節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)以文件的形式存在,但它不是普通意義上的文件,它是設(shè)備文件,更確切的說,它是設(shè)備節(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)是通過mknod命令建立的,其中指定了主設(shè)備號(hào)和次設(shè)備號(hào)。主設(shè)備號(hào)表明了某一類設(shè)備,一般對(duì)應(yīng)著確定的驅(qū)動(dòng)程序;次設(shè)備號(hào)一般是區(qū)分不同屬性,例如不同的使用方法,不同的位置,不同的操作。這個(gè)設(shè)備號(hào)是從/proc/devices文件中獲得的,所以一般是先有驅(qū)動(dòng)程序在內(nèi)核中,才有設(shè)備節(jié)點(diǎn)在目錄中。這個(gè)設(shè)備號(hào)(特指主設(shè)備號(hào))的主要作用,就是聲明設(shè)備所使用的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序和設(shè)備號(hào)是一一對(duì)應(yīng)的,當(dāng)你打開一個(gè)設(shè)備文件時(shí),操作系統(tǒng)就已經(jīng)知道這個(gè)設(shè)備所對(duì)應(yīng)的驅(qū)動(dòng)程序。

SCSI 設(shè)備

SCSI是有別于IDE的一個(gè)計(jì)算機(jī)標(biāo)準(zhǔn)接口?,F(xiàn)在大部分平板式掃描儀、CD-R刻錄機(jī)、MO光磁盤機(jī)等漸漸趨向使用SCSI接口,加之SCSI又能提供一個(gè)高速傳送通道,所以,接觸到SCSI設(shè)備的用戶會(huì)越來越多。Linux支持很多種的SCSI設(shè)備,例如:SCSI硬盤、SCSI光驅(qū)、SCSI磁帶機(jī)。更重要的是,Linux提供了IDE設(shè)備對(duì)SCSI的模擬(ide-scsi.o模塊),我們通常會(huì)就把IDE光驅(qū)模擬為SCSI光驅(qū)進(jìn)行訪問。因?yàn)樵贚inux中很多軟件都只能操作SCSI光驅(qū)。例如大多數(shù)刻錄軟件、一些媒體播放軟件。通常我們的USB存儲(chǔ)設(shè)備,也模擬為SCSI硬盤而進(jìn)行訪問。

Linux硬件驅(qū)動(dòng)架構(gòu)

對(duì)于一個(gè)硬件,Linux是這樣來進(jìn)行驅(qū)動(dòng)的:首先,我們必須提供一個(gè).o的驅(qū)動(dòng)模塊文件(這里我們只說明模塊方式,其實(shí)內(nèi)核方式是類似的)。我們要使用這個(gè)驅(qū)動(dòng)程序,首先要加載運(yùn)行它(insmod *.o)。這樣驅(qū)動(dòng)就會(huì)根據(jù)自己的類型(字符設(shè)備類型或塊設(shè)備類型,例如鼠標(biāo)就是字符設(shè)備而硬盤就是塊設(shè)備)向系統(tǒng)注冊(cè),注冊(cè)成功系統(tǒng)會(huì)反饋一個(gè)主設(shè)備號(hào),這個(gè)主設(shè)備號(hào)就是系統(tǒng)對(duì)它的唯一標(biāo)識(shí)(例如硬盤塊設(shè)備在/proc/devices中顯示的主設(shè)備號(hào)為3 ,我們用ls -l /dev/had看到的主設(shè)備就肯定是3)。驅(qū)動(dòng)就是根據(jù)此主設(shè)備號(hào)來創(chuàng)建一個(gè)一般放置在/dev目錄下的設(shè)備文件(mknod命令用來創(chuàng)建它,它必須用主設(shè)備號(hào)這個(gè)參數(shù))。在我們要訪問此硬件時(shí),就可以對(duì)設(shè)備文件通過open、read、write等命令進(jìn)行。而驅(qū)動(dòng)就會(huì)接收到相應(yīng)的read、write操作而根據(jù)自己的模塊中的相應(yīng)函數(shù)進(jìn)行了。

其中還有幾個(gè)比較有關(guān)系的東西:一個(gè)是/lib/modules/2.4.XX目錄,它下面就是針對(duì)當(dāng)前內(nèi)核版本的模塊。只要你的模塊依賴關(guān)系正確(可以通過depmod設(shè)置),你就可以通過modprobe 命令加載而不需要知道具體模塊文件位置。 另一個(gè)是/etc/modules.conf文件,它定義了一些常用設(shè)備的別名。系統(tǒng)就可以在需要此設(shè)備支持時(shí),正確尋找驅(qū)動(dòng)模塊。例如alias eth0 e100,就代表第一塊網(wǎng)卡的驅(qū)動(dòng)模塊為e100.o。他們的關(guān)系圖如下:


配置USB設(shè)備
內(nèi)核中配置.

要啟用 Linux USB 支持,首先進(jìn)入"USB support"節(jié)并啟用"Support for USB"選項(xiàng)(對(duì)應(yīng)模塊為usbcore.o)。盡管這個(gè)步驟相當(dāng)直觀明了,但接下來的 Linux USB 設(shè)置步驟則會(huì)讓人感到糊涂。特別地,現(xiàn)在需要選擇用于系統(tǒng)的正確 USB 主控制器驅(qū)動(dòng)程序。選項(xiàng)是"EHCI" (對(duì)應(yīng)模塊為ehci-hcd.o)、"UHCI" (對(duì)應(yīng)模塊為usb-uhci.o)、"UHCI (alternate driver)"和"OHCI" (對(duì)應(yīng)模塊為usb-ohci.o)。這是許多人對(duì) Linux 的 USB 開始感到困惑的地方。

要理解"EHCI"及其同類是什么,首先要知道每塊支持插入 USB 設(shè)備的主板或 PCI 卡都需要有 USB 主控制器芯片組。這個(gè)特別的芯片組與插入系統(tǒng)的 USB 設(shè)備進(jìn)行相互操作,并負(fù)責(zé)處理允許 USB 設(shè)備與系統(tǒng)其它部分通信所必需的所有低層次細(xì)節(jié)。

Linux USB 驅(qū)動(dòng)程序有三種不同的 USB 主控制器選項(xiàng)是因?yàn)樵谥靼搴?PCI 卡上有三種不同類型的 USB 芯片。"EHCI"驅(qū)動(dòng)程序設(shè)計(jì)成為實(shí)現(xiàn)新的高速 USB 2.0 協(xié)議的芯片提供支持。"OHCI"驅(qū)動(dòng)程序用來為非 PC 系統(tǒng)上的(以及帶有 SiS 和 ALi 芯片組的 PC 主板上的)USB 芯片提供支持。"UHCI"驅(qū)動(dòng)程序用來為大多數(shù)其它 PC 主板(包括 Intel 和 Via)上的 USB 實(shí)現(xiàn)提供支持。只需選擇與希望啟用的 USB 支持的類型對(duì)應(yīng)的"?HCI"驅(qū)動(dòng)程序即可。如有疑惑,為保險(xiǎn)起見,可以啟用"EHCI"、"UHCI" (兩者中任選一種,它們之間沒有明顯的區(qū)別)和"OHCI"。( 趙明注:根據(jù)文檔,EHCI已經(jīng)包含了UHCI和OHCI,但目前就我個(gè)人的測(cè)試,單獨(dú)加EHCI是不行的,通常我的做法是根據(jù)主板類型加載UHCI或OHCI后,再加載EHCI這樣才可以支持USB2.0設(shè)備)。

啟用了"USB support"和適當(dāng)?shù)??HCI"USB 主控制器驅(qū)動(dòng)程序后,使 USB 啟動(dòng)并運(yùn)行只需再進(jìn)行幾個(gè)步驟。應(yīng)該啟用"Preliminary USB device filesystem",然后確保啟用所有特定于將與 Linux 一起使用的實(shí)際 USB 外圍設(shè)備的驅(qū)動(dòng)程序。例如,為了啟用對(duì) USB 游戲控制器的支持,我啟用了"USB Human Interface Device (full HID) support"。我還啟用了主"Input core support" 節(jié)下的"Input core support"和"Joystick support"。

一旦用新的已啟用 USB 的內(nèi)核重新引導(dǎo)后,若/proc/bus/usb下沒有相應(yīng)USB設(shè)備信息,應(yīng)輸入以下命令將 USB 設(shè)備文件系統(tǒng)手動(dòng)掛裝到 /proc/bus/usb:

# mount -t usbdevfs none /proc/bus/usb 

為了在系統(tǒng)引導(dǎo)時(shí)自動(dòng)掛裝 USB 設(shè)備文件系統(tǒng),請(qǐng)將下面一行添加到 /etc/fstab 中的 /proc 掛裝行之后:

none /proc/bus/usb usbdevfs defaults 0 0 

模塊的配置方法.

在很多時(shí)候,我們的USB設(shè)備驅(qū)動(dòng)并不包含在內(nèi)核中。其實(shí)我們只要根據(jù)它所需要使用的模塊,逐一加載。就可以使它啟作用。

首先要確保在內(nèi)核編譯時(shí)以模塊方式選擇了相應(yīng)支持。這樣我們就應(yīng)該可以在/lib/modules/2.4.XX目錄看到相應(yīng).o文件。在加載模塊時(shí),我們只需要運(yùn)行modprobe xxx.o就可以了(modprobe主要加載系統(tǒng)已經(jīng)通過depmod登記過的模塊,insmod一般是針對(duì)具體.o文件進(jìn)行加載)

對(duì)應(yīng)USB設(shè)備下面一些模塊是關(guān)鍵的。

usbcore.o要支持usb所需要的最基礎(chǔ)模塊
usb-uhci.o(已經(jīng)提過)
usb-ohci.o(已經(jīng)提過)
uhci.o另一個(gè)uhci驅(qū)動(dòng)程序,我也不知道有什么用,一般不要加載,會(huì)死機(jī)的
ehci-hcd.o(已經(jīng)提過 usb2.0)
hid.oUSB人機(jī)界面設(shè)備,像鼠標(biāo)呀、鍵盤呀都需要
usb-storage.oUSB存儲(chǔ)設(shè)備,U盤等用到

相關(guān)模塊

ide-disk.oIDE硬盤
ide-scsi.o把IDE設(shè)備模擬SCSI接口
scsi_mod.oSCSI支持

注意kernel config其中一項(xiàng):

	Probe all LUNs on each SCSI device

最好選上,要不某些同時(shí)支持多個(gè)口的讀卡器只能顯示一個(gè)。若模塊方式就要帶參數(shù)安裝或提前在/etc/modules.conf中加入以下項(xiàng),來支持多個(gè)LUN。

	add options scsi_mod max_scsi_luns=9  

sd_mod.oSCSI硬盤
sr_mod.oSCSI光盤
sg.oSCSI通用支持(在某些探測(cè)U盤、SCSI探測(cè)中會(huì)用到)

常見USB設(shè)備及其配置

在Linux 2.4的內(nèi)核中已經(jīng)支持不下20種設(shè)備。它支持幾乎所有的通用設(shè)備如鍵盤、鼠標(biāo)、modem、打印機(jī)等,并不斷地添加廠商新的設(shè)備象數(shù)碼相機(jī)、MP3、網(wǎng)卡等。下面就是幾個(gè)最常見設(shè)備的介紹和使用方法:

USB鼠標(biāo):

鍵盤和鼠標(biāo)屬于低速的輸入設(shè)備,對(duì)于已經(jīng)為用戶認(rèn)可的PS/2接口,USB鍵盤和USB鼠標(biāo)似乎并沒有太多更優(yōu)越的地方?,F(xiàn)在的大部分鼠標(biāo)采用了PS/2接口,不過USB接口的鼠標(biāo)也越來越多,兩者相比,各有優(yōu)勢(shì):一般來說,USB的鼠標(biāo)接口的帶寬大于PS/2鼠標(biāo),也就是說在同樣的時(shí)間內(nèi),USB鼠標(biāo)掃描次數(shù)就要多于PS/2鼠標(biāo),這樣在定位上USB鼠標(biāo)就更為精確;同時(shí)USB接口鼠標(biāo)的默認(rèn)采樣率也比較高,達(dá)到125HZ,而PS/2接口的鼠標(biāo)僅有40HZ(Windows 9x/Me)或是60HZ(Windows NT/2000)。

對(duì)于USB設(shè)備你當(dāng)然必須先插入相應(yīng)的USB控制器模塊:usb-uhci.o或usb-ohci.o

	modprobe usb-uhci

USB鼠標(biāo)為了使其正常工作,您必須先插入模塊usbmouse.o和mousedev.o

	modprobe usbmouse	modprobe mousedev

若你把HID input layer支持和input core 支持也作為模塊方式安裝,那么啟動(dòng)hid模塊和input模塊也是必要的。

	modprobe hid	modprobe input

USB鍵盤:

一般的,我們現(xiàn)在使用的鍵盤大多是PS/2的,USB鍵盤還比較少見,但是下來的發(fā)展,鍵盤將向USB接口靠攏。使用USB鍵盤基本上沒有太多的要求,只需在主板的BIOS設(shè)定對(duì)USB鍵盤的支持,就可以在各系統(tǒng)中完全無障礙的使用,而且更可以真正做到在即插即用和熱插拔使用,并能提供兩個(gè)USB連接埠:讓您可以輕易地直接將具有USB接頭的裝置接在您的鍵盤上,而非計(jì)算機(jī)的后面。

同樣你當(dāng)然必須先插入相應(yīng)的USB控制器模塊:usb-uhci.o或usb-ohci.o

	modprobe usb-uhci

然后您還必須插入鍵盤模塊usbkbd.o,以及keybdev.o,這樣usb鍵盤才能夠正常工作。此時(shí),運(yùn)行的系統(tǒng)命令:

modprobe usbkbdmodprobe keybdev

同樣若你把HID input layer支持和input core 支持也作為模塊方式安裝,那么啟動(dòng)hid模塊和input模塊也是必要的。

U盤和USB讀卡器:

數(shù)碼存儲(chǔ)設(shè)備現(xiàn)在對(duì)我們來說已經(jīng)是相當(dāng)普遍的了。CF卡、SD卡、Memory Stick等存儲(chǔ)卡已經(jīng)遍及我們的身邊,通常,他們的讀卡器都是USB接口的。另外,很多MP3、數(shù)碼相機(jī)也都是USB接口和計(jì)算機(jī)進(jìn)行數(shù)據(jù)傳遞。更我們的U盤、USB硬盤,作為移動(dòng)存儲(chǔ)設(shè)備,已經(jīng)成為我們的必須裝備。

在Linux下這些設(shè)備通常都是以一種叫做usb-storage的方式進(jìn)行驅(qū)動(dòng)。要使用他們必須加載此模塊

	modprobe usb-storage

當(dāng)然,usbcore.o 和usb-uhci.o或usb-ohci也肯定是不可缺少的。另外,若你系統(tǒng)中SCSI支持也是模塊方式,那么下面的模塊也要加載

	modprobe scsi_mod	modprobe sd_mod

在加載完這些模塊后,我們插入U(xiǎn)盤或存儲(chǔ)卡,就會(huì)發(fā)現(xiàn)系統(tǒng)中多了一個(gè)SCSI硬盤,通過正確地mount它,就可以使用了(SCSI硬盤一般為/dev/sd?,可參照文章后面的常見問題解答)。

	mount /dev/sda1 /mnt

Linux支持的其他USB設(shè)備。

MODEM--(比較常見)
網(wǎng)絡(luò)設(shè)備
攝像頭--(比較常見)例如ov511.o
聯(lián)機(jī)線--可以讓你的兩臺(tái)電腦用USB線實(shí)現(xiàn)網(wǎng)絡(luò)功能。usbnet.o
顯示器--(我沒見過)
游戲桿
電視盒--(比較常見)
手寫板--(比較常見)
掃描儀--(比較常見)
刻錄機(jī)--(比較常見)
打印機(jī)--(比較常見)

注意:上面所說的每個(gè)驅(qū)動(dòng)模塊,并不是都要手動(dòng)加載,有很多系統(tǒng)會(huì)在啟動(dòng)或你的應(yīng)用需要時(shí)自動(dòng)加載的,寫明這些模塊,是便于你在不能夠使用USB設(shè)備時(shí),可以自行檢查。只要用lsmod確保以上模塊已經(jīng)被系統(tǒng)加載,你的設(shè)備就應(yīng)該可以正常工作了。當(dāng)然注意有些模塊已經(jīng)以內(nèi)核方式在kernel啟動(dòng)時(shí)存在了(這些模塊文件在/lib/modules/2.4.XX中是找不到的)。

最常遇見的USB問題

  1. 有USB設(shè)備的系統(tǒng)安裝完redhat 7.3啟動(dòng)死機(jī)問題

    有USB設(shè)備,當(dāng)你剛裝完redhat 7.3第一次啟動(dòng)時(shí),總會(huì)死掉。主要原因是Linux在安裝時(shí)探測(cè)到有usb-uhci和ehci-hcd兩個(gè)控制器,但在啟動(dòng)時(shí),加載完usb-uhci再加載ehci-hcd就會(huì)有沖突。分析認(rèn)為redhat7.3系統(tǒng)內(nèi)核在支持USB2.0標(biāo)準(zhǔn)上存在問題。在其他版本的Linux中均不存在此問題。

    解決辦法:在lilo或grub啟動(dòng)時(shí)用命令行傳遞參數(shù)init=/sbin/init。這樣在啟動(dòng)后就不運(yùn)行其他服務(wù)而直接啟動(dòng)shell。然后運(yùn)行
    mount -o remount,rw / 使/ 可寫,init直接啟動(dòng)的系統(tǒng)默認(rèn)只mount /為只讀
    然后vi /etc/modules.config文件
    刪除alias usb-controller1 ehci-hcd一行?;蚯懊婕?注釋掉
    然后mount -o remount,ro / 使/ 只讀,避免直接關(guān)機(jī)破壞文件系統(tǒng)
    然后就可以按Ctrl-Alt-Delete直接重啟了
    或許,你有更簡(jiǎn)單的辦法:換USB鍵盤和鼠標(biāo)為PS2接口,啟動(dòng)后修改/etc/modules.config文件。

  2. 我們已經(jīng)知道U盤在Linux中會(huì)模擬為SCSI設(shè)備去訪問,可怎么知道它對(duì)應(yīng)那個(gè)SCSI設(shè)備呢?

    方法1:推測(cè)。通常你第一次插入一個(gè)SCSI設(shè)備,它就是sda,第二個(gè)就是sdb以此類推。你啟動(dòng)Linux插入一個(gè)U盤,就試試sda,換了一個(gè)就可能是sdb。這里注意兩個(gè)特例:1) 你用的是聯(lián)想U(xiǎn)盤,它可能存在兩個(gè)設(shè)備區(qū)(一個(gè)用于加密或啟動(dòng)電腦),這樣就可能一次用掉兩個(gè)sda、sdb,換個(gè)U盤就是sdc、sdd。2) 聯(lián)想數(shù)碼電腦中,可能已經(jīng)有了六合一讀卡器。它同樣也是USB存儲(chǔ)設(shè)備。它會(huì)占掉一個(gè)或兩個(gè)SCSI設(shè)備號(hào)。

    方法2:看信息。其實(shí),只要你提前把usb-storage.o、scsi_mod.o、sd_mod.o模塊加載(直接在kernel中也可以)了,在你插入和拔出U盤時(shí),系統(tǒng)會(huì)自動(dòng)打出信息如下:

    SCSI device sda: 60928 512-byte hdwr sectors ( 31 MB )sda: Write Protect is on

    根據(jù)此信息,你就知道它在sda上了。當(dāng)然,可能你的系統(tǒng)信息級(jí)別比較高,上述信息可能沒有打出,這時(shí)候你只要tail /var/log/messages就可以看到了。

    方法3:同樣,cat /proc/partitions也可以看到分區(qū)信息,其中sd?就是U盤所對(duì)應(yīng)的了。若根本沒有sd設(shè)備,就要檢查你的SCSI模塊和usb-storage模塊是否正確加載了。

  3. 在使用U盤或存儲(chǔ)卡時(shí),我該mount /dev/sda還是/dev/sda1呢?

    這是一個(gè)歷史遺留問題。存儲(chǔ)卡最初尺寸很小,很多廠商在使用時(shí),就直接使用存儲(chǔ),不含有分區(qū)表信息。而隨著存儲(chǔ)卡尺寸的不斷擴(kuò)大,它也就引入了類似硬盤分區(qū)的概念。例如/dev/hda你可以分成主分區(qū)hda1、hda2擴(kuò)展分區(qū)hda3,然后把擴(kuò)展分區(qū)hda3又分為邏輯分區(qū)hda5、hda6、hda7等。這樣,通常的U盤就被分成一個(gè)分區(qū)sda1,類似把硬盤整個(gè)分區(qū)分成一個(gè)主分區(qū)hda1。實(shí)際上,我們完全可以通過fdisk /dev/sda對(duì)存儲(chǔ)卡進(jìn)行完全類似硬盤的分區(qū)方式分成sda1、sda2甚至邏輯分區(qū)sda5、sda6。實(shí)際上,對(duì)USB硬盤目前你的確需要這樣,因?yàn)樗ǔ6际嵌嗌貵的容量。而且通常,它里面就是筆記本硬盤。

    一個(gè)好玩的問題。你在Linux下用fdisk /dev/sda 對(duì)U盤進(jìn)行了多分區(qū),這時(shí)候到windows下,你會(huì)發(fā)現(xiàn)怎么找,怎么格式化,U盤都只能找到第一個(gè)分區(qū)大小尺寸,而且使用看不出任何問題。這主要是windows驅(qū)動(dòng)對(duì)U盤都只支持一個(gè)分區(qū)的緣故。你是不是可以利用它來進(jìn)行一些文件的隱藏和保護(hù)?你是不是可以和某些人沒玩過Linux的人開些玩笑:你的U盤容量變小了J。

    現(xiàn)在較多的數(shù)碼設(shè)備也和windows一樣,是把所有U盤容量分為一個(gè),所以在對(duì)待U盤的時(shí)候,通常你mount的是sda1。但對(duì)于某些特殊的數(shù)碼設(shè)備格式化的U盤或存儲(chǔ)卡(目前我發(fā)現(xiàn)的是一款聯(lián)想的支持模擬USB軟盤的U盤和我的一個(gè)數(shù)碼相機(jī)),你就要mount /dev/sda。因?yàn)樗揪蜎]分區(qū)表(若mount /dev/sda1通常的效果是死掉)。其實(shí),這些信息,只要你注意了/proc/partitions文件,都應(yīng)該注意到的。

  4. 每次插入U(xiǎn)盤,都要尋找對(duì)應(yīng)設(shè)備文件名,都要手動(dòng)mount,我能不能做到象windows那樣插入就可以使用呢。

    當(dāng)然可以,不過你需要做一些工作。我這里只提供一些信息幫助你去嘗試完成設(shè)置:Linux內(nèi)核提供了一種叫hotplug支持的東西,它可以讓你系統(tǒng)在PCI設(shè)備、USB等設(shè)備插拔時(shí)做一些事情。而automount 功能可以使你的軟驅(qū)、光盤等設(shè)備的分區(qū)自動(dòng)掛載和自動(dòng)卸載。你甚至可以在KDE桌面中創(chuàng)建相應(yīng)的圖標(biāo),方便你操作。具體設(shè)置方法就要你自己去嘗試了。反正我使用Linux已經(jīng)麻木了,不就是敲一行命令嘛。

參考資料

  1. 《LINUX設(shè)備驅(qū)動(dòng)程序》 ALESSANDRO RUBINI著 LISOLEG 譯
  2. 《Linux系統(tǒng)分析與高級(jí)編程技術(shù)》 周巍松 編著
  3. Linux Kernel-2.4.20源碼和文檔說明
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux下如何使用U盤?
虛擬機(jī)VMware下的UbuntuUSB設(shè)備識(shí)別問題的解決方法[整理]
在Debian和Gentoo下編譯內(nèi)核步驟詳解之2.6.30.2
Linux硬件信息命令大全
Linux2.6 USB HOST驅(qū)動(dòng)于華恒開發(fā)板上的移植(1)
Linux環(huán)境下基于I2C總線的EEPROM 驅(qū)動(dòng)程序
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服