Comme cela a déjà été souligné, vous devez installer un chroot compatible ARM sur votre appareil et installer tous les packages requis dans ce chroot. Cependant, le faire dans votre répertoire personnel gaspille beaucoup d'espace précieux. Au lieu de cela, cela peut être fait sur votre carte SD en utilisant un ordinateur fonctionnant sur un système d'exploitation Linux approprié (testé sur Linux Mint 17 et Ubuntu Trusty). Comme je n'ai trouvé aucune information à ce sujet ailleurs, je l'ai mise ici en réponse à une vieille question.
Les instructions suivantes supposent que vous souhaitez installer un chroot Debian Jessie dans le répertoire Jessie.
Création et remplissage du fichier image sur un ordinateur de bureau
Création d'un fichier image vide
Pour créer une image de 1 Go appelée IMAGE.img dans le répertoire de travail actuel, procédez comme suit:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Notez que le B en GB est omis. "si" signifie "fichier d'entrée", "de" pour "fichier de sortie" et "bs" pour "taille de bloc".
Il existe des commandes plus efficaces, mais celles-ci ne fonctionnent que sur certains types de systèmes de fichiers, à ma connaissance. Celui-ci fonctionne également sur une carte SD ou un tempfs. Veuillez noter l'utilisation de / dev / zero et non / dev / random ou / dev / urandom car cela prendrait beaucoup plus de temps et rendrait le transfert de l'image entre les périphériques plus tard.
Création d'un système de fichiers sur l'image
Sans le système de fichiers, le téléphone ne pourrait pas stocker de données sur l'image. Sans système de fichiers, vous ne pouvez pas encore monter l'image dans un répertoire, uniquement sur un périphérique bloc.
Cette commande bash affichera le prochain périphérique de boucle vide dans la variable LOOP
:
$LOOP=$(sudo losetup -f)
Ensuite, affectez l'image à un périphérique de bloc:
sudo losetup $LOOP IMAGE.img
Ensuite, créez le système de fichiers ext4 dessus:
sudo mkfs -t ext4 $LOOP
Ensuite, détachez l'image du périphérique de boucle:
sudo losetup -d $LOOP
Si vous obtenez des erreurs de commande introuvable, installez simplement les programmes manquants.
Montez le fichier image sur l'ordinateur pour y accéder
Maintenant, créez un répertoire temporaire dans le répertoire de travail:
mkdir jessie
et montez-y le fichier image IMAGE.img:
sudo mount -o loop IMAGE.img $(pwd)/jessie
La commande pwd
s'assurera que vous donnez à mount un chemin absolu vers votre répertoire de travail actuel.
Remplir l'image avec le nouveau système d'exploitation avec qemu-debootstrap
La prochaine étape sera d'utiliser qemu-debootstrap pour télécharger les fichiers nécessaires. C'est facile si qemu-debootstrap est disponible comme c'est le cas sur Ubuntu et les OS dérivés. Si vous obtenez des erreurs de commande introuvable lors de l'exécution
qemu-debootstrap --help
, essayez d'installer le package approprié, ce qui peut être fait sur Ubuntu via:
sudo apt-get install qemu-user-static
Pour télécharger tous les fichiers requis et préparer le nouveau système d'exploitation, exécutez la commande suivante:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Veuillez noter que le premier jessie
représente la version du système d'exploitation tandis que le second jessie
représente le répertoire dans lequel les fichiers doivent être installés.Vous pouvez maintenant démonter l'image car le reste du travail doit être effectué sur le téléphone. Faites-le via:
sudo umount $(pwd)/jessie
Si vous ne pouvez pas installer qemu-debootstrap, consultez la section suivante.
Remplir l'image avec le nouveau système d'exploitation sans qemu-debootstrap
Veuillez ignorer cette section si vous disposez de qemu-debootstrap. Cependant, vous aurez toujours besoin d'un debootstrap natif pour votre architecture. Si cela se trouve être armhf, utilisez simplement la ligne de commande ci-dessus mais remplacez qemu-debootstrap
par
debootstrap
. Sinon, suivez cette section.
Pour télécharger tous les fichiers requis pour le nouveau système d'exploitation, exécutez la commande suivante:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Vous pouvez maintenant démonter l'image car le reste du travail doit être effectué sur le téléphone. Faites-le via:
sudo umount $(pwd)/jessie
Transférer l'image sur le téléphone
Créez maintenant une archive tar à partir de laquelle vous copiez ensuite sur votre téléphone. Peu importe que l'archive soit placée sur la carte SD ou sur le stockage interne. Créez l'archive sur le bureau en utilisant:
tar -cvzf jessie.tar.gz IMAGE.img
Maintenant, sur votre téléphone, activez la prise en charge ssh pour copier l'image. Vous pouvez également le faire en utilisant un câble USB à la place. Puisque le serveur ssh est réinitialisé à chaque redémarrage, démarrez le service ssh sur le téléphone via:
sudo service ssh start
Ensuite, copiez l'image via:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
où la variable COPYDIR
contient le répertoire où l'image doit être stockée. Cette commande suppose que votre nom d'utilisateur sur le téléphone est phablet et que le nom d'hôte du téléphone est ubuntu-phablet. Vous pouvez le découvrir à la fois par émission echo $USER
et echo $HOSTNAME
par téléphone, respectivement.
Il ne vous reste plus qu'à extraire l'archive où vous voulez que l'image réside. Supposons que le répertoire où vous souhaitez que l'image soit située est stocké dans la variable IMAGEDIR
. Extrayez-y l'image via la commande bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Vous pouvez maintenant supprimer l'archive:
rm $COPYDIR/jessie.tar.gz
Finaliser et utiliser l'image sur le téléphone
Si vous n'avez pas allumé le serveur ssh sur le téléphone, faites-le maintenant via:
sudo service ssh start
Ensuite, montez votre image dans un répertoire de votre choix (dans ce cas "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Maintenant, entrez votre chroot pour la première fois via:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Si vous disposiez de qemu-debootstrap sur votre ordinateur, vous avez terminé. Utilisez les 2 commandes ci-dessus pour vous connecter à votre chroot. Sinon, vous devez toujours exécuter la commande suivante une fois que vous êtes dans votre chroot, afin de configurer correctement le système d'exploitation:
/debootstrap/debootstrap --second-stage
Résumé de l'accès au chroot
Si vous avez suivi les étapes ci-dessus, vous devriez pouvoir accéder à votre chroot en utilisant ce simple script sur le téléphone:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Vous devez d'abord ssh dans votre propre téléphone à partir du téléphone en raison des restrictions d'apparmeur de l'application du terminal. L'application de terminal n'est autorisée à exécuter des fichiers binaires qu'à certains endroits et ni votre répertoire personnel ni la carte SD ne font partie de ceux-ci. Le service ssh, cependant, n'a pas de telles restrictions.