La Fibre
Télécom => Logiciels et systèmes d'exploitation =>
OS mobile (Android, iOS,...) => Discussion démarrée par: vivien le 11 mars 2025 à 09:00:15
-
Android intègre maintenant une machine virtuelle Debian 12
C'est pour le moment réservé aux Pixels 6/7/8/9 avec la mise à jour de fonctionnalité du 5 mars 2025, distribuée en même temps que les correctifs de sécurité.
Cela devrait être disponible largement sur tous les Smartphones Android 16.
Cette mise à jour du 5 mars 2025 inclus de nombreux correctifs de bugs et ajouts de fonctionnalités listés sur la note de version Google (https://support.google.com/pixelphone/thread/328647994/mise-%C3%A0-jour-google-pixel-%E2%80%93-mars-2025?hl=fr), mais il y en a bien d'autres.
C'est par exemple la première fois que j'ai une mise à jour vers une nouvelle version du noyau Linux sur un Smartphone. Avec mon Pixel 6, je passe du 5.10 au 6.1.
(https://lafibre.info/testdebit/android/2025003_google_pixel_mise_a_jour_mars_2025.webp)
-
Pour y accéder à la machine virtuelle Debian, nul besoin d'une application à installer, c'est de base dans le système Android, il suffit de l'activer via le mode développeur.
Pour afficher le menu développeur, il faut accéder à "Paramètres" > "À propos du téléphone" et en appuyer sept fois sur le numéro de build, situé tout en bas.
Qaund vous avez le message "Vous êtes désormais développeur", c'est bon, vous avez un menu supplémentaire dans "Paramètres" > "Système" :
(https://lafibre.info/testdebit/android/2025003_google_pixel_activation_mode_devellopeur.webp)
Dans "Débogage", il faut activer l'option "Environnement de développement Linux"
(https://lafibre.info/testdebit/android/2025003_google_pixel_activation_environnement_linux.webp)
-
Dans la liste des applications, une nouvelle application cachée est visible : Terminal
C'est une des premières versions et si elle est en français, elle a aujourd'hui très peu d'option :
- Redimensionnement du disque (espace occupée par la VM)
- Contrôle du port (qui n'est pas encore fonctionnel)
- Récupération (permet de revenir à la version initiale de l'espace disque de la VM)
C'est tout !
Quand vous la démarrez pour la première fois, il va demander à Télécharger Debian 12 :
(https://lafibre.info/testdebit/android/2025003_google_pixel_installation_debian.webp)
-
Une fois installé, la VM est très pratique : elle se démarre quasi instantanément et ferme tout aussi simplement.
Un lspci montre bien qu'on n'est pas sur le système Android, mais dans une machine virtuelle.
La mise à jour du Debian se fait comme n'importe quel Debian avec sudo apt update pour mettre à jour le catalogue logiciel, suivit d'un sudo apt full-upgrade
(https://lafibre.info/testdebit/android/2025003_google_pixel_debian_lspci.webp)
-
Voici les informations systèmes et un lscpu dans son intégralité :
(https://lafibre.info/testdebit/android/2025003_google_pixel_debian_info_systeme.webp)
-
neofetch n'est pas installé de base, comme pour tout Debian, il faut l'installer avec sudo apt install neofetch
Fastfetch (https://github.com/fastfetch-cli/fastfetch), le successeur de neofetch ne sera disponible dans la logithèque qu'avec Debian 13. En attendant, l'installation sera un peu plus compliquée.
On peut bien sur installer n'importe quel outil en mode texte (le mode graphique n'est pas encore supporté).
Exemple avec ffmpeg pour transformer votre pour compresser des vidéos :
(https://lafibre.info/testdebit/android/2025003_google_pixel_debian_installation_logiciels.webp)
-
Comme toute application Android, le terminal libérer les ressources en cas de non-utilisation.
Il est possible de le faire manuellement via le menu :
(https://lafibre.info/testdebit/android/2025003_google_pixel_debian_fermer_terminal.webp)
-
Ce terminal n'est que la première étape, avant de prendre en charge l'interface utilisateur graphique (avec Android 16 qui arrive dans quelques mois ?)
À terme, on devrait pouvoir exécuter des applications graphiques Linux sur Android.
C'est un vieux rêve, imaginé en 2013 par Canonical :
(https://lafibre.info/testdebit/android/201307_canonical_ubuntu_for_android.webp)
https://lafibre.info/videos/android/201307_canonical_ubuntu_for_android.mp4
-
Ça semble plus être un conteneur qu'une VM vu que le noyau est identique à l'hôte
-
Le téléchargement de 567Mo ne te parait pas un peu lourd pour un conteneur ?
À voir ce qui est téléchargé exactement à ce moment-là
-
Je me demande si ce n'est pas une simple coïncidence : le noyau Linux de mon smartphone est le 6.1, ce qui est aussi le choix de Debian 12 (c'est un noyau LTS).
-
Ah oui en effet, la version diffère légèrement
-
Ce terminal n'est que la première étape, avant de prendre en charge l'interface utilisateur graphique (avec Android 16 qui arrive dans quelques mois ?)
À terme, on devrait pouvoir exécuter des applications graphiques Linux sur Android.
C'est un vieux rêve, imaginé en 2013 par Canonical :
In fine c'est même plus vieux que ça, Motorola (pre-Google) avait tenter la chose avec son Atrix : https://en.wikipedia.org/wiki/Motorola_Atrix_4G
https://www.zdnet.com/home-and-office/networking/breakthrough-device-of-ces-2011-motorola-atrix-phone-pc/
https://arstechnica.com/gadgets/2011/03/motorola-atrix-the-ubuntu-powered-webtop-experience/
C'était déjà basé sur Ubuntu. Apparemment même si ça n'est plus vraiment le même Motorola l'idée avait été ressortie en 2021 :
https://www.frandroid.com/marques/motorola/876217_motorola-ready-for-un-mode-bureau-qui-va-plus-loin-que-le-dex-de-samsung
https://www.developpez.com/actu/313570/Motorola-tente-a-nouveau-le-coup-du-votre-telephone-peut-etre-un-PC-avec-sa-nouvelle-plateforme-Ready-For-qui-permet-de-connecter-un-smartphone-a-un-ecran-un-clavier-et-une-souris-pour-l-utiliser/
-
Le téléchargement de 567Mo ne te parait pas un peu lourd pour un conteneur ?
À voir ce qui est téléchargé exactement à ce moment-là
euh les services google de manière générale sur android, c'est jamais sous les 800Mo.
Google considère désormais que ta poche contient un datacenter ;)
Je me demande si ce n'est pas une simple coïncidence : le noyau Linux de mon smartphone est le 6.1, ce qui est aussi le choix de Debian 12 (c'est un noyau LTS).
6.12.1 ici.
tel très ancien, je triche ;)
Ce terminal n'est que la première étape, avant de prendre en charge l'interface utilisateur graphique (avec Android 16 qui arrive dans quelques mois ?)
À terme, on devrait pouvoir exécuter des applications graphiques Linux sur Android.
C'est un vieux rêve, imaginé en 2013 par Canonical :
(https://lafibre.info/testdebit/android/201307_canonical_ubuntu_for_android.webp)
Réalisé depuis longtemps par Purism sur le Librem, ubuntu permettait de faire de meme, manjaro sur le PP fait pareil je crois..
ne laissons pas à google toutes les avancées "geek" sur un "vrai linux" adapté au smartphone : il y a moult distros alternatives qui fonctionnent très bien aujourd'hui, depuis qu'une petite équipe de hacker s'est mise au défi.
C'est notamment le cas du projet postmarketos (très avancé en à peine sept ans de dev), et de ses cousins : mobian, droidian, etc..
pour moi google est très loin d'innover (sur le geekisme linux, jolla faisait pas mal de trucs (c'est eux qu'on inventé le controle du geste) sur leur sailfishos)
(https://pix.milkywan.fr/UM1cUKhw.jpg)
https://puri.sm/posts/mobile-desktop-convergence/
:)
-
c'est juste la suite de ce qu'on a sur ChromeOS (Chromebox et Chromebook) depuis longtemps.
Google a commencé a fusionner les deux: Android et ChromeOS (fusion annoncé au printemps dernier)
Donc des élements présents dans ChromeOS vont apparaitre dans Android et le support Android dans ChromeOS qui est une VM Android va sans douter évoluer pour etre natif.
Ces VMs Linux ont plusieurs années de maturité déja sur ChromeOS, elles sont basé sur une VM dans laquelle tourne LXC/LXD. L'archi est assez complexe et 'sécurisé': https://www.chromium.org/chromium-os/developer-library/guides/containers/crostini-developer-guide/ mais permet d'en avoir plusieurs si on accede au mode 'dev'.
pour rappel ChromeOS = Chrome natif sur un kernel Linux "renforcé" + VM Android (Arc) + VMs Linux (Crostini).
Je ne serais pas surpris qu'a terme ce soit la meme version d'"Android" pour les smartphones et les Chromebooks. Donc on aura peut-etre un Chrome natif sur Android (donc avec extensions, etc).
-
Ça semble plus être un conteneur qu'une VM vu que le noyau est identique à l'hôte
Non, cela boot le noyau qui est installé et c'est un kernel officiel Debian.
Si tu fais un apt -t bookworm-backports full-upgrade, au reboot, tu aura le noyau backports Debian (6.12.12 en ce moment).
Attention avec apt, le terminal explose souvent au vol.
-
Non, cela boot le noyau qui est installé et c'est un kernel officiel Debian.
Si tu fais un apt -t bookworm-backports full-upgrade, au reboot, tu aura le noyau backports Debian (6.12.12 en ce moment).
Attention avec apt, le terminal explose souvent au vol.
exactement ce que fait waydroid sur un linux classique :)
-
J'ai fait quelque tests avec adb en wifi, scrcpy (https://github.com/Genymobile/scrcpy) ( ca marche aussi avec Vyzor) et un Pixel 6 (sccpy c'est juste pour eviter la galere du clavier sur un smartphone).
Ce n'est pas contrairement a crostini un container LXD dans une VM hote mais bien une VM directe.
En regardant les process qui tourne coté Android (avec adb shell) on voit crosvm https://github.com/google/crosvm mais sans LXD en plus. C'est plus proche d'AVF donc (Android Virtualization Framework).
On peut faire du ssh dans la vm depuis l'exterieur. J'ai utilisé Tailscale qui inclut un ssh intégré et est bien plus simple a configurer:
dans la VM du téléphone: on fait
curl -fsSL https://tailscale.com/install.sh | sh
comme indiqué ici: https://tailscale.com/kb/1031/install-linux
mais a la fin au lieu de faire
sudo tailscale up
on fait
sudo tailscale up -ssh
ca permet ensuite de faire ssh droid@ip_ou_nom depuis n'importe quel machine/vm qui a aussi Tailscale (par défaut le nom de la vm est localhost donc tailscale utilisera localhost-0, ca peut se changer).
L'avantage de Tailscale est qu'on garde la connexion ssh tout le temps ou qu'on soit vu que ca suit les changements réseaux en dessous (passage wifi / 5G, etc).
L'application Terminal du téléphone a du mal parfois et plante ou se reconnecte alors que la VM tourne très bien en tache de fond (visible via ssh). Y'a un souci coté Android a ce niveau donc (vu dans le journalctl c'est le forwarder_guest_launcher qui se plante a priori) pas coté VM.
J'ai pu testé nspeed directement dans la vm du Pixel 6:
wget https://dl.nspeed.app/nspeed-client/preview/nspeed_linux_arm64/nspeed
chmod +x nspeed
puis
droid@localhost:~$ ./nspeed from https://dl.nspeed.app/aw
reading commands from https://dl.nspeed.app/aw
running jobs of 'download mono' (0)...
running jobs of 'upload mono' (1)...
running jobs of 'download multi' (2)...
running jobs of 'upload multi' (3)...
batch download mono:
Id| Read speed| Write speed| Time| Bytes read| Bytes written|command
#0| 1.1 Gbps| 0 bps| 8.00| 1.1 GB| 0 B|get http://appliwave.testdebit.info/10G/10G.iso (IPv4 - 7.53 ms - HTTP/1.1 - )
batch upload mono:
Id| Read speed| Write speed| Time| Bytes read| Bytes written|command
#1| 0 bps| 522.1 Mbps| 8.00| 0 B| 522.2 MB|post http://appliwave.testdebit.info/ul/ 10.7 GB (IPv4 - 1040.671 ms - - )
batch download multi:
Id| Read speed| Write speed| Time| Bytes read| Bytes written|command
#2| 1.3 Gbps| 0 bps| 8.01| 1.3 GB| 0 B|4 x get http://appliwave.testdebit.info/10G/10G.iso (IPv4 - 14.863 ms - HTTP/1.1 - )
batch upload multi:
Id| Read speed| Write speed| Time| Bytes read| Bytes written|command
#3| 0 bps| 587.9 Mbps| 8.00| 0 B| 588.2 MB|4 x post http://appliwave.testdebit.info/ul/ 10.7 GB (IPv4 - 1029.220 ms - - )
=> bon débit niveau réseau de la vm donc (le téléphone arrive a 1,5Gbps/800Mbps, la VM 1.3G/600Mbps)/
on peut meme en mettant le client Tailscale Android faire un lien vpn entre Android et la VM
exemple le moniteur de nspeed qui tourne dans la vm et qui est affiché par le navigateur du téléphone:
(https://i.imgur.com/zLBdgI0.png)
On peut aussi utiliser l'ouverture de port mais ca ne marche qu'en IPv4 (il faut bind que IPv4: 0.0.0.0:port, si on bind "dual" *:port) ca n'ouvre pas) et il faut accepter la demande via la notification coté Android.
Ca permet ensuite d'acceder via localhost:port coté Android (testé avec nspeed api)