La Fibre

Télécom => Logiciels et systèmes d'exploitation => Android OS mobile (Android, iOS,...) => Discussion démarrée par: vivien le 11 mars 2025 à 09:00:15

Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté 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)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:00:44
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)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:06:58
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)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:09:53
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)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:11:13
Voici les informations systèmes et un lscpu dans son intégralité :
(https://lafibre.info/testdebit/android/2025003_google_pixel_debian_info_systeme.webp)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:15:10
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)

Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:17:24
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)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:29:12
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
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: Hugues le 11 mars 2025 à 09:44:15
Ça semble plus être un conteneur qu'une VM vu que le noyau est identique à l'hôte
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vocograme le 11 mars 2025 à 09:48:48
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à
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: vivien le 11 mars 2025 à 09:49:25
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).
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: Hugues le 11 mars 2025 à 09:54:50
Ah oui en effet, la version diffère légèrement
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: PeGGaaSuSS le 11 mars 2025 à 11:02:09
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/
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: trekker92 le 11 mars 2025 à 11:54:47
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/

:)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: kgersen le 12 mars 2025 à 23:52:58
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).
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: thenico le 13 mars 2025 à 10:30:48
Ç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.
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: trekker92 le 13 mars 2025 à 13:11:12
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 :)
Titre: Android intègre maintenant une machine virtuelle Debian 12
Posté par: kgersen le 13 mars 2025 à 17:47:27
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)