Présentation  | Virtualisation avec Virtualbox ( installation , création d'une machine virtuelle windows 7 , partager une machine virtuelle , cloner/dupliquer/sauvegarder une machine virtuelle )  |  Emulateur (Présentation , Installation , Un exemple )  ]

Dernière modification 18 février 2017

Virtualisation avec VirtualBox

Manips diverses

Présentation

Un émulateur et un outil de virtualisation permettent de faire tourner sous linux des programmes windows (et autres), la différence entre les deux est que la virtualisation accède directement  aux caractéristiques de l'ordinateur alors que l'émulation crée un ordinateur virtuel. Ce qui fait que ce dernier est généralement beaucoup plus gourmand.

Dans cette page sont présentés deux outils, le premier est un outil de virtualisation virtualbox et le deuxième wine est un émulateur. Voilà un peu de lecture sur le sujet  http://fr.wikipedia.org/wiki/Virtualisation
   
[Retour haut de la page]

Virtualisation avec virtualbox

Installation

On trouvera l'archive sur le site https://www.virtualbox.org/wiki/Downloads avant d'aller plus loin on installera les packages suivants (sous mageia)

urpmi iasl lib64IDL2-devel lib64vpx-devel libstdc++-static-devel lib64devmapper-devel lib64cap-devel java-1.8.0-openjdk-devel texlive

on installera également makeself qu'on trouvera par là http://makeself.io/ on décompresse l'archive en tapant

tar xvfz makeself-release-2.3.0.tar.gz

cela donne le répertoire makeself-release-2.3.0 dans lequel on tapera

cp makeself.sh /usr/local/bin/makeself

cp makeself-header.sh /usr/local/bin/makeself-header

on décompresse en fin l'archive en tapant

tar xvfj VirtualBox-5.1.14.tar.bz2

Cela donne le répertoire VirtualBox-5.1.14 dans lequel on tape

./configure --disable-hardening --disable-docs

on tape ensuite successivement

source ./env.sh
kmk all

je me retrouve avec un tas d'erreurs du style

/lib/modules/4.9.10-desktop-1.mga6/build/include/linux/compiler.h:305:42: erreur : uninitialized const member in ‘union atomic_read(const atomic_t*)::<anonymous>’

/lib/modules/4.9.10-desktop-1.mga6/build/include/asm-generic/bitops/le.h:14:46: erreur : invalid conversion from ‘const void*’ to ‘const long unsigned int*’ [-fpermissive]

il y a une incompatibilité avec le noyau 4.9

si ça passe de votre côté il faudra ensuite taper

cd ./out/linux.amd64/release/bin/src
make

puis en tant que root

make install

maintenant dans le fichier /etc/ld.so.conf j'ai rajouté la ligne suivante

/usr/local/linux/systeme/VirtualBox-5.1.8/out/linux.amd64/release/bin

et j'ai tapé ldconfig et j'ai créé par ailleurs le lien suivant

ln -s /usr/local/linux/systeme/VirtualBox-5.1.8/out/linux.amd64/release/bin/VirtualBox /usr/local/bin

Pour les autres, j'ai récupérer le binaire générique 64 bits sur le site à qui j'ai donné les droits d'exécution

chmod 755 VirtualBox-5.1.14-112924-Linux_amd64.run

on l'exécute ensuite en tant que root en tapant

./VirtualBox-5.1.14-112924-Linux_amd64.run

voilà le résultat

VirtualBox Version 5.1.14 r112924 (2017-01-16T17:06:12Z) installer
Installing VirtualBox to /opt/VirtualBox

Python found: python, installing bindings...
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /usr/lib/systemd/system/vboxdrv.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /usr/lib/systemd/system/vboxballoonctrl-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /usr/lib/systemd/system/vboxautostart-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /usr/lib/systemd/system/vboxweb-service.service.

VirtualBox has been installed successfully.

You will find useful information about using VirtualBox in the user manual
  /opt/VirtualBox/UserManual.pdf
and in the user FAQ
  http://www.virtualbox.org/wiki/User_FAQ

We hope that you enjoy using VirtualBox.

avec systemd on se rend compte qu'un service a été créé et chargé automatiquement en tapant

systemctl status vboxdrv

voilà le résultat

● vboxdrv.service - VirtualBox Linux kernel module
   Loaded: loaded (/opt/VirtualBox/vboxdrv.sh; enabled; vendor preset: enabled)
   Active: active (exited) since ven. 2017-02-17 18:11:45 CET; 2min 27s ago
  Process: 22573 ExecStart=/opt/VirtualBox/vboxdrv.sh start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/vboxdrv.service

févr. 17 18:11:45 predator.kervao.fr systemd[1]: Starting VirtualBox Linux kernel module...
févr. 17 18:11:45 predator.kervao.fr vboxdrv.sh[22573]: vboxdrv.sh: Starting VirtualBox services.
févr. 17 18:11:45 predator.kervao.fr systemd[1]: Started VirtualBox Linux kernel module.

par contre il faudra absolument rajouter vos utilisateurs dans le groupe vboxusers. Pour le reste tout est OK, vous pouvez lancer VirtualBox

Pour l'installation à partir des sources, il faudra charger le module vboxdrv il suffit de taper en tant que root

modprobe vboxdrv

voilà la trace en tapant journactl -f

nov. 11 10:55:16 predator.kervao.fr kernel: vboxdrv: Found 8 processor cores
nov. 11 10:55:16 predator.kervao.fr kernel: vboxdrv: TSC mode is Invariant, tentative frequency 3591734400 Hz
nov. 11 10:55:16 predator.kervao.fr kernel: vboxdrv: Successfully loaded version 5.1.8 (interface 0x00280000)

pour qu'un utilisateur lambda puisse accéder à virtualbox il faut donner les droits qui vont bien en tapant (uniquement dans le cas de l'installation à partir des sources)

chmod 666 /dev/vboxdrv


[Retour haut de la page]

Création d'une machine virtuelle windows 7

La première fois qu'on tape VirtualBox, voilà ce qu'on obtient


On clique sur Nouvelle pour créer par exemple une machine virtuelle windows 7



Il faut fixer ensuite la taille de la mémoire vive, par défaut elle est à 512Mo, il est recommandé de mettre au moins 4Go, sinon ça risque de ramer à mort


Ensuite on doit choisir la taille du disque dur

Par la suite sur les 2 autres fenêtres qui suivent, j'ai laissé les choix par défaut VDI Image Disk VirtualBox puis Dynamiquement alloué

Ensuite on choisit un emplacement pour fichier de taille dynamique que vous nommerez comme bon vous semble et placerez à un endroit qui va bien, j'ai fixé sa taille à 100Go. Voilà quelques copies d'écran de la configuration, la configuration de la carte mère

la configuration du processeur

la configuration de l'accélération

la configuration de la carte vidéo, j'ai une carte avec 1,5Go, je peux me permettre de mettre le maximum à 256Mo

On récupère maintenant des extensions notamment pour l'USB 2.0 et 3.0 qu'on récupèrera sur la page de download (fichier Oracle_VM_VirtualBox_Extension_Pack-5.1.14-112924.vbox-extpack) on le charge  à partir du menu Fichier->Paramètres->Extensions

il demande alors le mot de passe root et ça devrait marcher, s'il y a une erreur Failed to run, vous faites un copier coller de la commande dans un shell et vous la tapez en tant que root, ça doit ressembler à quelque chose comme cela

/opt/VirtualBox/VBoxExtPackHelperApp --stdout /tmp/VBoxExtPackHelper-6i28o1/stdout --stderr /tmp/VBoxExtPackHelper-6i28o1/stderr --elevated install --base-dir /opt/VirtualBox/ExtensionPacks --cert-dir /opt/VirtualBox/ExtPackCertificates --name 'Oracle VM VirtualBox Extension Pack' --tarball /mana/data/archive/systeme/Oracle_VM_VirtualBox_Extension_Pack-5.1.14-112924.vbox-extpack --sha-256 baddb7cc49224ecc1147f82d77fce2685ac39941ac9b0aac83c270dd6570ea85

pour voir si l'extension est bien installée


Voilà maintenant on peut rajouter l'extension 2.0 dans la configuration de la machine virtuelle

On sélectionne les périphériques USB qui seront visibles, ici j'ai choisi l'imprimante. Sous windows, l'imprimante s'installe ensuite de manière classique, elle devrait même être détectée automatiquement.

Notre machine virtuelle est maintenant prête.

on la lance en cliquant sur Démarrer, dans le même temps il faudra avoir installer le DVD contenant windows 7 et vous faites une install classique

Et là aussi incroyable que ça puisse paraître vous installez windows dans une session linux.

Une fois que windows est lancée, l'USB marche par défaut ainsi que le réseau, mais vous pouvez constater que vous ne pouvez pas changer la résolution qui se limite à 800x600. Il faut rajouter les Guest additions. Dans le bandeau du haut, il faut choisir Périphériques puis tout en bas Insérer l'image CD des Additions invité... une phase de téléchargement puis d'installation commence


Après un ultime reboot de la machine virtuelle, votre windows est prêt !

A noter que dans les paramètres de configuration de la machine, vous pouvez rajouter un disque de partage de votre espace linux



et voilà le résultat



on peut même jouer aux Sims 4 !

[Retour haut de la page]

Partager une machine virtuelle

C'est sympa, mais maintenant que j'ai créé mes utilisateurs sous windows, j'aimerais bien que mes autres utilisateurs linux accèdent à ma machine virtuelle. Rien de plus simple !  On va passer par sudo, l'idée est que tous les utilisateurs du groupe tartempion puissent lancer VirtualBox en tant qu'olivier sans avoir à saisir de mot de passe. Certes cela crée une vulnérabilité, c'est donc à vous de voir suivant la confiance que vous pouvez accorder à vos utilisateurs.

En tant que root on tape visudo et on saisit

%tartempion ALL = (olivier) NOPASSWD:  /bin/VirtualBox

pour lancer VirtualBox si on est dans le groupe tartempion sans être olivier, il faudra taper dans un shell

xhost +
sudo -u olivier /bin/VirtualBox

problème, on n'accède ni au lecteur de CD-ROM et ni au son. Pour le CD-ROM il suffit de rajouter les utilisateurs tartempion au groupe cdrom. Pour le son avec pulseaudio il faudra le lancer en mode system wide, c'est à dire que le daemon est lancé de manière globale et non pas par l'utilisateur à l'ouverture d'une session. Pour cela on va créer les groupes suivants:

groupadd --system pulse
groupadd --system pulse-access


et l'utilisateur système suivant

adduser --system -m -g pulse -d /var/run/pulse pulse

on rajoute l'utilisateur pulse dans le groupe audio dans le fichier /etc/group et nos utilisateurs du groupe tartempion dans le groupe pulse-access sous /etc/group

On édite le fichier /etc/pulse/client.conf, il doit contenir

default-server = /var/run/pulse/native
autospawn = no


j'ai également désinhibé l'exécutable qui lance pulseaudio à chaque login en tapant

chmod -x /usr/bin/start-pulseaudio-x11

maintenant avec systemd j'ai créé le service /usr/lib/systemd/system/pulseaudio.service contenant

[Unit]
Description=PulseAudio system server

[Service]
Type=notify
ExecStart=/usr/bin/pulseaudio --daemonize=no --system --realtime --log-target=journal
ExecStop=/usr/bin/pulsaudio --kill

[Install]
WantedBy=multi-user.target


je l'active en tant

systemctl --system enable pulseaudio.service

voilà le résultat

Created symlink /etc/systemd/system/multi-user.target.wants/pulseaudio.service → /usr/lib/systemd/system/pulseaudio.service.

maintenant il faudrait tuer l'instance de pulseaudio qui est lancée, mais comme est en mode respawn (elle se recrée automatiquement), le plus simple est de rebooter la machine. Dans la liste des process on devrait voir

pulse     1044  0.2  0.1 482720 11656 ?        S<sl 19:02   0:00 /usr/bin/pulseaudio --daemonize=no --system --realtime --log-target=journal

et la commande

systemctl status pulseaudio.service

donne

● pulseaudio.service - PulseAudio system server
   Loaded: loaded (/usr/lib/systemd/system/pulseaudio.service; enabled; vendor preset: enabled)
   Active: active (running) since sam. 2017-02-18 19:02:29 CET; 24min ago
 Main PID: 1044 (pulseaudio)
   CGroup: /system.slice/pulseaudio.service
           └─1044 /usr/bin/pulseaudio --daemonize=no --system --realtime --log-target=journal

févr. 18 19:02:25 predator.kervao.fr pulseaudio[1044]: Running in system mode, forcibly disabling exit idle time.
févr. 18 19:02:25 predator.kervao.fr pulseaudio[1044]: Vous exécutez PA dans un mode système. Sachez que vous ne devriez pas faire cela.
févr. 18 19:02:25 predator.kervao.fr pulseaudio[1044]: Si vous choisissez malgré tout de le faire, vous êtes responsable de tout dysfonctionnement inattendu.
févr. 18 19:02:25 predator.kervao.fr pulseaudio[1044]: Veuillez lire http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/ pour comprendre pourquoi le mode système est généralement une ma
févr. 18 19:02:29 predator.kervao.fr pulseaudio[1044]: Failed to open cookie file '/var/run/pulse/.config/pulse/cookie': Aucun fichier ou dossier de ce type
févr. 18 19:02:29 predator.kervao.fr pulseaudio[1044]: Failed to load authentication key '/var/run/pulse/.config/pulse/cookie': Aucun fichier ou dossier de ce type
févr. 18 19:02:29 predator.kervao.fr pulseaudio[1044]: Failed to open cookie file '/var/run/pulse/.pulse-cookie': Aucun fichier ou dossier de ce type
févr. 18 19:02:29 predator.kervao.fr pulseaudio[1044]: Failed to load authentication key '/var/run/pulse/.pulse-cookie': Aucun fichier ou dossier de ce type
févr. 18 19:02:29 predator.kervao.fr pulseaudio[1044]: Failed to acquire org.pulseaudio.Server: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.31" is not allowed to own the service "org.pulseaudio.Server" due to security p
févr. 18 19:02:29 predator.kervao.fr systemd[1]: Started PulseAudio system server.

noter bien que lancer pulseaudio en mode system wide c'est mal ! Il y a des erreurs mais qui visiblement ne nuisent pas au fonctionnement.

c'est tout bon ! Pour finaliser pour les utilisateurs du groupe tartempion (hors olivier) j'ai créé le script windows7 suivant

#!/bin/bash
xhost +
sudo -u olivier /bin/VirtualBox


que j'ai rendu exécutable

chmod 755 /usr/bin/windows7

on lancera donc VirtualBox par ce biais.

[Retour haut de la page]

Cloner/dupliquer/sauvergarder une machine virtuelle


Maintenant que vous avez partagé votre machine virtuelle, vous pouvez également la cloner/dupliquer/sauvegarder à partir de Fichiers->Paramètres->Exporter un appareil virtuel



Ensuite on pourra l'importer sous n'importe quel compte.


Pour d'autres infos http://doc.ubuntu-fr.org/virtualbox

Emulateur

Présentation

WINE pour WINdows Emulation permet de pouvoir lancer des programmes Windows sous Linux.  Ne vous attendez pas à ce que tous vos programmes Windows tournent sous Linux, c'est à vous de tester.
La condition préalable pour pouvoir utiliser wine est que vous disposiez d'une partition Windows lisible par Linux, attention vous ne pouvez pas lire les partitions Windows compressées.
 
[Retour haut de la page]

Installation

Sur une Mageia vous pouvez vous contenter de taper

urpmi wine

on préférera installer une version plus récente qu'on trouvera sur le site http://www.winehq.org/site/download Dans tous les cas le site officiel de wine est www.winehq.com. J'y ai récupéré les sources de wine, sous la forme d'un tarball qu'on décompresse en tapant :

tar xvfj wine-2.0.tar.bz2

Cela va créer un répertoire wine-2.0. On installera préalablement les bibliothèques en version 32bits suivantes

urpmi libfreetype6-devel libxcursor-devel libxi-devel libxrandr-devel libxinerama-devel libxcomposite libpcap-devel libmesaglu1-devel libgphoto-devel libopencl-devel libv4l-devel libncurses-devel libmpg123-devel libfontconfig-devel libpulseaudio-devel libcups-devel libtiff-devel libalsa-oss-devel libopenal-devel

j'ai dû créer également le lien suivant (à adapter en fonction de la config)

ln -s /usr/lib/libfreetype.so.6.13.0  /usr/lib/libfreetype.so

Dans le répertoire de wine, tapez maintenant en tant que simple utilisateur

./configure

make

Suivant votre config, la compil peut être plus ou moins longue, patience donc.  Puis en tant que root

make install

Maintenant chaque utilisateur devra taper winecfg pour configurer wine, la fenêtre de configuration apparaît


j'ai rajouté ma partition windows avec l'onglet lecteurs qui prend la lettre d: par défaut, pour le reste j'ai tout laissé par défaut et j'ai tapé OK

Après installation les exécutables vont se retrouver sous /usr/local/bin, ça va installer aussi les pages man et des fichiers comme les bibliothèques windows qui se retrouvent sous /usr/local/lib

[Retour haut de la page]

Un exemple

Pour lancer une application windows il suffit de taper

wine nom-de-lexe-windows comme ceci

avec le chemin absolu cela donne (par exemple)

wine d:\\Program\ Files\\ArcSoft\\PhotoBase\\PhBase.exe

si vous obtenez une erreur du style

err:module:import_dll Library MFC42.DLL (which is needed by L"D:\\Program Files\\ArcSoft\\PhotoBase\\PhBase.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"D:\\Program Files\\ArcSoft\\PhotoBase\\PhBase.exe" failed, status c0000135

pas grave vous allez chercher la dll concernée et la placer dans le répertoire de windows fourni par wine comme ceci

cp ./windows/system32/mfc42.dll ~/.wine/drive_c/windows/system32/

Voici un screeshot de Winword. Pour le lancer il suffit de se placer dans son répertoire et de taper :

wine winword.exe


[Retour page d'accueil]