Au préalable, il faut un iPhone jailbraké, avec cydia.

Se connecter à l'iPhone.

Il suffit d'utiliser iproxy, fourni dans les versions récentes d'usbmuxd (voir ce billet), et d'avoir installé openssh sur l'iphone avec cydia.

 iproxy 3023 22

Puis dans un autre terminal :

 ssh -p 3023 mobile@localhost

(le mot de passe par défaut est alpine)

Sur des distris moins à la pointe, on peut utiliser itunnel requiert libusb-devel entre autres.
Par exemple pour centos :

 wget http://www.cs.utoronto.ca/~jingsu/itunnel/itunnel-0.0.9.tgz
 tar xzf itunnel-0.0.9.tgz
 cd itunnel-0.9
 make
 ./itunnel

itunnel pointe par défaut le port 3023, donc la commande ssh est la même.

Après ça, on peut par exemple échanger les clés ssh, changer son mot de passe, modifier son .profile pour lancer bash au démarrage de la session.

Avant d'installer gcc

libgcc, requise par gcc n'est pas disponible sur cydia, donc on ne peut pas installer gcc directement.
Au préalable, on installe donc fake-libgcc.
Sur l'iPhone

 wget http://files.getdropbox.com/u/876743/fake-libgcc_1.0_iphoneos-arm.deb
 dpkg -i fake-libgcc_1.0_iphoneos-arm.deb

Ensuite, on peut installer gcc avec cydia.

Installer les entêtes

Pour compiler du code, on va avoir besoin des entêtes (headers). Ils sont fournis avec le SDK Apple, ou on les trouve sur le web : sdk-2.0-headers.tar.gz.

Ensuite on les installe un peu où on veut, ils ne sont nécessaires qu'à la compilation. (Bon, normalement selon les directives linux filesystem hierarchy, on installe les données à partir de tar.gz dans /usr/local/, donc là ce serait /usr/local/include.)

J'ai plutôt installé les headers dans le home, pour être mois intrusif.

 tar xzf sdk-2.0-headers.tar.gz 
 mkdir /var/mobile/dev  
 mv include-2.0-sdk-ready-for-iphone /var/mobile/dev/include

Et voilà, le système est prêt à compiler du code !

A suivre...