Is there a BIOS on iPod which serves Firewire requests. I am asking because I want to know if I can completely screw-up the firmware (which I am assuming is the 1st partition) and still be able to mount the filesystems on my linux, so that I restore the correct firmware ?
BTW, are there any song-management tools as part of ipod-on-linux project at this time ?
First of all. From what I've been able to figure out the firewire code is in the bootstrap burnt into the iPod.
The firmware is located on the disk. Partition 2 if you have a HFS+ iPod and partition 1 if you have a FAT32 iPod.
I personally have wiped the partition table and firmware from my iPod. If I started it up then it just displayed the Apple logo and rebooted over and over again. Then I forced it into "disk mode" by holding back/forward buttons while booting. Linux kernel found the disk. Then I recreated the partition table and reinstalled the firmware on the partition, created the filesystem. After that the iPod was back to normal.
So basically its quite safe mucking around with the firmware. Since its a ARM processor with 32 MB RAM wondering if it can boot a tiny linux kernel.
Has anyone here tried doing this?
Actually, You can mess it up, but it's pretty hard to do. When the iPod boots, it launches off code stored in on-board flash memory. That code then loads the firmware off the HD. This firmware also contains a copy of the bootloader. If the two copies differ, the new copy (off the HD) is burnt into the flash.
All of the firmware is protected by checksums, so to royally screw things up is difficult. However. If you accidentally Zero the wrong memory, the checksum can become zero. The checksum is a simple additive checksum, so if the new bootloader is also zero, the flash will be effectively erased. As far as we know, there are no other checks and balances to protect the iPod.
--David Carne, The Busonerd
I'm not sure whether a song management tool is part of this project, but there is another project mypod.sourceforge.net which you could try. It's written in java so it should run with linux too.