USB Memory key

Greg Morgan drkludge at cox.net
Wed Sep 8 04:24:23 UTC 2004


Alex,

I am glad to have helped.  I am forwarding the email to the 
kickstart-list because that may be the more appropriate place for this 
kind-of question/answer than the anaconda-devel-list.

Greg

Alex Tang wrote:
> Wow Greg.
> 
> This is great!  Thanks for taking the time to do this, i'm sure it will 
> be invaluable information (I haven't had time to process or check on all 
> of this info, but i will today or tomorrow).  I just wanted to say 
> thanks very much for the volumes of information, and hopefully i'll have 
> good information to respond with later. :)
> 
> Thanks again.
> 
> ...alex...
> 
> Greg Morgan wrote:
> 
>> Alex Tang wrote:
>>
>>> Hi folks.
>>>
>>> I've got a working kickstart installation, however in the %post 
>>> section, i would like to detect, mount, and write to a USB memory key.
>>>
>>> However, I can't seem to detect the memory key properly.  Does the 
>>> standard anaconda kernel support USB?  Is there something else I need 
>>> to do?
>>>
>>> Thanks
>>>
>>> ...alex...
>>
>>
>>
>> In the USA we have Labor Day and many stores have Labor Day sales.  I 
>> went and purchased an USB Thumb Drive and 9-in-1 Flash Media 
>> Reader/Writer.  This was an interesting question so I had to answer it 
>> for myself.  Hopefully, it will answer your questions too. More 
>> importantly, it also gave me a reason to finally buy these 
>> contraptions. ;-)
>>
>> If you can find a device that is USB 2.0 and compatible with USB 1.1 
>> and also complying with USB Storage Class specification version 1.0, 
>> then the device should work with Linux.  The Memorex TravelDrive had 
>> this stated on the back of the blister pack. The packaging also said 
>> it would work with Linux 2.4.x and above.  The PPA Internaltion 
>> http://www.ppa-usa.com/product_pages/cardreaders/2285.htm Media Reader 
>> did not mention Linux but it had all the same specs as the Memorex 
>> drive.  Both drives correctly worked with a working FC2 machine as 
>> well as with Anaconda during install.  Oh! I do not work or represent 
>> nor have I received any money for research from these companies!  They 
>> were just the best value for the specifications above.
>>
>> The difference between these two USB devices as per the salesperson is 
>> that the USB thumbdrive can be booted from by most modern 
>> motherboards.  The USB thumbdrive is also supposed to be faster 
>> device.  So says he...I don't know.
>>
>> So far I can answer that the FC2 Anaconda kernel has USB support.  At 
>> the Fedora Boot: prompt I hit enter.  After I hit enter the kernel 
>> boots.  Finally I briefly see the message "loading usb-storage driver" 
>> that is displayed by the Anaconda loader.  After this I see the media 
>> test screen--"CD Found...To begin testing the CD media..."  I hit 
>> enter and wait for the "Welcome" screen.  At that point you can use 
>> the <Alt><Ctrl><F2> keys to access a bash prompt.  The bash shell let 
>> me poke around.
>>
>> I have already seen usb-storage drive message now I was curios what 
>> dmesg said.  Here's the output:
>>
>> <snip>
>> usbcore: registered new driver hiddev
>> usbcore: registered new driver hid
>> drivers/usb/input/hid-core.c: v2.0:USB HID core driver
>> <snip>
>> SCSI subsystem initialized
>> ohci_hcd: 2004 Feb 02 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
>> ohci_hcd: block sizes: ed 64 td 64
>> ohci_hcd 0000:00:02.2: OHCI Host Controller
>> ohci_hcd 0000:00:02.2: irq 10, pci mem e0831000
>> ohci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1
>> hub 1-0:1.0: USB hub found
>> hub 1-0:1.0: 3 ports detected
>> ohci_hcd 0000:00:02.3: OHCI Host Controller
>> ohci_hcd 0000:00:02.3: irq 5, pci mem e0833000
>> ohci_hcd 0000:00:02.3: new USB bus registered, assigned bus number 2
>> hub 2-0:1.0: USB hub found
>> hub 2-0:1.0: 3 ports detected
>> usb 1-1: new full speed USB device using address 2
>> usb 2-1: new full speed USB device using address 2
>> Initializing USB Mass Storage driver...
>> scsi0 : SCSI emulation for USB Mass Storage devices
>>   Vendor: Generic   Model: USB Storage-SMC   Rev: I03A
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
>>   Vendor: Generic   Model: USB Storage-CFC   Rev: I03A
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> SCSI device sdb: 250368 512-byte hdwr sectors (128 MB)
>> sdb: assuming Write Enabled
>> sdb: assuming drive cache: write through
>>  sdb: sdb1
>> Attached scsi removable disk sdb at scsi0, channel 0, id 0, lun 1
>>   Vendor: Generic   Model: USB Storage-MMC   Rev: I03A
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> Attached scsi removable disk sdc at scsi0, channel 0, id 0, lun 2
>>   Vendor: Generic   Model: USB Storage-MSC   Rev: I03A
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> Attached scsi removable disk sdd at scsi0, channel 0, id 0, lun 3
>> USB Mass Storage device found at 2
>> scsi1 : SCSI emulation for USB Mass Storage devices
>>   Vendor:           Model: Memorex TD 2B     Rev: PMAP
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> SCSI device sde: 487424 512-byte hdwr sectors (250 MB)
>> sde: assuming Write Enabled
>> sde: assuming drive cache: write through
>>  sde: sde1
>> Attached scsi removable disk sde at scsi1, channel 0, id 0, lun 0
>> USB Mass Storage device found at 2
>> usbcore: registered new driver usb-storage
>> USB Mass Storage support registered.
>> <snip>
>>
>> Note that I attached both the 9-in-1 reader and the thumb drive to the 
>> system.  There's your first obstacle to detecting the correct drive.  
>> I don't know how the kernel orders the device names for these storage 
>> devices.  I don't recall the order I had these installed earlier in 
>> the day. Hence, I don't know if switching USB port that the devices 
>> were plugged into would make a difference.  It appears that the 
>> "Initializing USB Mass Storage driver..." message is the key.  Once 
>> that is displayed the kernel starts assigning device names.  The 
>> Memorex drive received sde:sde1 while the 9-in-1 reader received four 
>> scsi device names, sda:sda1 through sdd:sdd1.  If you have other scsi 
>> devices on the system, then this could complicate your detection code.
>>
>> As an aside, this ordering of device names would affect your kickstart 
>> stanza.  If you only had one usb-storage device on your system, then 
>> you would use
>>
>> ks=hd:sda1/ks.cfg
>>
>> to locate the kickstart file.  However, in the example above with two 
>> readers on the system and five device names, I would use either
>>
>> ks=hd:sdb1/ks.cfg
>>
>> for the CompactFlash card or
>>
>> ks=hd:sde1/ks.cfg
>>
>> for the thumbdrive.
>>
>> If just a thumbdrive is attached to an Anaconda kernel then you will 
>> see this in the dmesg output.
>>
>> <snip>
>> Initializing USB Mass Storage driver...
>> scsi0 : SCSI emulation for USB Mass Storage devices
>>   Vendor:           Model: Memorex TD 2B     Rev: PMAP
>>   Type:   Direct-Access                      ANSI SCSI revision: 02
>> SCSI device sda: 487424 512-byte hdwr sectors (250 MB)
>> sda: assuming Write Enabled
>> sda: assuming drive cache: write through
>>  sda: sda1
>> Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
>> USB Mass Storage device found at 2
>> usbcore: registered new driver usb-storage
>> USB Mass Storage support registered.
>> <snip>
>>
>> The thumbdrive now has a device name of sda:sda1.
>>
>> If I use fdisk -l /dev/sda then I will see this output.
>>
>> Disk /dev/sda: 249 MB, 249561088 bytes
>> 16 heads, 32 sectors/track, 952 cylinders
>> Units = cylinders of 512 * 512 = 262144 bytes
>>
>>    Device Boot      Start         End      Blocks   Id  System
>> /dev/sda1   *           1         952      243696    6  FAT16
>>
>> (Note that when the 9-in-1 reader was attached, the fdisk output 
>> looked like this for a 128MB CompactFlash card.
>>
>> fdisk -l /dev/sdb
>>
>> Disk /dev/sdb: 128 MB, 128188416 bytes
>> 8 heads, 32 sectors/track, 978 cylinders
>> Units = cylinders of 256 * 512 = 131072 bytes
>>
>>    Device Boot      Start         End      Blocks   Id  System
>> /dev/sdb1   *           1         978      125168    6  FAT16 )
>>
>> It appears that FAT16 is used on these devices for compatibility 
>> purposes.  A CompactFlash card in the 9-in-1 reader/writer also shows 
>> as FAT16.  I bet Microsoft saw a cash cow here and wanted to license 
>> FAT http://www.eweek.com/article2/0,1759,1569534,00.asp.  Anyhow, the 
>> Anaconda kernel also recognizes FAT16.  So you can mount the drive as
>>
>> mkdir /tmp/td
>> mount /dev/sda1 /tmp/td
>>
>>    or
>>
>> mkdir /tmp/td
>> mount -t vfat /dev/sda1 /tmp/td
>>
>> I selected /tmp because Anaconda mounts other devices used in the 
>> install process under /tmp.  It appears that /mnt is saved for the 
>> live hard drives that you will be updating or installing the 
>> distribution on.
>>
>> Depending on where you create your mount point, in my case it is 
>> /tmp/td, then writing to the thumbdrive is as simple as
>>
>>    cp mylogfile.log /tmp/td
>>
>> In bash you could use
>>
>>    dmesg > /tmp/td/dmesg.txt
>>
>> In any scripting language you could just open a file on the mount 
>> point. In Python it may be something like this
>>
>>    tdoutput = open(/tmp/td/tdoutput, 'w')
>>    tdoutput.write(...)
>>    tdoutput.close()
>>
>> Your most pressing problem is selecting the correct scsi device name 
>> should multiple scsi devices be configured on your target install 
>> system.  This could include cameras, thumbdrives, media readers, 
>> scanners, and gasp a parallel port zip drive.  Let's not forget scsi 
>> hard drives or cd-rom drives.  If you know your only scsi device is 
>> the thumbdrive, then /dev/sda1 is all you need.
>>
>> If you are trying to make the Anaconda Kick Start file work on 
>> multiple machines, then one file may be helpful.  This is the 
>> /tmp/scsidisks file.  With both the 9-in-1 reader and the Memorex 
>> TravelDrive attached to the FC2 install target machine, the contents 
>> of the file looked like this
>>
>> sda    usb-storage
>> sdb    usb-storage
>> sdc    usb-storage
>> sdd    usb-storage
>> sde    usb-storage
>>
>> With just the Memorex TravelDrive, the file looked like this
>>
>> sda    usb-storage
>>
>> If you are not doing something twisted like I did with two usb-storage 
>> devices attached to the PC, then you could just look for the 
>> usb-storage line. I checked that sed, awk, cut, bash, and python are 
>> available to you in the Anaconda runtime environment on FC2.  A tab 
>> separates the device name and usb-storage literal string.  I do not 
>> know how portable this approach would be from one Red Hat 
>> distro/version to the next. Other people may be able to provide you 
>> with another approach.  With that said, "I leave the thrill and joy of 
>> discovering the rest of the solution to you."
>>
>> Greg Morgan





More information about the Kickstart-list mailing list