FS#9730 - Support loading rockbox from osos on ipod
Opened by Torne Wuff (torne) - Tuesday, 30 December 2008, 21:15 GMT
Last edited by Dave Chapman (linuxstb) - Tuesday, 12 May 2009, 20:42 GMT
Attached patch allows the rockbox ipod bootloader to load rockbox from the osos image in RAM, in the same way the retail OS is loaded. This should work on any ipod model, but I have only tested on an 80GB Video.
This allows a sufficiently brave user to replace the osos image with rockbox + rockbox bootloader, which shaves roughly five seconds off booting but still allows booting the retail OS from apple_os.ipod using the hold switch. The speed gain is twofold: the apple ROM no longer has to load a 7.5MB firmware image which won't be used (just the 1MB of rockbox), and the rockbox loader no longer has to load rockbox at all.
The portalplayer entry point has been modified so that part of the padding space at the beginning of the image now contains the string "Rockbox\1" at offset 0x20. This allows the bootloader to check if rockbox is indeed loaded in the osos image. (the 0x01 byte is to guard against a vague thought that a future version of this might be incompatible - unlikely, but it makes it a nice power of 2).
If a rockbox.ipod file actually exists on disk it is loaded in preference to the osos image (same behaviour as apple_os.ipod).
To actually make use of this after patching, it is necessary to compile a new rockbox build and a new bootloader, and then with ipodpatcher:
1) dump the apple os to apple_os.ipod
2) install rockbox.ipod as the osos firmware image
3) append the rockbox bootloader to the image
Then, delete or rename rockbox.ipod from the ,rockbox folder. Booting with hold turned off will then boot more quickly into the rockbox version installed in osos. With hold turned on, the apple OS will be loaded from disk.
The bootloader change should be 100% backward compatible: if the osos image is the apple OS, then it will behave identically to unpatched bootloaders.
Tuesday, 12 May 2009, 20:42 GMT
Reason for closing: Accepted
Additional comments about closing: Committed as r20921 - thanks!