Faire tourner Anbox ( run Android on your Linux) sur Debian

Tags: #<Tag:0x00007f63f5f73090>

Salut
J’essai de faire tourner anbox https://github.com/anbox/anbox

Voilà ou j’en suis

  • 1 pré-requis Debian

. Avoir les headers de votre noyau installés ainsi que dkms

root@debian:/# apt list linux-header*amd64
En train de lister... Fait
linux-headers-3.16.0-4-all-amd64/oldstable 3.16.43-2+deb8u2 amd64
linux-headers-3.16.0-4-amd64/oldstable,now 3.16.43-2+deb8u2 amd64 [installé]
linux-headers-4.11.0-1-all-amd64/testing 4.11.6-1 amd64
linux-headers-4.11.0-1-amd64/testing 4.11.6-1 amd64
linux-headers-4.11.0-1-rt-amd64/testing 4.11.6-1 amd64
linux-headers-4.9.0-3-all-amd64/stable 4.9.30-2+deb9u2 amd64
linux-headers-4.9.0-3-amd64/stable,now 4.9.30-2+deb9u2 amd64 [installé]
linux-headers-4.9.0-3-rt-amd64/stable 4.9.30-2+deb9u2 amd64
linux-headers-amd64/testing 4.11+82 amd64
linux-headers-rt-amd64/testing 4.11+82 amd64

apt list dkms*
dkms/testing,testing,now 2.3-3 all [installé, automatique]

. installer snapd

sudo apt install snapd

. Télécharger les paquets

https://launchpadlibrarian.net/324146019/anbox-modules-dkms_7~xenial1_all.deb
https://launchpadlibrarian.net/324146018/anbox-common_7~xenial1_all.deb

Installer ces 2 paquets avec gdebi ou selon votre habitude.

Puis

sudo modprobe binder_linux
sudo modprobe ashmem_linux

. installer anbox proprement dit

sudo snap install --edge --devmode anbox

  • 3 Redemarrer le PC

debian:~$ systemctl reboot

Vérification

debian:~$ snap info anbox

  • 4 démarrage du session manager

debian:~$ systemctl --user start anbox

debian:~$ systemctl --user status anbox

  • 5 Lancemet de l’interface graphique

debian:~$ env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/anbox_anbox.desktop /snap/bin/anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity&

Et là malheureusement il ne se passe rien, pas d’affichage de la fenetre alors que les process sont actifs

debian:~$ ps -edf | grep anbox

843 1 0 13:52 ? 00:00:01 /snap/anbox/42/usr/bin/anbox container-manager --data-path=/var/snap/anbox/common/ --android-image=/snap/anbox/42/android.img --daemon
2610 1269 0 14:39 ? 00:00:01 /snap/anbox/42/usr/bin/anbox session-manager
2703 2140 0 14:43 pts/0 00:00:00 /snap/anbox/42/usr/bin/anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity

  • 6 Problèmes
    des erreurs au boot

juil. 13 15:54:19 debian anbox[1239]: [EE 2017-07-13 13:54:19] [daemon.cpp:58@Run] Failed to connect to socket /run/anbox-container.socket: No such file or directory

juil. 13 15:55:43 debian kernel: anbox[1276]: segfault at 0 ip 00007f49ba90882f sp 00007fffead335b0 error 4 in libSDL2-2.0.so.0.4.0[7f49ba844000+107000]

  • 7 Conclusion
    C’est pas encore demain que je pourrais faire tourner une application Android (.apk) sous Debian

Quand on considère, comme moi, que ça ne déstabilise pas l’installation on peut ajouter le dépot anbox:
Avec l’utilisateur root:

  • Créer un fichier anbox.list dans /etc/apt/sources.list.d

y mettre

deb http://ppa.launchpad.net/morphis/anbox-support/ubuntu xenial main

  • Ajouter la clé
# apt-key adv --keyserver keys.gnupg.net --recv-keys  21C6044A875B67B7
Executing: /tmp/apt-key-gpghome.JA0xRj2ld7/gpg.1.sh --keyserver keys.gnupg.net --recv-keys 21C6044A875B67B7
gpg: clef 21C6044A875B67B7 : clef publique « Launchpad PPA for morphis » importée
gpg:       Quantité totale traitée : 1
gpg:                     importées : 1
  • Mettre à jour
# apt update

# apt full-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Les paquets suivants seront mis à jour :
  anbox-common anbox-modules-dkms
2 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 38,3 ko dans les archives.
Après cette opération, 9 216 o d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] 
Réception de:1 http://ppa.launchpad.net/morphis/anbox-support/ubuntu xenial/main amd64 anbox-common all 8~xenial1 [4 056 B]
Réception de:2 http://ppa.launchpad.net/morphis/anbox-support/ubuntu xenial/main amd64 anbox-modules-dkms all 8~xenial1 [34,2 kB]
38,3 ko réceptionnés en 0s (97,7 ko/s)       
(Lecture de la base de données... 207684 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../anbox-common_8~xenial1_all.deb ...
Dépaquetage de anbox-common (8~xenial1) sur (7~xenial1) ...
Préparation du dépaquetage de .../anbox-modules-dkms_8~xenial1_all.deb ...
Dépaquetage de anbox-modules-dkms (8~xenial1) sur (7~xenial1) ...
Paramétrage de anbox-modules-dkms (8~xenial1) ...
Loading new anbox-modules-ashmem-8~xenial1 DKMS files...
Building for 4.9.0-3-amd64
Building for architecture amd64
Building initial module for 4.9.0-3-amd64
Done.

ashmem_linux:
Running module version sanity check.
 - Original module
   - This kernel never originally had a module by this name
 - Installation
   - Installing to /lib/modules/4.9.0-3-amd64/updates/dkms/

depmod.......

DKMS: install completed.
Loading new anbox-modules-binder-8~xenial1 DKMS files...
Building for 4.9.0-3-amd64
Building for architecture amd64
Building initial module for 4.9.0-3-amd64
Done.

binder_linux:
Running module version sanity check.
 - Original module
   - This kernel never originally had a module by this name
 - Installation
   - Installing to /lib/modules/4.9.0-3-amd64/updates/dkms/

depmod...

DKMS: install completed.
Paramétrage de anbox-common (8~xenial1) ...

On vérifie si Anbox est à jour

sudo snap refresh --edge --devmode anbox

Avec la version anbox 44 il n’y a plus de service systemd, on lance directement

~$ anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity&

ça commence à venir

Pour info

df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,8G       0  1,8G   0% /dev
tmpfs              370M    6,1M  364M   2% /run
/dev/sda1          9,1G    8,0G  670M  93% /
tmpfs              1,9G    8,5M  1,8G   1% /dev/shm
tmpfs              5,0M    4,0K  5,0M   1% /run/lock
tmpfs              1,9G       0  1,9G   0% /sys/fs/cgroup
tmpfs              1,9G    8,0K  1,9G   1% /tmp
/dev/loop0          80M     80M     0 100% /snap/core/2312
/dev/loop1         342M    342M     0 100% /snap/anbox/44
/dev/sda6          263G    184G   66G  74% /home
tmpfs              370M     28K  370M   1% /run/user/1001

snap monte des images virtuelles, 1 pour le core de snap et celle de l’application qu’on veut installer.

Attention à la place dans /

Malheureusement ce projet s’appuit sur snapd qui est dépendant de la version du noyau pour fonctionner correctement avec apparmor.
Voici la réponse du developpeur concernant l’erreur “snap-confine has elevated permissions and is not confined but should be”

@grandtoubab This explains everything, thank you!

The crux of the issue is disconnect between snap-confine and snapd. Snapd doesn’t generate the apparmor profile for snap-confine but snap-confine is compiled with apparmor enabled and expects to be confined since apparmor is also enabled on boot.

Unfortunately this situation is unsupported until 4.14 is released. Right now there is no easy way.

c’est pas demain la veille du jour qu’ on aura le noyau 4.14 sur Debian :unamused:

Sur mon HP Pavilion dv7, android-x86-7.1-r4.iso fonctionne aussi très bien.
Mise à jour de mon pense-bête