Thayumanasamy Somasundaram 414 Kasha Laboratory Institute of Molecular Biophysics Florida State University Tallahassee, FL 32306-4380 Telephone: 850-644-6448 |
For details, contact: Thay ‘Soma’sundaram Telephone: 850-644-6448 E-mail:
soma@sb.fsu.edu URL: www.sb.fsu.edu/~soma |
Soma’s Computer Notes: Installation of FireWire Drive under Linux |
Copyright © 2003-2004
Thayumanasamy Somasundaram . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
Soma’s Computer
Notes
Procedure for installing a FireWire drive under Linux (Kernel version 2.4.18)
Notes for installing a 80 GB
Maxtor FireWire drive (aka IEEE 1394) under Linux. Updated on
April 10, 2004; Original Version April 1, 2003.
Tallahassee, April 10, 2004: The following note describes how to install an external hard drive with FireWire (also known as IEEE 1394 or i-LINK) interface under Linux operating system (o/s) kernel ver. 2.4.18. FireWire technology is defined by its developer Apple as:
“FireWire is a cross-platform implementation of the
high-speed serial data bus -- defined by IEEE Standard 1394-1995 -- that can
move large amounts of data between computers and peripheral devices. It features simplified cabling, hot
swapping, and transfer speeds of up to 400 megabits per second.” (http://developer.apple.com/firewire/)
FireWire external hard drives allow quick transfer (high transfer speed) of large amounts of data, transfer of data between multiple platforms (cross-platform), quick access to data (hot-swappable), and easy way to transport data sets (portable). The note will describe how to integrate a FireWire drive into a Linux system, store and retrieve data from the drive. This note is intended to help the X-Ray Facility users who may carry a FireWire drive back and forth between home and a synchrotron source.
FireWire devices feature a female port and are usually connected to another female port either at the back of a computer or on another FireWire device using a special cable that has two 6-pin male ends. Some I-LINK devices are connected via a 4-pin interface and 4-pin cable. Pictures of some of the interfaces and cables are shown below:
FireWire drives are hot-pluggable and hot-swappable and this means that the operating system should detect the drive soon after it is attached to a computer. In order for this to work, the Linux operating system kernel should have either pre-compiled versions of the following device drivers: IEEE 1394, OHCI 1394, and SBP-2 1394, or the device drivers are added as modules (using insmod command). IEEE 1394 is the FireWire protocol, Open Host Controller Interface (OHCI) is the standard that allows a computer host to interface with Firewire and USB devices, Serial Bus Protocol-2 (SBP-2) is used specifically to transport SCSI across a 1394 bus.
While logged in as root, power-up the FireWire drive, wait for few seconds and then plug the device to the FireWire interface using the FireWire cable. In principle, the drive should be recognized as a new device by the operating system of the computer and through SBP-2 it should be listed as a SCSI device. Check the /var/log/dmesg file to find out the whether the o/s recognized the new device and if so the designation of the device name.
One quick way of checking for the device is to grep for ‘ieee1394’ or ‘ohci1394, or ‘1394’ in /var/log/dmesg file. A typical dmesg output is shown below when a 80 GB Maxtor FireWire drive is hotplugged to a Linux box. Notice the reference to the keywords mentioned in the last sentence:
ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[11] MMIO=[feafd000-
ieee1394: Device added: node 0:1023, GUID
0010b9010131618d
ieee1394: sbp2: Node 0:1023: Max speed
[S400] - Max payload [2048]
scsi2 : IEEE-1394 SBP-2 protocol driver
Vendor:
Maxtor Model: 1394 storage Rev: v1.2
Type: Direct-Access ANSI SCSI revision: 06
Attached scsi disk sda at scsi2, channel 0, id 0,
lun 0
SCSI device sda: 156355584 512-byte hdwr sectors
(80054 MB)
sda: sda1
Based on the message above the o/s has detected a Maxtor 1394 SCSI storage device with 80 GB capacity, with direct-access and this device has been assigned a SCSI device label of sda1. A typical picture of the external drive from Maxtor is shown below:
Maxtor FireWire External Hard drive (Maxtor 3000 DV; 80 GB)
It is essential to know the device designation before the device can be mounted. One way to get the device designation is by examining the tail portion of dmesg. Another way to find the same information is to run fdisk –l or sfdisk –l and look for the device designation. Given below is print-out for sfdisk –l:
Disk /dev/hda: 2205 cylinders, 255 heads, 63
sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024
bytes, counting from 0
Device
Boot Start End #cyls
#blocks Id System
/dev/hda1
* 0+ 521
522- 4192933+ 7
HPFS/NTFS
/dev/hda2
522 847 326
2618595 83 Linux
/dev/hda3
848 880 33
265072+ 83 Linux
/dev/hda4
881 2204 1324
10635030 5 Extended
Disk /dev/sda: 9732 cylinders, 255 heads, 63
sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024
bytes, counting from 0
Device
Boot Start End #cyls
#blocks Id System
/dev/sda1 0+
9728 9729- 78148161 83
Linux
end: (c,h,s) expected (1023,254,63) found (512,254,63)
/dev/sda2
0 - 0 0 0 Empty
From the print-out above, we notice that there are two different drives: one IDE harddrive (/dev/hda) and one SCSI harddrive (/dev/sda). The IDE harddrive has four partitions (/dev/hda1 through /dev/hda4) and the 80 GB SCSI device has one partition and has the label sda1. Once the exact device designation has been known the next step is to mount the device.
Remember that under Linux and UNIX operating systemes, as opposed to Windows o/s, even a physical device is considered to be a file-system (f/s). This means that the Maxtor harddrive is another file-system and NOT a device in the conventional sense (so read f/s for a device or a drive). FireWire drives are often swapped between machines and therefore, it is desirable to mount the device when required rather than auto-mounted. However, it is advisable to add an entry in the /etc/fstab file that specifies the mount point, the file system and partitions (if found). From the sfdisk output we already know that out external hard drive has one partition with 80 GB capacity. Note that if it is a brand new drive from a PC vendor it is likely to be formatted with vfat file system. However, in our case we had earlier modified vfat file system to a Linux specific filesystem called ext3. So we are going to add an entry in the /etc/fstab file that specifies these details and then mount the device (aka f/s).
root@tampa /etc]# vi fstab |Edit fstab and add an entry for FireWire drive
Physical Device Mount Point
Type Options Frq Pass
/dev/sda1 /mnt/fire0
ext3 noauto,owner,rw 0
0
root@tampa /etc]# mkdir –p /mnt/fire | Make a
directory name for the mount point
root@tampa./etc]# mount –t ext3 /dev/sda1 /mnt/fire | Mount the FireWire drive
[root@tampa root]# df -k |Find it
in the list of mounted disks with correct file system
Filesystem
1k-blocks Used Available
Use% Mounted on
/dev/hda2 2577424
1688336 758160 70% /
/dev/hda6 10206972
114920 9573556 2% /data
/dev/hda3 256665
86192 157220 36% /home
none 127880
0 127880 0% /dev/shm
/dev/sda1 76920416
35902704 37110304 50% /mnt/fire [specific mount pt.]
root@tampa./etc]# mount |Confirming
the file system; mount with no options
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda6 on /data type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda1 on /mnt/fire type ext3 (rw)
[specific f/s]
Some additional commands that are of value to the root during the mounting process are described next. For example, to confirm the number and nature of the SCSI devices, root can issue cdrecord –scanbus command. A typical response will look like the following (here there are two Maxtor FireWire drives):
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C)
1995-2001 Jörg Schilling
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'Maxtor ' '1394 storage ' 'v1.2' Disk
0,1,0 1) 'Maxtor ' '1394 storage ' 'v1.2' Disk
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Another way to look at the same information is to examine the text file /proc/scsi/scsi.
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor:
Maxtor Model: 1394 storage Rev: v1.2
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor:
Maxtor Model: 1394 storage Rev: v1.2
Type: Direct-Access ANSI SCSI revision: 06
Once the f/s is mounted, in our case as /mnt/fire,
the users can access it to write, read, and modify the data found in the
drive. Once all the needed data is
stored simply unplug the cable connecting the device to a computer, switch off
the power supply and carefully pack it for transport.
This section deals with the process of mounting two FireWire devices, for example, two external drives, or one external drive and a DVD-R drive. Once again we go over the process of finding the designation and mount the drives independently. A typical output for sfdisk –l for two external drive may look like the following:
Disk /dev/hda: 2205 cylinders, 255 heads,
63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024
bytes, counting from 0
Device
Boot Start End #cyls
#blocks Id System
/dev/hda1
* 0+ 521
522- 4192933+ 7
HPFS/NTFS
/dev/hda2
522 847 326
2618595 83 Linux
/dev/hda3
848 880 33
265072+ 83 Linux
Disk /dev/sda: 9732 cylinders, 255 heads,
63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024
bytes, counting from 0
/dev/sda1
0+ 4177 4178- 33559753+ 83 Linux
/dev/sda2
4178 9731 5554
44612505 83 Linux
Disk /dev/sdb: 9732 cylinders, 255 heads,
63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024
bytes, counting from 0
/dev/sdb1
0+ 9728 9729- 78148161 83 Linux
end: (c,h,s) expected (1023,254,63) found
(512,254,63)
/dev/sdb2
0 - 0 0 0 Empty
We note that the there are three drives: one IDE drive (/dev/hda) and two SCSI disks (/dev/sda + /dev/sdb). The IDE drive has several partitions (/dev/hda1-hda3) and the first SCSI disk has two partitions (/dev/sda1+sda2) and the second SCSI disk has one partition (/dev/sdb1). If we now know what kind of filesystems these drives belong to we can mount them independently.
[root@tampa root]# mount /dev/sda1 /mnt/fire1| Mount
with no specific f/s
[root@tampa root]# mount –t reiserfs /dev/sda2
/mnt/fire2 | Mount with specific f/s
[root@tampa root]# df -k
Filesystem
1k-blocks Used Available
Use% Mounted on
/dev/hda2 2577424
1692664 753832 70% /
/dev/hda6 10206972
114920 9573556 2% /data
/dev/hda3 256665
86221 157191 36% /home
none 127880
0 127880 0% /dev/shm
/dev/sda1 33558720 3869464
29689256 12% /mnt/fire1
/dev/sda2 44611136
34015316 10595820 77% /mnt/fire2
[root@tampa root]# mount -t ext3 /dev/sdb1
/mnt/fire0 | Mount with specific f/s
[root@tampa root]# df -k
Filesystem
1k-blocks Used Available
Use% Mounted on
/dev/hda2 2577424
1692668 753828 70% /
/dev/hda6 10206972
114920 9573556 2% /data
/dev/hda3 256665
86223 157189 36% /home
none 127880
0 127880 0% /dev/shm
/dev/sda1 33558720
3869464 29689256 12% /mnt/fire1
/dev/sda2 44611136
34015316 10595820 77% /mnt/fire2
/dev/sdb1 76920416
35902704 37110304 50% /mnt/fire0
[root@tampa root]# mount |Just
confirm the f/s by issuing mount command with no arguments
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda6 on /data type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda1 on /mnt/fire1 type reiserfs (rw)
/dev/sda2 on /mnt/fire2 type reiserfs (rw)
/dev/sdb1 on /mnt/fire0 type ext3 (rw)
If, instead of two external harddrives, there is one FireWire drive and one FW dvd-rom drive (see for more details, NFS_DVD_Linux.doc) then we mount them separately as shown below:
[root@tampa root]# mount -t ext3 /dev/sda1
/mnt/fire1 | Mount with specific f/s
[root@tampa root]# mount -t iso9660 –o ro /dev/scd0
/mnt/fw-dvd | Mount dvd
[root@tampa root]# df -k
Filesystem
1k-blocks Used Available
Use% Mounted on
/dev/hda2 2577424
1692388 754108 70% /
/dev/hda6 10206972
114920 9573556 2% /data
/dev/hda3
256665 86300
157112 36% /home
none 127880
0 127880 0% /dev/shm
/dev/scd0 3942432
3942432 0 100%
/mnt/fw-dvd
/dev/sda1 76920416
1920720 71092288 3% /mnt/fire1
[root@tampa log]# mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda6 on /data type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/scd0 on /mnt/fw-dvd type iso9660 (ro)
/dev/sda1 on /mnt/fire1 type ext3 (rw)
Now with the native cd-rom drive(IDE cd-r/dvd-rom in lap-top), FireWire DVD-R,-RW drive and FireWire external drive then the mounting will go as follows:
[root@tampa log]# grep -i 'cd' /var/log/dmesg
hdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM drive [IDE drive]
hdc: ATAPI 24X DVD-ROM CD-R/RW
drive, 2048kB Cache, UDMA(33) [SCSI/FireWire drive]
Uniform CD-ROM driver Revision: 3.12
root@tampa log]# dmesg |grep -i 'sd' |more
Installing knfsd (copyright (C) 1996
okir@monad.swb.de).
Attached scsi disk sda at scsi0, channel 0, id 0,
lun 0
SCSI device sda: 156355584 512-byte hdwr
sectors (80054 MB)
sda: sda1
EXT3 FS 2.4-0.9.17, 10 Jan 2002 on sd(8,1), internal
journal
[root@tampa root]# mount -t iso9660 –o ro /dev/hdc
/mnt/cdrom | Mount cdrom
[root@tampa root]# mount -t ext3 /dev/sda1
/mnt/fire1 | Mount with specific f/s
[root@tampa root]# mount -t iso9660 –o ro /dev/scd0
/mnt/fw-dvd | Mount dvd
[root@tampa log]# df -k
Filesystem
1k-blocks Used Available
Use% Mounted on
/dev/hda2 2577424
1692388 754108 70% /
/dev/hda6 10206972
114920 9573556 2% /data
/dev/hda3 256665
86300 157112 36% /home
none 127880
0 127880 0% /dev/shm
/dev/hdc 287466
287466 0 100% /mnt/cdrom
/dev/scd0 3942432
3942432 0 100%
/mnt/fw-dvd
/dev/sda1 76920416
1920720 71092288 3%
/mnt/fire1
[root@tampa log]# mount | Confirm
the f/s by issuing mount command with no arguments
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda6 on /data type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hdc on /mnt/cdrom type iso9660 (ro)
/dev/scd0 on /mnt/fw-dvd type iso9660 (ro)
/dev/sda1 on /mnt/fire1 type ext3 (rw)
Finally, once the devices (f/s) are mounted the user can access them depending upon their access control. For example, cd-rom will have read-only access and hard-drive will have read and write access. Once the experiment is complete the user (or root) can umount the device whenever it is required using the umount command
[root@raccoon /]# umount /mnt/fw-dvd
[root@raccoon /]# umount /mnt/cdrom
[root@raccoon /]# umount /mnt/fire1
If things have gone correctly you will be able to mount the devices on to a Linux workstation. Some of the frequent problems are dealt with below. If you still can’t resolve the problem consult with Thayumana Somasundaram (soma@sb.fsu.edu | 850-644-6448) or Mike Zawrotny (850-644-0069 | zawrotny@sb.fsu.edu).
When trying to unmount /mnt/fw-dvd at workstation after the use, the user (root) may encounter an error stating that the dvd is busy and the user can’t unmount it. In this event, first make sure you have successfully un exported the device from all clients. A typical session is shown below:
[root@neptune
~]# umount /mnt/fw-dvd
umount:
/mnt/fw-dvd: device is busy
Now un export
the device from other clients
[root@neptune
~]# exportfs -vu raccoon.chem.fsu.edu:/mnt/fw-dvd
unexporting
raccoon.chem.fsu.edu:/mnt/fw-dvd
unexporting
raccoon.chem.fsu.edu:/mnt/fw-dvd from kernel
[root@neptune
~]# umount /mnt/fw-dvd
When trying to unmount /mnt/fw-dvd at workstation after the use, the user may encounter an error stating that the dvd is busy and the user can’t unmount it. This may happen if the user is physically in the /mnt/fw-dvd or any of the subdirectories. Change directory to home and run fuser –vu /mnt/fw-dvd command or lsof |grep ‘/mnt/fw-dvd’ and ensure no process is accessing the f/s and umount it. A typical session is shown below:
[root@tampa /mnt/fw-dvd]# umount /mnt/fw-dvd
umount: /mnt/fw-dvd: device is busy
[root@tampa /mnt/fw-dvd]# fuser -vu /mnt/fw-dvd
USER PID ACCESS COMMAND
/mnt/fw-dvd
root kernel mount /mnt/fw-dvd
[root@tampa /mnt/fw-dvd]# lsof |grep /mnt/fw-dvd
tcsh
2398 soma cwd DIR
11,0 67584 47104 /mnt/fw-dvd
rxvt
2414 soma cwd DIR
11,0 67584 47104 /mnt/fw-dvd
[root@tampa /mnt/fw-dvd]# cd /home
[root@tampa /mnt/fw-dvd]# kill –9 2424 or close the
rxvt
[root@tampa /mnt/fw-dvd]# umount /mnt/fw-dvd
After you hot-plug a FireWire drive if you are unable to see the device there could be several reasons. Just ensure that you FireWire is powered. If it is powered and running, try unplugging and replugging it again. Even after these tries, if you don’t see the device (i.e, when you list them as SCSI devices using more /proc/scsi/scsi or cdrecord –scanbus commands) the modules may not have properly been installed. To remedy this problem, uninstall and re-install the relevant modules in a set sequence. Given below is the sequence:
1) List
the modules
[root@raccoon
log]# lsmod
Module Size Used by
Not tainted
sg 33924 0
(autoclean)
sr_mod 16632 0
(autoclean)
soundcore 6468 0 (autoclean)
sbp2
19744 0 (unused) [For
Firewire]
ohci1394
18784 0 (unused) [For Firewire]
ieee1394
45064 0 [sbp2 ohci1394] [For Firewire]
2) Remove
the modules one at a time in the following sequence:
[root@raccoon
log]# rmmod sbp2
[root@raccoon
log]# rmmod ohci1394
[root@raccoon
log]# rmmod ieee1394
3) Reinstall
the modules one at a time in the following sequence (reverse of rmmod):
[root@raccoon
log]# insmod ieee1394
[root@raccoon
log]# insmod ohci1394
[root@raccoon
log]# insmod sbp2
4) Now
repeat the dvdrecord command. You will be able to see the firewire drives.
[root@raccoon
~]# more /proc/scsi/scsi
Attached
devices:
Host:
scsi0 Channel: 00 Id: 05 Lun: 00
Vendor: ARCHIVE Model: Python 04106-XXX Rev: 735B
Type:
Sequential-Access
ANSI SCSI revision: 02
Host:
scsi0 Channel: 00 Id: 06 Lun: 00
Vendor: IBM Model: DDYS-T36950N
Rev: S80D
Type:
Direct-Access
ANSI SCSI revision: 03
Host:
scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: CD-Writer+ 9500
Rev: 1.0e
Type:
CD-ROM
ANSI SCSI revision: 02
Host:
scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: Maxtor Model: 3000DV
Rev: 0100
Type:
Direct-Access
ANSI SCSI revision: 06