OSWikiHK: 請協力 GPLv3 的中文翻譯工作。
存取抽取式儲存裝置
OSWikiHK,自由中文開源知識庫
因為 udev、hal 和 dbus 的關係,當您插入任何標準抽取式儲存裝置(包括 USB 硬碟、光碟機、快閃記憶卡、儲存器、MP3 播放機和數碼相機等) 到電腦後,現時大部份 GNU/Linux distribution 都可以自動識別並開啟檔案管理員,讓您存取其內容。您一般可以在『電腦』(Computer, computer:///) 之類的資料夾或桌面 (Desktop) 找到對應的小圖示。
目录 |
手動存取
核心模組
- uhci_hcd
- ehci_hcd
- scsi_mod
- usb_storage
識別對應裝置檔案
Unix/Linux 世界中,每一個連接了的裝置都在目錄 /dev 中有一個對應的裝置檔案,例如 /dev/hda 代表了第一個 ATA 硬碟。要存取儲存裝置的內容,您一定要知道其對應的裝置檔案。一般而言,PCMCIA 的儲存裝置都會當成 ATA 裝置,裝置檔案很多時會變成 /dev/hde 或 /dev/hdf 等。USB、IEEE1394 和 SATA 等儲存裝置則模擬成 SCSI 裝置,裝置檔案一般會變成 /dev/sda、/dev/sdb 或 /dev/sdc等。實質裝置檔案的正確名稱就要看看 Linux 核心發出來的紀錄。
插入裝置到電腦後,Linux 核心應該會感應到。您可以打「dmesg」查看核心的訊息,看看核心能否成功辯認到插入的裝置,並找出裝置分配到那個裝置檔案:
usb 2-2: new full speed USB device using uhci_hcd and address 2 usb 2-2: configuration #1 chosen from 1 choice Initializing USB Mass Storage driver... scsi0 : SCSI emulation for USB Mass Storage devices usbcore: registered new driver usb-storage USB Mass Storage support registered. Vendor: MATSHITA Model: DVD-RAM UJ-850S Rev: 1.20 Type: CD-ROM ANSI SCSI revision: 00 sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray Uniform CD-ROM driver Revision: 3.20 sr 0:0:0:0: Attached scsi generic sg0 type 5 usb 2-1: new full speed USB device using uhci_hcd and address 3 usb 2-1: configuration #1 chosen from 1 choice scsi1 : SCSI emulation for USB Mass Storage devices
以上內容顯示有一個USB光碟機插入電腦中,Linux 把它分配到裝置檔案 /dev/sr0。
usb 2-1: new full speed USB device using uhci_hcd and address 3 usb 2-1: configuration #1 chosen from 1 choice scsi1 : SCSI emulation for USB Mass Storage devices Vendor: KINGMAX Model: USB2.0 Flashdisk Rev: 2.00 Type: Direct-Access ANSI SCSI revision: 02 scsi 1:0:0:0: Attached scsi generic sg1 type 0 SCSI device sda: 4030463 512-byte hdwr sectors (2064 MB) sda: Write Protect is off SCSI device sda: 4030463 512-byte hdwr sectors (2064 MB) sda: Write Protect is off sda: sda1
以上內容顯示有一張有 2GB 的 USB 2.0 快閃記憶卡插入電腦中,Linux 把它分配到裝置檔案 /dev/sda,並偵出其有一個分割區 /dev/sda1。
如果您的系統有 udev,您也可以看看目錄 /dev/disk/by-id 的內容。udev 會在目錄 /dev/disk/by-id 建立一些以裝置名稱為名的連結 (symbolic link) 指去實質的裝置檔案。以下是「ls -l /dev/disk/by-id」的結果:
總計 0 lrwxrwxrwx 1 root root 9 2006-11-20 09:46 ata-FUJITSU_MHT2030AT_NN6CT3B12W1D -> ../../hda lrwxrwxrwx 1 root root 10 2006-11-20 09:46 ata-FUJITSU_MHT2030AT_NN6CT3B12W1D-part1 -> ../../hda1 lrwxrwxrwx 1 root root 10 2006-11-20 09:46 ata-FUJITSU_MHT2030AT_NN6CT3B12W1D-part2 -> ../../hda2 lrwxrwxrwx 1 root root 10 2006-11-20 09:46 ata-FUJITSU_MHT2030AT_NN6CT3B12W1D-part5 -> ../../hda5 lrwxrwxrwx 1 root root 10 2006-11-20 09:46 ata-FUJITSU_MHT2030AT_NN6CT3B12W1D-part6 -> ../../hda6 lrwxrwxrwx 1 root root 9 2006-11-20 22:38 usb-KINGMAX_USB2.0_Flashdisk_59000000000056 -> ../../sda lrwxrwxrwx 1 root root 10 2006-11-20 22:39 usb-KINGMAX_USB2.0_Flashdisk_59000000000056-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 2006-11-20 22:19 usb-MATSHITA_DVD-RAM_UJ-850S_DEF13BA9C057 -> ../../scd0
以上表示 ATA Fujitsu 硬碟指向 /dev/hda,Kingmax USB 快閃記憶卡指向 /dev/sda,Matshita 光碟機指向/dev/scd0。
如果在 dmesg 找不到和裝置相關的訊息,Linux 可能未能成功偵測您的儲存裝置。您可以試一試用 modprobe 載入上面提到的核心模組,再打「dmesg」看看有什麼進展:
modprobe usb_storage dmesg
如果仍然沒有進展,您需要檢查您的 Linux 核心是否為編譯相關模組或者更新您的 Linux 核心。
掛載儲存裝置 (mount)
mount -t 檔案系統 -o 掛載選項 /dev/裝置檔案 掛載點
- 裝置檔案
- 掛載點
- 檔案系統 - CD-ROM一般為iso9660,其他儲存裝置一般為vfat。
- 掛載選項
例如:
mount -t iso9660 /dev/sr0 /media/dvd mount -t vfat -o iocharset=utf8 /dev/sda1 /media/usbdisk
卸載儲存裝置 (umount)
打「umount /dev/裝置檔案」或「umount 掛載點」卸載裝置:
umount /media/dvd umount /dev/sda1
如果是光碟機或iPod,您可能需要打「eject /dev/裝置檔案」退出裝置:
eject /dev/sr0
設定容許一般使用者自由掛載
在很多情況下,一般使用者亦需要有對裝置檔案的讀取權力,如果要儲存資料入裝置,使用者更需要有對裝置檔案寫的權力。
在 /etc/fstab 加入以下一行:
/dev/裝置檔案 掛載點 檔案系統 user,noauto,其他掛載選項 0 0
- 裝置檔案
- 掛載點
- 檔案系統
- 掛載選項
例如:
/dev/sda1 /media/usbdisk auto user,noauto 0 0
設定好後,一般使用者可以打「mount /dev/裝置檔案」或「mount 掛載點」掛載裝置:
mount /media/usbdisk

