Copyright (C) 2008 David Wang (planetbeing).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
NOTE: Version 0.3 and above will not boot iDroid 2.6.32 series kernels without additional parameters being passed to the kernel.
Build an ARM toolchain (this only needs to be done once - for subsequent builds this step can be omitted unless there has been a toolchain update):
sudo toolchain/build-toolchain.sh make
Wait, for a long time, as the toolchain is compiled.
Initialise Submodules
git submodule init
git submodule update
Compile OpeniBoot:
To run openiboot from recovery mode (a.k.a iboot), you’ll need to create an img3 image. To run openiboot from DFU mode, you'll need to create a bin.
You will need a system capable of running x86 Linux binaries (Build requires scons, libssl, libpng, libcurl, libusb, libreadline and pthread).
Change into the openiboot subfolder
For iPod Touch 1G, run:
scons iPodTouch1G
For iPhone 2G, run:
scons iPhone2G
For iPhone 3G, run:
scons iPhone3G
For iPod Touch 2G, run:
scons iPodTouch2G
For iPhone 3GS, run:
scons iPhone3GS
For iPhone 4, run:
scons iPhone4
For iPod Touch 4G, run:
scons iPodTouch4G
For iPad 1G, run:
scons iPad1G
For Apple TV 2G, run:
scons aTV2G
Compile syringe:
cd ../utils/syringe && make && cd ../../
Alternatively a Makefile has been provided in the openiboot subfolder should you prefer to use it this way - this is not covered by this README but is provided for your convenience should you wish to use it
Compile oibc:
cd utils/oibc && make && cd ../../openiboot
If you're on linux, you'll need to install the following as /etc/udev/rules.d/51-android.rules:
SUBSYSTEM=="usb" ID_VENDOR_ID=="0bb4", MODE="0666"
SUBSYSTEM=="usb" ID_VENDOR_ID=="18d1", MODE="0666"
SUBSYSTEM=="usb" ID_VENDOR_ID=="05ac", MODE="0666"
Put your phone into recovery mode: hold home whilst powering on until you see the iTunes logo.
NOTE: For the 3GS, iPhone4, iPad and Apple TV 2G, you must put your device into DFU mode instead.
For iPhone 2G, iPhone 3G & iPod Touch 1G run (substituting device and revision with the actual device, for example: iphone_3g_openiboot.img3):
../utils/syringe/utilities/loadibec device_revision_openiboot.img3
For newer devices run: (substituting device and revision with the actual device, for example: iphone_4_openiboot.bin):
../utils/syringe/utilities/loadibec device_revision_openiboot.bin
You should now see openiBoot on your phone, use the volume buttons to scroll to the console icon, then press home
Run the client:
../utils/oibc/oibc
NOTE: You cannot install openiboot on an iPhone 4, iPad or new bootrom 3GS/iPT2G - you can only run it
You should now see the same output on your computer, as is on your phone's screen.
Type:
install
and press return
OpeniBoot will then be flashed to your device's NOR - This will take a while, your NOR will be backed up during this process, and can be found in the current directory as norbackup.dump.
As of version 0.3 OpeniBoot now has a grub-style configurable menu system, OpeniBoot looks for /boot/menu.lst at boot. Below is an example menu.lst - put it in /boot (This section will be expanded upon at a later date, when newer device ports are further ahead)
title iOS
auto
title Android
kernel "(hd0,1)/idroid/zImage" "console=tty root=/dev/ram0 init=/init rw"
initrd "(hd0,1)/idroid/android.img.gz"
title iX
kernel "(hd0,1)/iX/zImage" "console=tty root=/dev/ram0 init=/init rw"
initrd "(hd0,1)/iX/initrd.img.gz"
Please leave bug reports/pull requests in the Github tracker.
For anything else, we can be found lurking in #idroid-dev on irc.freenode.net