With a 2.6 Linux kernel, particularly on a modern distribution with udev, it is quite easy to get FireWire to act as the physical network interface between a GNU/Linux box and a Mac. FireWire does have some advantages over USB in some areas, although support for FireWire is dwindling. For more information on FireWire see
the wikipedia entry. We will focus on getting a GNU/Linux box ASAP that will accept a complete rsync of the root filesystem of a Mac over FireWire.
To start with, since support is dwindling, the standard kernels for Red Hat and Centos on the latest version don't support FireWire. Recompiling a Red Hat kernel is a possibility, but there is a special procedure and many patches to apply. We have done it, but other things break. For instance, if you use a standard kernel VMware works well. As soon as you change your kernel, VMware has trouble loading the vmnet and vmmon modules. There are workarounds, but it is a PITA. Because of this we run a standard kernel:
[root@sv-1 /]# uname -a
Linux sv-1.networking7by24.com 2.6.9-34.EL #1 Wed Mar 8 00:07:35
CST 2006 i686 i686 i386 GNU/Linux
[root@sv-1 /]#
|
One very easy way to get firewire running is to boot with a CentOS LiveCD kernel, available from
here:
uname -a
Linux sv-1.networking7by24.com 2.6.9-34.19.EL.livecd.2 #1
Sat May 6 13:29:18 CDT 2006 i686 i686 i386 GNU/Linux
[root@sv-1 ~]#
|
After rebooting, load the eth1394 module:
insmod /lib/modules/2.6.9-34.19.EL.livecd.2/kernel/drivers/ieee1394/eth1394.ko |
Look for the interface to show up with dmesg:
[root@sv-1 ~]# dmesg | grep eth2
divert: not allocating divert_blk for non-ethernet device eth2
eth1394: eth2: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)
[root@sv-1 ~]#
|
Configure the interface with an IP address and subnet mask:
[root@sv-1 ~]# ifconfig eth2 10.50.1.1 netmask 255.255.255.0 up
[root@sv-1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:E9:EE:18:AF
inet addr:10.50.100.1 Bcast:10.50.100.255 Mask:255.255.255.0
inet6 addr: fe80::207:e9ff:feee:18af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:333 errors:0 dropped:0 overruns:0 frame:0
TX packets:234 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31726 (30.9 KiB) TX bytes:33491 (32.7 KiB)
eth2 Link encap:UNSPEC HWaddr 00-02-3C-00-50-01-78-18-00-00-00-00-00-00-00-00
inet addr:10.50.1.1 Bcast:10.50.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8258 (8.0 KiB) TX bytes:0 (0.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:588 (588.0 b) TX bytes:588 (588.0 b)
[root@sv-1 ~]#
|
On the Mac side, simply configure the FireWire port as a network port:
Check it out. An rsync of the Mac root filesystem clocks in at 1,679,401.25 bytes/sec with the z compression option:
srv-5:/Users/usr4 root# rsync -e 'ssh -p 22' -avz --delete --exclude=/dev
--exclude=/volumes / root@10.50.1.1:/mac/
The authenticity of host '10.50.1.1 (10.50.1.1)' can't be established.
RSA key fingerprint is e5:4b:a8:11:9b:5d:3f:a7:1c:44:07:c1:3d:24:e3:54.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.50.1.1' (RSA) to the list of known hosts.
root@10.50.1.1's password:
building file list ...
uilding file list ... done
./
.DS_Store
.Spotlight-V100/
.Spotlight-V100/.journalHistoryLog
.Spotlight-V100/.store.db
.Spotlight-V100/ContentIndex.db
.
.
.
usr/standalone/ppc/bootx.xcoff
var -> private/var
xcode_2.2.1_8g1165_018213632.dmg
sent 19434683867 bytes received 10263460 bytes 1679401.25 bytes/sec
total size is 28655889892 speedup is 1.47
rsync warning: some files vanished before they could be transferred
(code 24) at /SourceCache/rsync/rsync-24/rsync/main.c(717)
srv-5:/Users/usr4 root#
|
That is fast! The destination was a blank directory, so this is pure transfer.