par , 11/06/2020 à 16h58 (847 Affichages)
*
LXD est un hyperviseur permettant de gerer des containers totallement isoles du systeme reel. c'est un projet libre developpe par Canonical qui partage les ressources du systeme reel en mode virtuel en s'appuyant directement sur les fonctions avancees du noyau. concu au depart pour faire tourner des serveurs isole de l'hote, le logiciel a ete detourne de son usage habituel. il existe en effet des tutos sur le net permettant de l'utiliser pour sandboxer efficacement des programmes en mode graphique avec l'activation de la 3D. vous trouverez ici bas un exemple d'installation utilisation de firefox dans un container...
Note : ce tuto etait installe dans un forum. un blog est plus adapte. il a ete transfere ici tel quel avec ajout des mises a jours. j'ai mis les instructions dans une balise parce que certains forums modifie les doubles tirets en un seul, ce qui provoque des erreurs de syntaxe. au fil du temps, certaines informations peuvent ne plus etre valides et necessiter une readaptation...
Voici les instructions :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
sudo groupadd --system lxd
sudo usermod -G lxd -a nom_utilisateur
pour installer lxd, j'ai choisi le package snap :
sudo snap install lxd
pour intitaliser lxd (j'ai selectionne les options par defaut) :
sudo lxd init
ensuite pour creer une instance firefox avec l'audio :
lxc launch ubuntu:x firefox
MAJ : correction, je me suis appercu que cette commande
a installe l'image d'ubuntu 16.04 alors que je voulais la
derniere version, j'ai du refaire le container en tapant :
lxc launch ubuntu:18.04 firefox
lxc exec firefox apt update
lxc exec firefox apt install x11-apps mesa-utils pulseaudio firefox
lxc config set firefox raw.idmap "both $UID $(id -u)"
lxc restart firefox
lxc config device add firefox X0 disk path=/tmp/.X11-unix/X0 source=/tmp/.X11-unix/X0
lxc exec firefox -- sudo --user ubuntu --login
sudo sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf
echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile
exit
lxc config device add firefox PASocket disk path=/tmp/.pulse-native source=/run/user/1000/pulse/native
lxc config device add firefox Xauthority disk path=/home/ubuntu/.Xauthority source=$XAUTHORITY
lxc config device add firefox gpu gpu
lxc config device set firefox gpu uid 1000
lxc config device set firefox gpu gid 1000
lancer firefox :
lxc exec firefox -- sudo --login --user ubuntu DISPLAY=:0 firefox
verifier que la 3d fonctionne :
lxc exec firefox -- sudo --login --user ubuntu DISPLAY=:0 glxgears
pour faire un backup du container firefox (exemple) :
lxc export firefox /home/nom_utilisateur/Backups/firefox_backup.tar.xz |
meme procedure pour installer d'autres programmes isoles. il faut cependant savoir que pour chaque programme, il faudra ajouter des options. par exemple pour firefox, il fallait installer pulseaudio pour avoir le son...
Note : bien qu'en suivant ces etapes une par une il est possible de faire pareil, ces informations sont destines a des personnes averties sachant gerer les lignes de commandes et ayant quelques connaissances au prealable. je n'ai pas mis trop d'explications mais ca reste gerable pour les connaisseurs. vous trouverez plus de detail sur le net. ce tuto est base sur de nombreuses informations glanees sur le net et que j'ai adapte a mes besoins...
Conclusion : le plus etonnant avec LXD, c'est la rapidite des programmes. c'est beaucoup plus reactif qu'une machine virtuelle avec la meme isolation. cela dit le logiciel ne peut gerer que des systemes linux. pour windows, il reste possible d'installer une instance wine et d'y ajouter des programmes windows. meme les jeux sont possible puisque la 3d et le son sont disponibles. ma prochaine tentative, c'est de tester les capacitee de wine. j'ai en effet des programmes windows qui n'ont pas d'equivalents sous linux pour l'instant. l'autre avantage, c'est d'isoler wine dans un container pour ne pas polluer le systeme...
je posterais le fruit de mes futures experiences avec LXD dans ce post pour en garder une trace et en faire profiter d'autres personnes...
MAJ : Dupliquer un container.
je voulais recreer un container avec le navigateur opera mais sans tout refaire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
j'ai donc cloner le container de firefox par la commande :
lxc copy firefox opera
ensuite, j'ai active le container opera :
lxc start opera
et lance firefox a l'interieur du container opera pour acceder
au site d'opera et telecharge le dernier package de ce logiciel...
lxc exec opera -- sudo --login --user ubuntu DISPLAY=:0 firefox
ensuite j'ai lance la commande :
lxc exec opera -- sudo --login --user ubuntu
et a l'interieur du container la commande (pour installer opera) :
sudo dpkg -i Nom_package_Opera.deb
installer les dependances (necessaire) :
sudo apt -f install
j'ai ensuite desinstalle firefox qui n'est plus necessaire ici...
exit pour sortir du container opera...
pour lancer opera et verifie que tout fonctionne :
lxc exec opera -- sudo --login --user ubuntu DISPLAY=:0 opera |
Le principe reste applicable a d'autres programmes. au lieu de tout refaire a chaque fois. cloner est une solution plus rapide. le seul soucis, c'est que chaque container occupe environ 1 go d'espace disque, c'est beaucoup, je vais essayer de trouver un container image tres leger pour regler ce probleme...
Precision : il est tout a fait possible d'installer de nombreux programmes dans un meme container mais vous n'aurez pas d'isolation entre eux puisqu'ils auront acces a toutes les donnees des uns et des autres...
MAJ : aide memoire des commandes.
pour demarrer un container :
lxc start nom_container
pour arreter un container :
lxc stop nom_container
pour effacer un container (attention definitif) :
lxc delete nom_container
pour acceder a un container :
lxc exec nom_container -- sudo --login --user ubuntu
pour acceder a un container (avec display actif pour lancer un programme graphique) :
lxc exec nom_container -- sudo --login --user ubuntu DISPLAY=:0
pour exporter faire un backup d'un container :
lxc export nom_container /home/nom_utilisateur/nom_container_backup.tar.xz
pour importer un container :
d'abords, l'effacer s'il existe par la commande lxc delete nom_container
lxc import /home/nom_utilisateur/nom_container_backup.tar.xz
je voulais utiliser le profile de firefox dans le nouveau container de celui ci, j'ai fait un backup en zip du dossier et je l'ai copie par la commande :
lxc file push firefox_profile.zip firefox/home/ubuntu/
ensuite, j'ai installe dans le container p7zip-full :
sudo apt-get install p7zip-full
voici la commande qui permet d'extraire l'archive firefox_profile.zip :
7z x firefox_profile.zip
le reste est facile...
MAJ : installation wine
En me basant sur le container de firefox que j'ai clone et renomme en wine, j'ai installe wine :
pour la version 64 bit :
sudo apt install wine64
pour la version 32 bit :
sudo apt install wine32
pour afficher la version :
wine --version
pour la derniere version, il faut faire d'autres manipulation, je me suis contente de la version standard...
pour configurer wine (notement les polices d'affichage qui sont trop petites et d'autres options) :
winecfg
apres ca j'ai transfere quelques programmes windows portables dans le container. la plupart fonctionne parfaitement meme des outils de developpements...
j'ai fait ca a la main mais winetricks un script concu par les developpeurs de wine permet d'installer automatiquement de nombreux programmes windows ainsi que les dlls librairies necessaires...
je suis assez etonne de la qualite de wine. j'ai teste la demo de halflife premiere version datant de plusieurs annees que j'ai trouve dans un cd mag. il a fallu configurer correctement l'affichage mais ca fonctionne parfaitement dans une fenetre en qualite opengl 3d. je parie que c'est impossible de lancer ce jeu dans windows 10...
conclusion : tres satisfait de wine. je vais pouvoir continuer a utiliser quelques programmes windows jusqu'a ce que je trouve des alternatives viables sous linux... Le tout dans un container securise avec isolation.