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.example.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.example.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.