Une distribution GNU sur android
Niveau :
Résumé : debootstrap --foreign ; debian.apk
Android is Not GNU
Maintenant qu'on est root, on peut faire tout ce qu'on veut sur notre android. Mais il faut bien avouer que busybox est assez limitée pour les habitués des systèmes GNU que nous sommes.
C'est pourquoi nous allons mettre un système GNU complet sur notre android. Et de préférence sans influer sur la bonne marche du téléphone.
Pour cela, il faut laisser tourner l'android tel quel, et surtout garder son noyau. Mettre un 2e système sur un noyau qui tourne, on sait faire, dans sa version la plus simple ça s'appelle un chroot, c'est disponible de base et c'est exactement ce dont on a besoin.
Notez que les commandes indiquées ici se basent sur un shell et les commandes fournies par busybox telles qu'installée dans l'article précédent. Vous pouvez vous en passer, mais quelques adaptations seront nécessaires (par exemple -o bind à la place de --bind).
Comment qu'on fait ?
Comment créer un chroot sans se presser ?
Choisissons (au hasard) la distribution debian. Elle nous propose ... wait for it ... un créateur de chroot. Il s'appelle debootstrap.
Seul problème nous ne pouvons pas le lancer directement sur le téléphone. Il faut donc le lancer sur une autre machine. Et à moins d'avoir une machine arm sous le coude, nous ne serons pas sur la bonne architecture.
Heureusement debian est bien structuré et debootstrap a tout prévu. Nous allons le lancer 2 fois. La première fois sur notre machine habituelle :
$ debootstrap --foreign --arch armel wheezy mydebian
Pour ceux qui n'ont pas debian, sachez qu'il est possible de télécharger et d'exécuter debootstrap sur n'importe quel autre linux.
Et pour ceux qui voudraient essayer une autre méthode, suivez ce lien : http://wiki.debian.org/EmDebian/Cro...
Déplaçons tout ça sur le téléphone :
# toujours sur le pc $ tar cf debian.tar mydebian $ adb push debian.tar /sdcard/debian.tar
Une debian basique est relativement petite, nous devrions pouvoir trouver une place sur le téléphone. Seule contrainte, il faut la déposer sur une partition qui utilise les droits posix (et donc pas sur /sdcard qui est en FAT). J'ai choisi /data/local/tmp
# sur l'android (avec busybox) $ cd /data/local/tmp $ tar xf /sdcard/debian.tar
Profitons-en pour terminer le debootstrap (il faut être root sur l'android et il vaut mieux utiliser les commandes busybox) :
# on prépare le chroot $ NEW=/data/local/tmp/mydebian $ mount --bind /dev $NEW/dev $ mount --bind /proc $NEW/proc $ mount --bind /sys $NEW/sys $ mount --bind /dev/pts $NEW/dev/pts # et on termine debootstrap dedans export PATH=/bin:/sbin:/usr/bin:/usr/sbin $ chroot $NEW/debian debootstrap --second-stage
Et voilà !
Vous pouvez compléter par :
- modifier /etc/hostname
- modifier /etc/resolv.conf (nameserver 8.8.8.8 pour utiliser le resolver de google disponible partout)
- ... dites-moi ce que vous avez fait
Comment qu'on l'utilise ?
Maintenant que tout est prêt il faut pouvoir réutiliser ces commandes à tout moment. Pour ma part j'ai fait le petit script suivant qui me permet de rentrer dans le chroot :
ROOT=/data/local/tmp/mydebian BB=/data/busybox/ if ! ls $ROOT/proc/1 > /dev/null then $BB/mount --bind /dev $ROOT/dev $BB/mount --bind /proc $ROOT/proc $BB/mount --bind /sys $ROOT/sys $BB/mount --bind /dev/pts $ROOT/dev/pts fi export PATH=/bin:/sbin:/usr/bin:/usr/sbin /system/bb/su -c "$BB/chroot $ROOT /bin/bash"
Et pour les gens qui aiment le tout réseau vous pouvez mettre un serveur ssh dans le chroot, ça vous le rendra accessible à distance. Pensez juste à vous connecter au chroot et à le relancer à chaque fois que le téléphone redémarre.
Conclusion
N'oubliez pas, votre téléphone continue de tourner, le chroot n'est qu'un moyen d'avoir accès aux commandes debian (dont apt-get install qui est une commande magnifique pour un android, plus besoin d'installer des machins à la main).
Mais même si votre shell tourne dans un chroot, le noyau reste le même et tous les services en dehors du chroot continuent leur vie comme d'habitude. Cela permet au téléphone de rester un vrai téléphone d'origine. Revenir en arrière consiste à rebooter et à supprimer le répertoire debian.
Amusez-vous bien !
Si vous avez aimé, il y a aussi :
Tags:android, Debian, i, planet-libre, planete-libre