17.4. USB 儲存裝置
前一頁 | 章 17. 儲存設備 | 下一頁

## 17.4. USB 儲存裝置

Contributed by Marc Fonvieille.

許多外部儲存裝置的解決方案，例如硬碟、USB 隨身碟及 CD 與 DVD 燒錄機皆使用通用序列匯流排 (Universal Serial Bus, USB)，FreeBSD 提供了對 USB 1.x, 2.0 及 3.0 裝置的支援。

### 注意:

部份硬體尚不相容 USB 3.0，包含 Haswell (Lynx point) 晶片組，若 FreeBSD 開機出現 failed with error 19 訊息，請在系統 BIOS 關閉 xHCI/USB3。

對 USB 儲存裝置的支援已內建於 `GENERIC` 核心，若為自訂的核心，請確定在核心設定檔中有下列幾行設定：

    device scbus	# SCSI bus (required for ATA/SCSI)
    device da	# Direct Access (disks)
    device pass	# Passthrough device (direct ATA/SCSI access)
    device uhci	# provides USB 1.x support
    device ohci	# provides USB 1.x support
    device ehci	# provides USB 2.0 support
    device xhci	# provides USB 3.0 support
    device usb	# USB Bus (required)
    device umass	# Disks/Mass storage - Requires scbus and da
    device cd	# needed for CD and DVD burners

FreeBSD 使用 umass(4) 驅動程式透過 SCSI 子系統來存取 USB 儲存裝置，因此任何在系統的 USB 裝置都會以 SCSI 裝置呈現，若 USB 裝置是 CD 或 DVD 燒錄機，請不要在自訂核心設定檔中引用 `device atapicam`。

本節後續的部份將示範如何檢查 FreeBSD 能夠辦識 USB 儲存裝置以及如何設定該裝置。

### 17.4.1. 裝置設定

要測試 USB 設定，請先插入 USB 裝置，然後使用 `dmesg` 來確認系統訊息緩衝區中有出現該磁碟機，該訊息如下：

    umass0: <STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3> on usbus0
    umass0:  SCSI over Bulk-Only; quirks = 0x0100
    umass0:4:0:-1: Attached to scbus4
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <STECH Simple Drive 1.04> Fixed Direct Access SCSI-4 device
    da0: Serial Number WD-WXE508CAN263
    da0: 40.000MB/s transfers
    da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
    da0: quirks=0x2<NO_6_BYTE>

不同的裝置會有不同的廠牌、裝置節點 (`da0`)、速度與大小。

當 USB 裝置可以做為 SCSI 檢視時，便可使用 `camcontrol` 來列出連接到系統的 USB 儲存裝置：

    # camcontrol devlist
    <STECH Simple Drive 1.04>          at scbus4 target 0 lun 0 (pass3,da0)

或者，可以使用 `usbconfig` 來列出裝置，請參考 usbconfig(8) 來取得更多有關此指令的資訊。

    # usbconfig
    ugen0.3: <Simple Drive STECH> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)

若該裝置尚未被格式化，請參考 節 17.2, “加入磁碟” 中有關如何在 USB 磁碟格式化與建立分割區的說明。若磁碟中有檔案系統，可由 `root` 依據 節 3.7, “掛載與卸載檔案系統” 中的說明掛載磁碟。

### 警告:

要允許未被信任的使用者掛載任意媒體，可開啟 `vfs.usermount`，詳細說明如下。從安全性的角度來看這並不是安全的，大多的檔案系統並不會防範惡意裝置。

要讓裝置可讓一般使用者掛載，其中一個解決方案便是使用 pw(8) 讓所有裝置的使用者成為 `operator` 群組的成員。接著，將下列幾行加入 `/etc/devfs.rules` 來確保 `operator` 能夠讀取與寫入裝置：

    [localrules=5]
    add path 'da*' mode 0660 group operator

### 注意:

若系統也同時安裝了內建 SCSI 磁碟，請更改第二行如下：

    add path 'da[3-9]*' mode 0660 group operator

這會從 `operator` 群組中排除前三個 SCSI 磁碟 (`da0` 到 `da2`)，接著取代 `3` 為內部 SCSI 磁碟的編號。請參考 devfs.rules(5) 來取得更多有關此檔案的資訊。

接著，在 `/etc/rc.conf` 開啟規則：

    devfs_system_ruleset="localrules"

然後，加入以下行到 `/etc/sysctl.conf` 指示系統允許正常使用者掛載檔案系統：

    vfs.usermount=1

這樣只會在下次重新開機時生效，可使用 `sysctl` 來立即設定這個變數：

    # sysctl vfs.usermount=1
    vfs.usermount: 0 -> 1

最後一個步驟是建立要掛載檔案系統要的目錄，要掛載檔案系統的使用者需要擁有這個目錄。其中一個辦法是讓 `root` 建立由該使用者擁有的子目錄 `/mnt/`username``。在下面的例子，將 `username` 替換為該使用者的登入名稱並將 `usergroup` 替換為該使用者的主要群組：

    # mkdir /mnt/username
    # chown username:usergroup /mnt/username

假如已經插入 USB 隨身碟，且已出現 `/dev/da0s1` 裝置。若裝置使用 FAT 格式的檔案系統，則使用者可使用以下指令掛載該檔案系統：

    % mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username

在裝置可以被拔除前，必須先卸載：

    % umount /mnt/username

裝置移除之後，系統訊息緩衝區會顯示如下的訊息：

    umass0: at uhub3, port 2, addr 3 (disconnected)
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <STECH Simple Drive 1.04> s/n WD-WXE508CAN263          detached
    (da0:umass-sim0:0:0:0): Periph destroyed

### 17.4.2. 自動掛載可移除的媒體

可以取消註解在 `/etc/auto_master` 中的下行來自動掛載 USB 裝置：

    /media		-media		-nosuid

然後加入這些行到 `/etc/devd.conf`：

    notify 100 {
    	match "system" "GEOM";
    	match "subsystem" "DEV";
    	action "/usr/sbin/automount -c";
    };

若 autofs(5) 以及 devd(8) 已經正在執行，則需重新載入設定：

    # service automount restart
    # service devd restart

要設定讓 autofs(5) 在開機時啟動可以加入此行到 `/etc/rc.conf`：

    autofs_enable="YES"

autofs(5) 需要開啟 devd(8)，預設已經開啟。

立即啟動服務：

    # service automount start
    # service automountd start
    # service autounmountd start
    # service devd start

可以被自動掛載的檔案系統會在 `/media/` 中以目錄呈現，會以檔案系統的標籤來命名目錄，若標籤遺失，則會以裝置節點命名。

檔案系統會在第一次存取時自動掛載，並在一段時間未使用後自動卸載。自動掛載的磁碟也可手動卸載：

    # automount -fu

這個機制一般會用在記憶卡與 USB 隨身碟，也可用在任何 Block 裝置，包含光碟機或 iSCSI LUN。

前一頁 | 上一層 | 下一頁
17.3. 重設大小與擴增磁碟 | 起始頁 | 17.5. 建立與使用 CD 媒體

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。