Debian Kit : Debian en parallèle d'Android, *sans* chroot

[size=150]Présentation rapide[/size]

Pour installer Linux (et Debian en particulier) sur un appareil Android, on considère souvent qu’il y a deux possibilités :
[ul][li] Le double boot. Je trouve ça trop contraignant à utiliser et un peu risqué à installer. Non merci.[/li]
[li] Un chroot par dessus Android. C’est déjà vachement mieux, mais Debian et Android restent assez isolés l’un de l’autre, c’est pas facile de les faire communiquer ensemble. Peut mieux faire.[/li][/ul]

Je suis tombé l’autre jour sur [size=150]Debian Kit[/size] qui utilise une approche différente : il monte (bind) les répertoires classiques de Debian directement sur la racine Android, ce qui permet aux deux systèmes de communiquer sans aucun souci vu qu’ils se partagent le même filesystem.

C’est faisable grâce au fait qu’Android, même si ça reste un noyau Linux, est très très loin d’être un système GNU ou de respecter le FHS (Filesystem Hierarchy Standard) et donc il n’y a que très peu de conflits entre les deux (et le peu de conflits n’ont absolument aucune importance, sur ma tablette il n’y a que le /etc/hosts de Debian qui prend le pas sur celui d’Android et uniquement quand Debian est en fonctionnement). Par contre avec des ROM personnalisées (genre Cyanogen) il y a plus de risques de conflit car ils ont tendance à rajouter des éléments GNU. À vous de voir…

Je n’ai trouvé qu’un seul tuto traduit en Français et il ne couvre pas l’ensemble des possibilités (il est notamment prévu pour Squeeze alors que la version Wheezy est disponible maintenant) donc je m’y colle…

[size=150]Sommaire[/size]
[ul][li] Pré-requis[/li]
[li] Installation automatique dans un fichier image[/li]
[li] Installation manuelle sur carte SD[/li]
[li] Première prise en main / Commandes importantes / Se connecter en SSH[/li]
[li] Installer un serveur graphique (LXDE)[/li][/ul]

[size=150]Pré-requis[/size]

[ul][li] Être root sur votre appareil, avoir busybox d’installé (à ma connaissance toutes les méthodes de root le font pour vous). À vous de voir comment rooter votre appareil, ce n’est pas le sujet du tuto. Notez que la plupart des constructeurs annulent la garantie de la tablette quand elle est rootée.[/li]
[li] Vérifier rapidement la compatibilité de votre appareil avec l’app Debian Kit. Si tout est OK, désinstallez l’app sans essayer d’installer Debian Kit, on va faire autrement (Wheezy au lieu de Squeeze).[/li]
[li] Avoir entre 512 Mo et 2 Go pour l’image Debian, ou une carte SD libre si vous avez besoin de plus d’espace pour Debian.[/li]
[li] Avoir une connexion Wifi fonctionnelle (on va télécharger entre 100 et 500 Mo de paquets).[/li]
[li] Installer une app d’émulation de terminal. Terminal Emulator est très bien, y’a même une option pour empêcher la mise en veille (pratique pour les opérations longues).[/li]
[li] Éventuellement, installer un clavier plus pratique que celui de base. C’est pas obligatoire mais ça fait gagner beaucoup de temps. Hacker’s Keyboard est très bien, il reproduit la disposition d’un clavier PC et permet donc d’exploiter le terminal correctement (flèches de direction, Control, Tab, …). Ne vous affolez pas des avertissements d’Android quand vous l’installerez : évidemment un clavier a besoin d’accéder à tout ce que vous tapez, c’est un peu son rôle… :unamused: Hacker’s Keyboard est open-source, le code est clean, et pour les plus paranos vous pouvez toujours refaire un build vous-mêmes.[/li]
[li] Bien évidemment, il vous faut un minimum de compétences en ligne de commandes Linux, et Debian en particulier.[/li][/ul]

[size=150]ATTENTION ![/size] Vous allez faire des modifications sur votre appareil en mode root. Debian Kit a beau avoir été testé sur pas mal de matériels et systèmes Android différents, il y a toujours la possibilité que quelque chose se passe mal. Ni moi ni l’auteur original ne pouvons être tenus pour responsables en cas de souci. Avant de commencer, vous devriez probablement installer un CWM et avoir votre ROM actuelle (ou une autre) disponible pour restaurer votre appareil.
Comme d’habitude, ne suivez pas ce tuto aveuglément : lisez-le une première fois en entier sans toucher à rien, faites des recherches, adaptez-le à votre appareil, décortiquez tous les messages qui vont s’afficher, réfléchissez.

[size=150]Installation automatique dans un fichier image[/size]

[ul][li] Le script du développeur original, Sven-Ola Tuecke, est prévu pour installer Squeeze. On va donc utiliser la version d’Eric Doviak pour Wheezy. Sur votre appareil, téléchargez le fichier Debian Kit 1.6 : doviak.net/debian-kit/debian-kit-1-6.shar
[/li]
[li] Trouver l’emplacement du téléchargement. Chez moi c’était /sdcard/Download/ mais ça peut varier d’un appareil à l’autre.
[/li]
[li] En terminal, mettez-vous en root : su
[/li]
[li] Lancez l’installation : sh /sdcard/Download/debian-kit-1-6.shar

[code]Unpack to /data/local/deb (Y/n) y

[…]

About to install to /storage/sdcard0/debian.img. You have 7989 Mb left on /storage/sdcard0. If you want another image location, run the /data/local/deb/mk-debian script manually.

To install now, enter a digit and a char:

0: 512 Mb, minimal setup e.g. OpenSSL server
1: 1024 Mb, medium setup e.g. LXDE desktop
2: 2047 Mb, large setup e.g. office, browser
w: Debian Wheezy (2013, default, stable)
l: Ubuntu Lucid (2010, tested LTS version)
p: Ubuntu Precise (2012, untested LTS version)

Press [enter] without any input to abort.

Enter option (e.g. ‘0w’ for 512 Mb Wheezy):[/code]
[/li]
[li] Deux choix importants s’offrent à vous : installer Debian dans le fichier /storage/sdcard0/debian.img (tout sera dans ce fichier, c’est certainement le plus pratique pour commencer) ou bien sur une carte SD à part. L’installation automatique ne prend en charge que le fichier image, pour installer sur une carte SD il faut passer en installation manuelle (taper Entrée sans rien d’autre pour arrêter l’installation automatique, puis voir mes explications plus loin). Dans l’immédiat on va se contenter d’un fichier image.
[/li]
[li] Entrez un chiffre et une lettre correspondant à votre choix. Par exemple, 2w pour installer une Wheezy dans un fichier image de 2 Go.

[/li]
[li] Ça va prendre un petit moment (suivant votre connexion internet), le temps que debootstrap mette tout en place. N’oubliez pas d’utiliser la fonction de blocage de mise en veille de Terminal Emulator pour garder votre appareil actif. À la fin, il vous propose de nettoyer les fichiers temporaires :

[code]OK
…these files and directories are not required to run Debian on your machine:
[…]

Enter ‘yes’ to remove them (6599 -> 2182 kB), ‘ovpn’ to remove extra kit-openvpn also (-> 1182 kB), ‘no’ or ‘q’ to abort:[/code]
À moins que vous ne vouliez utiliser OpenVPN (et encore, la version Debian officielle fonctionne très bien aussi, elle sera juste un peu plus lourde), tapez ovpn. Sinon si vous voulez garder le binaire OpenVPN, tapez juste yes. Vous allez avoir un message final destiné à ceux qui ne suivent pas un tuto :

[size=150]Installation manuelle sur carte SD[/size]

Si vous voulez installer directement sur une partition de carte SD, vous devez passer en installation manuelle. Ça offre également d’autres options moins communes sur lesquelles je ne dirai rien (voir le site de Sven-Ola Tuecke, en Anglais…).

Le problème avec l’installation automatique dans un fichier image, c’est que le système de fichiers VFAT est limité à 2 Go par fichier. Impossible donc pour Debian d’occuper plus de place que ça. La solution est de mettre une carte SD externe (jusqu’à 32 Go) et de stocker Debian directement dessus.

[ul][li] Commencez l’installation comme pour une installation automatique (voir plus haut) et arrêtez-vous au moment de créer un fichier image.
[/li]
[li] Connectez votre carte SD à un PC, préparez les partitions comme vous le souhaitez (au minimum une partition vide pour Debian qui sera automatiquement formatée, éventuellement une partition VFAT supplémentaire pour Android) avec par exemple gparted. Vous êtes grands, je vais pas vous tenir la main sur ce sujet.
[/li]
[li] Insérez la carte SD dans votre appareil Android, et trouvez le nom de périphérique. Contrairement à Debian, sur Android ça se trouve dans /dev/block/ (faites ls -l /dev/block/). Et c’est pas forcément des noms de la forme sdXn… Vous devriez aussi aller fouiner dans /dev/block/devices/vold/ pour voir les partitions que le démon d’auto-montage Android a trouvées. vold travaille directement avec des identifiants numériques de périphériques de bloc, par exemple 179:8 pour la table de partitions sur le deuxième périphérique NAND Flash, et 179:9 pour la première partition de ce même périphérique. N’hésitez pas à utiliser /data/local/deb/armel/busybox fdisk -l /dev/block/XXX pour lire les tables de partition et confirmer le bon nom de périphérique. Si vous avez toujours un doute, remettez la carte SD dans votre PC et changez les partitions pour voir comment ces modifications se reportent sur Android.
[/li]
[li] Une fois la bonne partition identifiée, faites mk-debian -i /dev/block/XXX -h pour vérifier les paramètres, puis sans le -h pour lancer l’installation proprement dite.[/li][/ul]

[size=150]ATTENTION ![/size] N’essayez pas de modifier ou d’utiliser les partitions du stockage interne de votre appareil. Tout ce que vous réussirez c’est de casser votre Android, et peut-être même le CWM si vous avez pas de chance.
NE FAITES PAS N’IMPORTE QUOI, VÉRIFIEZ BIEN QUE VOUS INSTALLEZ SUR LA CARTE SD EXTERNE !

[size=150]Première prise en main[/size]

Pour le moment, on a une installation Debian très minimale. On va donc la rendre un peu moins barbare.

[ul][li] Commencez par lancer deb qui va s’occuper de monter tout ce qu’il faut là où il faut, et nous donner un shell root dans l’environnement Debian. Si ça ne fonctionne pas (commande non trouvée) c’est que le lien symbolique n’a pas pu être créé (votre appareil ne permet pas de remonter la racine en écriture) et il va falloir systématiquement taper /data/local/deb/deb.

[code]# aptitude update

aptitude upgrade

aptitude --without-recommends install andromize openssh-server sudo locales bash-completion psmisc less dnsutils ca-certificates

aptitude clean

adduser VotreLogin

adduser VotreLogin sudo

dpkg-reconfigure locales

dpkg-reconfigure tzdata

echo “NomDeMachinePlusSympaQueLeCodeHexaAndroid” > /etc/hostname && hostname “$(cat /etc/hostname)”[/code]

Sortez du shell Debian (exit) puis arrêtez Debian (non, ce n’est pas la même chose !) avec deb u.[/li][/ul]

Notes rapides :
[ul][li] andromize va bricoler un peu l’installation Debian de base pour la rendre compatible avec Android en parallèle. Ça va aussi installer un démon qui change automatiquement les paramètres réseau de Debian en fonction de ce que vous faites sur Android (androresolvd).[/li]
[li] C’est important de créer un utilisateur (VotreLogin) et le mettre dans les sudoers. Je ne sais pas trop comment le root de Debian intéragit avec celui d’Android au niveau de la gestion des mots de passe, mais perso je ne m’amuserais pas à changer le mot de passe root. Pour obtenir un shell SSH en root il n’y a donc que la solution sudo qui est 100% fiable.[/li]
[li] Le nom d’hôte par défaut sur Android est un code hexa vraiment moche. D’où la commande pour changer le hostname.[/li][/ul]

[size=150]Commandes importantes[/size]

Dans le shell Android, la commande deb permet de contrôler le fonctionnement de la surcouche Debian :

[ul][li] deb h pour obtenir de l’aide.[/li]
[li] deb tout seul pour démarrer Debian et obtenir un shell Debian.[/li]
[li] deb s pour démarrer Debian et le serveur SSH (parce qu’il faut bien avouer que pour configurer Debian plus avant, ça va être plus sympa de le faire depuis votre PC).[/li]
[li] deb S pour arrêter le serveur SSH (mais pas Debian). Notez la différence de casse du S.[/li]
[li] deb u pour arrêter Debian complètement. Si problème (des process qu’il n’arrive pas à éteindre) faites deb k pour tout tuer et arrêter Debian.[/li][/ul]

[size=150]Se connecter en SSH[/size]

Lancez d’abord le serveur SSH (deb s) puis connectez-vous depuis votre PC (vous êtes grands, z’allez bien arriver à trouver l’IP ou le nom d’hôte de votre appareil… Moi je force les deux dans mon serveur DHCP en fonction de l’adresse MAC, ça simplifie la vie).

$ ssh VotreLogin@NomDeLAppareil VotreLogin@NomDeLAppareil's password: VotreLogin@NomDeLAppareil:~$ sudo su [sudo] password for VotreLogin: root@NomDeLAppareil:/home/VotreLogin#
Rien d’extraordinaire…

[size=150]Installer un serveur graphique (LXDE)[/size]

Il est possible d’installer LXDE sur la partie Debian, et d’y accéder en RDP soit directement sur Android lui-même à l’aide d’une app (Remote RDP Lite) ou carrément à partir de votre PC via n’importe quel client RDP (au hasard, krdc sur KDE). C’est un peu plus compliqué que ce que le tuto d’origine indique, mais c’est pas la mort non plus…

[code]# aptitude install --without-recommends andromize-lxde xfonts-base

aptitude clean[/code]

Assurez-vous que le serveur SSH ne fasse pas de X-Forwarding (il y a l’air d’y avoir un conflit avec XRDP). Dans /etc/ssh/sshd_config :

X11Forwarding no

Redémarrez le serveur SSH (service ssh restart), quittez toutes vos sessions SSH vers l’appareil Android avant de vous reconnecter.
Assurez-vous ensuite que les utilisateurs n’aient pas de fichier ~/.Xauthority qui traîne (toujours le même conflit) :

# rm /home/*/.Xauthority /root/.Xauthority

Modifiez ensuite le fichier /etc/xrdp/sesman.ini :

[code][Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=0
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=0
MaxLoginRetry=4

[Sessions]
MaxSessions=10
KillDisconnected=0
IdleTimeLimit=0
DisconnectedTimeLimit=0

[Logging]
LogFile=/var/log/xrdp-sesman.log
LogLevel=INFO
EnableSyslog=0
SyslogLevel=INFO

[Xvnc]
param1=-bs
param2=-ac
param3=-nolisten
param4=tcp[/code]
De même pour /etc/xrdp/xrdp.ini :

[code][globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1

[xrdp1]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1[/code]
Redémarrez XRDP (service xrdp restart) et vous devriez pouvoir vous connecter avec les informations suivantes, à partir de l’app RDP Android ou de votre client RDP préféré sur votre PC :
[ul][li] Nom d’hôte = localhost (ou le nom réseau de l’appareil Android).[/li]
[li] Utilisateur = VotreLogin.[/li]
[li] Couleurs = 24 bits.[/li]
[li] Clavier = Français.[/li]
[li] Résolution = en fonction de votre écran.[/li][/ul]

Notez que de la même manière que pour SSH, il y a des commandes shell Android pour démarrer / arrêter le serveur graphique :
[ul][li] deb x pour démarrer XRDP.[/li]
[li] deb X pour arrêter XRDP (mais pas Debian). Notez la différence de casse du X.[/li][/ul]

Une fois que le serveur graphique fonctionne, vous avez (enfin !) un système complet sur votre tablette/téléphone Android (et pas n’importe quoi, une Debian qui plus est :wink:). Pour les plus acharnés, vous pouvez aussi connecter un clavier/souris externe pour que LXDE soit plus pratique à utiliser.

Vous avez plus qu’à personnaliser tout ça à votre sauce… Perso, la prochaine étape pour moi c’est de voir comment KDE se comporte (ça devrait être pas mal, la tablette étant plus puissante que mon netbook !). :mrgreen:

Mise à jour de la partie Installation du serveur graphique, ça fonctionne chez moi.

Je confirme, KDE tourne (presque) parfaitement une fois pollueurs habituels dégagés (nepomuk / akonadi), du moment que le matériel suit bien sûr. Quelques petits bugs à droite à gauche que je n’ai pas encore résolus mais rien de bloquant, un complément au tuto va arriver [strike]quand j’ai le temps[/strike] bientôt…

Sur le forum c’est bien … sur le wiki c’est mieux :mrgreen:

Ça m’intéresse mais il me faut auparavant acheter une tablette car rester plus de 10 mn sur internet avec un smart, faut être maso.
Question : avec une tablette de chez “pas cher”, on peut envisager ça ?

Faut voir ce qu’elle a dans le ventre, ta “tablette pas cher”. :wink:
Dis toi bien que tu vas faire tourner deux OS en parallèle dessus (même si Debian est fortement allégée, y’a quand même la question de l’environnement graphique) donc il te faut un CPU correct et assez de RAM.
Après ça dépend aussi de la charge de la partie Android, donc c’est difficile à dire.
La mienne j’ai un dual core 1.4 GHz et 2 Go de RAM donc forcément KDE tourne bien dessus (mieux que sur mon netbook au niveau vitesse – y’a encore et toujours des bugs résistants mais c’est une autre histoire).

Après ça dépend aussi ce qui t’intéresse. Pour moi, c’est surtout la ligne de commandes (y’a tous les outils qu’il me manquait “en appoint” d’Android) et là t’as pas besoin d’une bête de course.

Ce que je cherche, c’est échanger mon portable, trop lourd à trimballer, quand je vais dans la famille (2 ou 3 fois/an) pour pouvoir me connecter sans difficultés sur le Net, donc graphique et si possible KDE de rigueur.
Google me pompe grave :078
Je veux un truc qui fonctionne bien avec une Debian, même une stable, point.
J’aimerais qq chose qui ne dépasse pas 230/250 € , env. 10" et qui supporte un branchement wifi facile à configurer avec Wicd, par exemple.

J’ai une tablette Samsung galaxie tab 2, ce tuto peut s’appliquer à ce matériel?

Je reverai d’y faire tourner débian !!!

@M3t4 Franchement je sais pas si ça serait viable. Avec un LXDE (ou juste de la ligne de commandes) je pense pas que ça pose de problèmes mais du KDE (ou Gnome) ça me paraît un peu tendu niveau performances utilisateur final. Enfin le meilleur moyen de le savoir ça serait d’essayer : même si j’ai mis des gros avertissements en rouge qui font peur c’est uniquement pour pas qu’on m’engueule en cas de problème (autrement dit c’est ta responsabilité, je veux pas entendre “j’ai cassé ma tablette c’est de ta faute” même si le risque est extrêmement faible), mais honnêtement y’a peu de chances qu’il arrive une couille. À mon avis le pire risque ça sera que tu vas trouver que ça rame trop et que c’est pas utilisable sur ton matos. Mais bon vu qu’on joue avec des appareils rootés (donc hors garantie) tu comprends bien que j’hésite à te dire “vas-y fonce!” :wink:

Mais bon toutes les Samsung un peu récentes sont construites sur le même modèle de toutes façons, donc ça m’étonnerait beaucoup que tu rencontres un problème autre qu’une éventuelle performance faible (ça c’est dur à dire à l’avance).

Un autre truc à prendre en compte, c’est que ma tablette (Galaxy Note 10.1) a un stylet, ce qui permet de contrôler finement la “souris” dans l’environnement graphique Debian.
J’ai essayé juste avec mes gros doigts, et franchement ça le fait pas, une fois sur deux je clic à côté par manque de précision. Donc oui le stylet est un peu indispensable en graphique, à mon avis, à moins évidemment de changer les DPI d’affichage jusqu’à un point où ça n’a plus l’air d’être un bureau PC.
En ligne de commandes bien entendu ça n’a plus lieu d’être, il suffit d’avoir un bon clavier genre “Hacker’s Keyboard” que j’ai depuis adopté pour tout. :slightly_smiling:

Bref, le résultat de l’histoire pour le moment c’est que le côté graphique est encore sur trois pattes, pas super utilisable, mais au moins j’ai une ligne de commandes Debian complète et ça ça roxxe. :slightly_smiling: Rien que les montages de filesystems réseau (SSHFS pour ma part) ça justifie largement le boulot, maintenant mes applis Android peuvent accéder à mon PC en toute transparence.

En fait la seule chose qui manque vraiment c’est un DE adapté au tactile, mais ça Debian n’y est pour rien. Et je vais certainement pas coller un Unity tout buggé sur ma tablette, faut pas déconner quand même. :mrgreen:

Personne n’a testé Gnome 3 pour un environnement tactile ? À mon avis ça serait le plus adapté :wink:

J’ai réussi à root sans accros.
J’ai installer et utiliser: android terminal emulator et hacker’s keyboard, c’est génial pour le moment.

Me reste la sauvegarde de la rom, pour commencer les testes.
Mais je sais pas quelle application exactement installer.

[quote=“kripteks”]Me reste la sauvegarde de la rom, pour commencer les testes.
Mais je sais pas quelle application exactement installer.[/quote]
Il faut utiliser ClockWorkMod (CWM) ou un équivalent compatible pour ta tablette. Ce n’est pas une application du Store mais un truc à flasher avec Odin. Je te conseille fortement d’aller voir sur un forum spécialisé Android, comme d’habitude pour tout ce qui est flashage la procédure est extrêmement dépendante de ton appareil.

Mon device n’est pas reconnu, faut que je cherches un de compatible.

Sinon, pour le RDP, vous utilisez quel logiciel ?

C’est indiqué ici, avec le lien vers le Store : debian-kit-debian-en-parallele-d-android-sans-chroot-t45761.html#p458853 :wink: