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 1 novembre 2020

Émulateur et virtualisation

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 j'ai choisi d'installer le binaire à qui j'ai donné les droits d'exécution

chmod 755 VirtualBox-6.1.30-148432-Linux_amd64.run

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

./VirtualBox-6.1.30-148432-Linux_amd64.run

voilà le résultat avec une installation précédente de VirtualBox

Verifying archive integrity... All good.
Uncompressing VirtualBox for Linux installation.............
VirtualBox Version 6.1.30 r148432 (2021-11-22T15:48:58Z) installer
Removing previous installation of VirtualBox 6.1.22 r144080 from /opt/VirtualBox
Installing VirtualBox to /opt/VirtualBox
Python found: python2.7, installing bindings...

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: disabled)
     Active: active (exited) since Fri 2021-12-10 13:47:53 CET; 46s ago
    Process: 144693 ExecStart=/opt/VirtualBox/vboxdrv.sh start (code=exited, status=0/SUCCESS)
        CPU: 246ms

déc. 10 13:47:53 predator.kervao.fr systemd[1]: Starting VirtualBox Linux kernel module...
déc. 10 13:47:53 predator.kervao.fr vboxdrv.sh[144693]: vboxdrv.sh: Starting VirtualBox services.
déc. 10 13:47:53 predator.kervao.fr vboxdrv.sh[144713]: Starting VirtualBox services.
déc. 10 13:47:53 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


[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-84pkqf/stdout --stderr /tmp/VBoxExtPackHelper-84pkqf/stderr --elevated install --base-dir /opt/VirtualBox/ExtensionPacks --cert-dir /opt/VirtualBox/ExtPackCertificates --name 'Oracle VM VirtualBox Extension Pack' --tarball /home/olivier/.config/VirtualBox/Oracle_VM_VirtualBox_Extension_Pack-6.1.22.vbox-extpack --sha-256 6d33d9cc1c5a8f8a2a70e5aaaa778a341322d2ba7eb34f7de420fb5f312b9e87 --replace

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 xvf wine-2.0.1.tar.xz

Cela va créer un répertoire wine-2.0.1.

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

./configure --enable-win64
make

je pars donc sur le principe de n'émuler que du code 64 bits. 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]