Friday, July 1, 2005

USB Flash Drive with Linux

Here are the instructions to make a 128 MB USB flash drive from Edge Tech Corp work under Linux (using kernel 2.6.11.7):

  1. Compile and install the usb-storage module. This option is under "Device Drivers" -> "USB Support" -> "USB Mass Storage Support" in the kernel configuration options.
  2. Load the module using modprobe usb-storage. Look at /var/log/messages; you should see messages like this:
    Jul 1 21:10:15 trinity Initializing USB Mass Storage driver...
    Jul 1 21:10:15 trinity usbcore: registered new driver usb-storage
    Jul 1 21:10:15 trinity USB Mass Storage support registered.
  3. Plug in the flash drive and look at the messages in /var/log/messages again. This will help you identify what SCSI device the flash drive was simulated as. Here are some sample message from the log:
    Jul 1 21:10:45 trinity usb 3-3: new high speed USB device using ehci_hcd and address 4
    Jul 1 21:10:45 trinity scsi0 : SCSI emulation for USB Mass Storage devices
    Jul 1 21:10:51 trinity Vendor: Model: Secure Guard Rev: PMAP
    Jul 1 21:10:51 trinity Type: Direct-Access ANSI SCSI revision: 00
    Jul 1 21:10:51 trinity SCSI device sda: 243200 512-byte hdwr sectors (125 MB)
    Jul 1 21:10:51 trinity sda: assuming Write Enabled
    Jul 1 21:10:51 trinity SCSI device sda: 243200 512-byte hdwr sectors (125 MB)
    Jul 1 21:10:51 trinity sda: assuming Write Enabled
    Jul 1 21:10:51 trinity /dev/scsi/host0/bus0/target0/lun0: p1
    Jul 1 21:10:51 trinity Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
    Jul 1 21:10:51 trinity Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0
    Jul 1 21:10:51 trinity Vendor: Model: Secure Guard Rev: PMAP
    Jul 1 21:10:51 trinity Type: Direct-Access ANSI SCSI revision: 00
    Jul 1 21:10:51 trinity SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
    Jul 1 21:10:51 trinity sdb: assuming Write Enabled
    Jul 1 21:10:51 trinity SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
    Jul 1 21:10:51 trinity sdb: assuming Write Enabled
    Jul 1 21:10:51 trinity /dev/scsi/host0/bus0/target0/lun1: unknown partition table
    Jul 1 21:10:51 trinity Attached scsi removable disk sdb at scsi0, channel 0, id 0, lun 1
    Jul 1 21:10:51 trinity Attached scsi generic sg1 at scsi0, channel 0, id 0, lun 1, type 0
    Jul 1 21:10:52 trinity scsi.agent[15707]: disk at /devices/pci0000:00/0000:00:0a.2/usb3/3-3/3-3:1.0/host0/target0:0:0/0:0:0:0
    Jul 1 21:10:52 trinity scsi.agent[15734]: disk at /devices/pci0000:00/0000:00:0a.2/usb3/3-3/3-3:1.0/host0/target0:0:0/0:0:0:1
  4. Now simply mount the appropriate SCSI drive e.g.: mount -t vfat -o umask=0000 /dev/sda1 /mnt/usb/ and your flash drive is ready for use.