The iPhone Wiki is no longer updated. Visit this article on The Apple Wiki for current information. |
IDroid
iPhonelinux is a project which goals are to port linux on the iPhone and make a Free (free software) OS alternative to the Apple proprietary "iPhone OS".
iPhonelinux is not actually a hack/exploit neither an unlock, but it is based on the Pwnage exploit.
There are three steps in the iPhonelinux roadmap : OpeniBoot, linux kernel and long term (GUI, phone...)
Contents
OpeniBoot
The Goals of OpeniBoot is to run low-level code, to have low and critical drivers (nand and nor driver, NVRAM...), debugger and development environment (chainloading, upgrading itself and USB mass storage).
Linux
A linux Bootloader, a working linux kernel (just a question of cross-compiler), porting drivers, run wifi and command line thru SSH.
Long-Term Plans
Multi-touch driver, Baseband driver, port X server and create an SDK. Then have a viable alternative of the iPhone OS.
Binaries
These are utility binaries precompiled on Ubuntu 8.10. They require:
- libpthread - libncurses - libusb - libreadline
You may elect to build them from source by pulling from iphonelinux/openiboot's git repository.
Disclaimer
BE WARNED THAT THESE STEPS ARE NOT INTENDED FOR NOVICES. YOU ATTEMPT THIS AT YOUR OWN RISK. AT THIS TIME, WE CANNOT AFFORD THE EFFORT REQUIRED TO GIVE SUPPORT TO NOVICES AND/OR RESCUE THEM FROM THEIR OWN ACTIONS.
Although unlikely, if the installation goes wrong, you may have to perform a DFU restore on your iPhone. If you do not know how to do that, you should not follow these steps. You should also know how to use iRecovery (or similar) and the fsboot command to "kick an iPhone out of recovery mode". If you do not know how to do that, you should not follow these steps.
The installation of openiboot itself is safe, but openiboot has the facility to erase device-specific information from your NOR flash. If you did not make a backup, and execute the commands necessary to make openiboot erase that information, it is gone forever and your device may never boot properly again.
The instructions below will show you how to make such a backup before any changes are made.
Installing OpeniBoot
1. Put your iPhone in Recovery Mode
2. sudo ./loadibec openiboot-2g.img3, or -3g, -ipod, depending on your platform.
3. sudo ./oibc
4. nor_read 0x09000000 0x0 1048576
5. ~norbackup.dump:1048576. This will create a file called norbackup.dump in your current directory. GUARD IT WITH YOUR LIFE.
6. install
7. After 'install' has finished, type in: reboot.
8. You ought to see the openiboot menu.
Booting Linux
Use the Hold button to navigate the menu. Push the Home button when openiboot client is selected.
sudo ./oibc !zImage kernel !rootfs.arm.ext2.gz ramdisk 3588 boot "console=tty console=ttyUSB root=/dev/ram0 rw" sudo ./linux
You should now get a login prompt. Nothing that's happening will show up on the LCD automatically, but you can redirect it to the display with the following command:
sh 2>&1 > /dev/tty0
Enjoy!
iPhone Linux Resources
- Framebuffer driver - Serial driver - Serial over USB driver - Interrupts, MMU, clock, etc.
OpeniBoot Resources
- Read-only support for the NAND
OpeniBoot Missing Resources
- Write support for the NAND - Wireless networking - Touchscreen - Sound - Accelerometer - Baseband support
Support
The current userland we're using, in the interest of expedience, is a Busybox installation created with buildroot, but glibc works fine as well, and we're going to build a more permanent userland solution.
A demonstration video can be seen here: http://www.vimeo.com/2373142
Download here: http://localhostr.com/files/b00133/iphonelinux-demo.tar.gz
Project leader: planetbeing
Contributors: CPICH, cmw, poorlad, ius, saurik
If you're experienced with hacking/porting Linux and especially if you're experienced with porting Android, I'd definitely like to hear from you. Come chill in the #iphonelinux channel on irc.osx86.hu . If you're not experienced, and still want to help, you can digg/slashdot this posting to heaven so our little project gets more visibility. Thanks. :)