HOWTO: iBook G4, boot from external firewire drive
Don't know if this is useful but I have got Ubuntu to successfully boot from an external firewire drive connected to my G4 iBook.
I don't have much time now so am going to post only the bare essentials but it should be enough if combined with lots of research online.
The problem I faced is not being able to install Ubuntu (to be honest I'm not sure if it's Warty or Hoary - whatever!) on my external firewire disk. The install worked but fell-down when it came to the install yaboot stage.
I first did another install on some spare space on the iBook's internal drive and got a functioning standard Ubuntu system. Next I made swap space and a root partition on the external drive and used dd to mirror the root partition from the internal drive to the new root partition on the external drive.
I first tried to boot off the kernel on the internal drive and pass it root=/dev/sda5 (my root partition on the firewire drive is on sda5). Naturally, this failed because the firewire drive is not recognised until after the root partition is already up and running (Catch-22).
The answer is to boot via an initrd whose linuxrc script gets the firewired drive "up" on the scsi bus, then switches root to be on the root partition on the now-recognised firewird drive.
So, the linuxrc script first scans the scsi bus using:
echo "add-single-device 0 0 0 0" > /proc/scsi/scsi
(0 0 0 0 worked on my system - use output from cat /proc/scsi/scsi to determine)
then I have the script wait for a bit (sleep 1)
then switch root to the firewire root partition with:
echo 0x805 > /proc/sys/kernel/real-root-dev
(0x805 is for /dev/sda5 which is the root partition on my firewire drive - get this number by doing ls -al /dev/sdxx for your external root partion and getting the major and minor device numbers)
then unmount /proc, then exit and ubuntu will continue to boot off the external firewire drive. I think you should have changed /etc/fstab on the external root drive to reflect the fact that your going to be using the external partiton as root.
You can then use yaboot to boot from the external drive. The only trouble I had here was finding the openfirmware alias for my firewire drive. devalias didn't work but I found the information by examining the /proc structure:
find /proc/device-tree -name disk@\* | grep firewire
(the bit starting pci@... is the openfirmware alias)
Like I said this is a bit sketchy but should help.