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

相關連結

Personal tools
廣告橫額