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
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
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 !
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.
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.
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.
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