Virtualisation sous Linux

Transcription

Virtualisation sous Linux
Linux Linux Virtualisation
Pythagore F.D.
FH/050301/1/100303
Sommaire
VIRTUALISATION...............................................................................................3
Présentation.......................................................................................................4
UNIX..................................................................................................................9
VIRTUALISATION SOUS LINUX...................................................................10
Types de virtualisation...................................................................................11
Exemples d'utilisation....................................................................................14
BOCHS...................................................................................................................17
Présentation.....................................................................................................18
QEMU.....................................................................................................................19
Présentation.....................................................................................................20
Installation.......................................................................................................21
Lancement........................................................................................................22
Administration................................................................................................26
Images..............................................................................................................28
Snapshot...........................................................................................................31
Réseau..............................................................................................................33
XEN : INTRODUCTION.....................................................................................36
Présentation.....................................................................................................37
XEN : FONCTIONNEMENT..............................................................................38
Installation.......................................................................................................39
Ajout de systèmes invités..............................................................................40
Configuration des systèmes invités..............................................................42
UML........................................................................................................................48
Présentation.....................................................................................................49
UML: UTILISATION...........................................................................................51
Utilisation........................................................................................................52
Multi­UML.......................................................................................................55
Outils................................................................................................................57
Debug...............................................................................................................60
Lancement de plusieurs noyaux...................................................................66
Sauvegarde d'un système de fichiers...........................................................70
UML: MISE EN OEUVRE...................................................................................72
Présentation.....................................................................................................73
Installation.......................................................................................................87
VMWARE..............................................................................................................88
Présentation.....................................................................................................89
Installation.......................................................................................................90
Interfaces d'administration............................................................................91
VSERVER..............................................................................................................98
Présentation.....................................................................................................99
VSERVER: MISE EN OEUVRE.......................................................................101
Installation.....................................................................................................102
Construction d'un serveur...........................................................................109
Lancement......................................................................................................110
Réseau............................................................................................................112
Utilisation......................................................................................................116
Sécurité...........................................................................................................119
WINE....................................................................................................................123
Présentation...................................................................................................124
Installation.....................................................................................................128
Configuration................................................................................................130
Matériels, partages et bases.........................................................................139
Pré­requis d'utilisation.................................................................................142
Programmes...................................................................................................145
Ressources et support...................................................................................149
I
Virtualisation
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 3
Présentation
Un système d'exploitation a pour objectif d'exploiter les ressources d'un ordinateur. Il dispose d'un ensemble de programmes permettant de gérer ses ressources.
Un problème majeur est que cet ensemble de programme est étroitement lié à la machine physique. Il est par exemple, difficile de disposer de plusieurs comptes d'administrateur, de dupliquer des périphériques, d'exécuter des applications non prévues sur ce système d'exploitation, d'exécuter une autre instance du système d'exploitation pour faire des tests, ...
L'objectif de la virtualisation est de simuler plusieurs instances d'une machine physique. On appellera machine virtuelle, une de ces instances.
Exemples:
• VM
• VMware
• UML
• Xen
• bochs
• VirtualBox
• LDOMS
• zones solaris
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 4
Virtualisation
VM
"VIRTUAL MACHINE"
Le système VM simule autant d'ordinateurs différents qu'il existe de personnes connectées. Les possibilités de chacun de ces ordinateurs diffèrent en fonction de privilèges donnés lors de la création de cet "ordinateur virtuel".
La composante du système qui effectue cette simulation est appelée CP, c'est le Control Program.
L'ordinateur simulé est composé d'une CPU (organe de calcul) identique à la CPU réelle, de mémoire, d'un disque en accès lecture/écriture, de 2 disques en lecture seule contenant des fichiers utilitaires divers (compilateurs, menus...) et de périphériques:
• Une console qui s'associe au terminal où vous vous connectez.
• Une imprimante permettant l'impression de listings.
• Un lecteur virtuel de cartes permettant de recevoir résultats et fichiers.
• Un perforateur virtuel permettant d'envoyer des demandes de jobs et des fichiers sur le réseau.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 5
VM
Une machine virtuelle n'a pas d'accès direct aux organes réels du système, c'est à dire (par exemple) qu'elle ne peut pas imprimer directement sur l'imprimante réelle, c'est l'opérateur qui va demander au système de vider deux fois par jour le contenu des imprimantes virtuelles sur l'imprimante réelle. Le contenu des imprimantes en attente est stocké temporairement sur disque: c'est une opération de SPOOLING.
Une machine virtuelle ne peut pas communiquer avec les autres machines sans leur accord, ni accéder aux données des autres utilisateurs. Elle peut toutefois envoyer des fichiers et des messages mais la machine cible peut ne pas les recevoir.
Sous VM, se connecter, c'est "simplement" associer l'ordinateur correspondant à votre numéro de machine (on dira la machine virtuelle) à la console où vous vous trouvez.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 6
CMS
Comme le système simule à l'utilisateur un ordinateur à part entière, il faut encore charger dans celui­ci un système d'exploitation qui permet de gérer simplement l'ordinateur simulé.
Un de ces systèmes d'exploitation est CMS (conversationnal monitoring system), c'est lui que vous utilisez pour éditer, compiler, ou soumettre, lire et écrire des fichiers sur votre disque.
CMS, gère l'ordinateur simulé par CP. C'est CMS qui affiche fenêtres et menus, qui lit votre terminal. En fait, il le fait sous l'étroite surveillance de CP.
CMS
Utilisateur
Utilisateur
Utilisateur
CMS
CMS
CMS
Machine
Virtuelle 1
Machine
Virtuelle 2
Machine
Virtuelle 3
CP: Control Program
Machine physique
Présentation
(c) Pythagore F.D. 2010
Système CMS: Interfacage et
gestion de la machine virtuelle
Système CP: Simulation des
machines virtuelles et gestion
de la machine physique
Pythagore F.D.
Page 7
hyperviseur: VM
Dans l'exemple décrit précedemment, on n'utilise pas la fonctionnalité "Hyperviseur" de VM.
En fait, CP, le programme de contrôle, simulant une machine virtuelle en tout point identique à une machine physique, peut être utilisé comme Hyperviseur de systèmes.
Ainsi, sur une même machine physique, on peut faire fonctionner des machines virtuelles sous CMS mais aussi des machines virtuelles pilotant des systèmes d'exploitation tels que UNIX, MVS, DOS/VSE... si ces systèmes sont disponibles pour la machine physique considérée.
Exemple
VM
Utilisateurs utilisant CMS
Utilisateurs utilisant UNIX Utilisateurs utilisant MVS
Utilisateur
Utilisateur
Utilisateur Utilisateur
Utilisateur Utilisateur
CMS
CMS
UNIX
MVS
Machine
Virtuelle 1
Machine
Virtuelle 2
Machine
Virtuelle 3
Machine
Virtuelle 4
CP: Control Program
Machine physique
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 8
UNIX
Pour UNIX, il n'y a pas de simulation de plusieurs ordinateurs comme VM, mais en fait la possibilité d'exécuter plusieurs programmes simultanément au sein d'une même machine globale.
Il n'y a pas de concept de "périphériques", un terminal, une bande, ce n'est qu'un fichier qu'on lit ou que l'on écrit. L'accès aux différentes ressources (fichiers, mémoire, processus..) est limité aux utilisateurs autorisés. Chaque utilisateur dispose d'un nom qui lui donne un numéro d'utilisateur et de groupe. Chaque ressource sous UNIX dispose de droit d'accès que l'on compare aux droits associés au numéro d'utilisateur, ce qui détermine le droit d'écrire ou de lire un fichier, un terminal, une bande.
De la même façon que sur VM, il existe un compte privilégié où l'on dispose du libre accès à toutes les ressources du système.
Utilisat. 1
Utilisat. 2
Utilisat. 3
Inte rfacage avec la machine
physique via inte rface UNIX
UNIX
Machine Physique
Sur Unix, il existe des solutions pour mettre en place la virtualisation. Ces solutions sont dépendantes de l'infrastructure matérielle.
UNIX
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 9
II
Virtualisation sous Linux
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 10
Types de virtualisation
Il existe cinq familles de techniques:
• Conteneurs: pour faire fonctionner plusieurs copies d'une même application en les isolant.
Les performances sont bonnes, mais l'isolation n'est pas complète.
• Noyaux secondaires en espace utilisateur. Leurs mauvaises performances sont améliorées par l'utilisation de techniques plus sophistiquées.
• Machine virtuelle (VM ou Virtual Machine): le système mime le fonctionnement de la machine physique en espace utilisateur pour donner aux systèmes secondaires l'illusion de fonctionner sur une machine normale. Les performances sont assez mauvaises.
• Hyperviseur: noyau spécialisé et optimisé qui permet de faire fonctionner d'autres noyaux généralement adaptés. Il n'y a pas de transparence complète comme dans le cas de la machine virtuelle: il s'agit de paravirtualisation. Les performances sont bonnes et deviennent excellentes si l'on combine cette technique avec la virtualisation matérielle.
• Virtualisation matérielle (HVM ou Hardware Virtual Machine): prévoit des instructions spécifiques au niveau du processeur, notamment pour virtualiser la mémoire. Le complément logiciel à réaliser est de ce fait nettement plus simple, et les performances d'ensemble sont très bonnes.
La difficulté majeure est que les systèmes additionnels, exécutés en plus du système d'exploitation principal, ne peuvent fonctionner qu'en mode utilisateur sur le processeur (pour des raisons de sécurité).
Types de virtualisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 11
Principaux outils
Le domaine de la virtualisation est très actif: de nouveaux outils et produits apparaissent régulièrement, d'autres sont réutilisés, fusionnés,...
• UML (User Mode Linux): exécution d'un noyau Linux comme un programme utilisateur.
• Xen: hyperviseur avec prise en compte de la virtualisation matérielle dans ses dernières versions.
• VMWare: suite de produits commerciaux (sauf la version serveur basique), princpalement basés sur une machine virtuelle, sauf ESX server qui est un hyperviseur.
• Qemu: machine virtuelle libre (sauf pour l'extension d'accélération), utilisant plusieurs techniques (traduction dynamique d'instructions, extension de virtualisation) d'amélioration de performances.
• VirtualBox: machine virtuelle existant en deux versions, libre et commerciale.
• Vserver: mécanismes de conteneurs très utilisés par les hébergeurs.
• OpenVZ: autre outil de gestion de conteneurs.
• KVM: module très récent du noyau Linux permettant l'utilisation de la virtualisation matérielle afin de faire fonctionner Qemu et d'en améliorer les performances. Les résultats sont très prometteurs mais l'outil est encore en cours de stabilisation.
Types de virtualisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 12
Les principaux outils (suite)
• lguest: hyperviseur simple, lui aussi très récent, utilisé sous forme de module noyau et permettant l'exécution de plusieurs copies identiques du même noyau. Le résultat obtenu est similaire à UML même si le type de virtualisation est différent.
• Bochs: machine virtuelle émulant un processeur X86 et quelques périphériques. "Ancêtre" de qemu, ses performances sont assez mauvaises.
• Wine: émulateur de bibliothèques Microsoft Windows permettant l'exécution de certains programmes destinés à Windows sur une machine Linux. Des variantes commerciales spécialisées existent et donnent en général de meilleurs résultats que la version libre.
Types de virtualisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 13
Exemples d'utilisation
Faire de l'hébergement virtuel
Diviser une machine puissante en de nombreux serveurs dédiés.
Simplifier l'administration de la machine
Chaque service peut s'exécuter dans une machine virtuelle, ce qui simplifie les accès "root", les arrêts/relances, les portages sur une autre machine physique.
Réaliser une zone sécurisée
Dans le système tournant sous le système "invité", il est possible de lancer des processus potentiellement risqués. En cas d'attaque et de piratage de la machine, l'intrus sera bloqué, il n'aura pas accès au système hôte. Bien sûr, toute faille de sécurité dans la couche de virtualisation est potentiellement catastrophique...
Même si un pirate parvient à obtenir les droits d'accès "root" dans le système invité, il n'aura que les droits d'un utilisateurs "simple" sur la machine hôte.
Exécuter des applications prévues pour un système spécifique
En installant ce système spécifique en tant qu'invité d'un hôte nécessaire à d'autres applications.
Exemples d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 14
Exemples d'utilisation pour tests
Tests de procedures de sauvegarde, restauration
Des tests potentiellement dangereux pour la machine peuvent être réalisés au sein du système invité sans compromettre la machine hôte.
Réseaux virtuels
Des tests réseaux peuvent être effectués en simulant un grand nombre de machines.
Tester de nouveaux noyaux, de nouvelles distributions
Simplifie les manipulations et l'administration.
Exemples d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 15
Exemples d'utilisation en développement
Travailler sur le noyau ou des pilotes (debug, développement)
Modifications plus aisées sur le noyau. Arrêt/relance du noyau simplifiés pour tester les changements.
Le fonctionnement est plus sécurisé: pas d'influence sur le noyau réel.
Debug de processus
Si un programme ne fonctionne pas correctement à cause d'un appel système et que vous ne trouvez pas la cause vous pourrez alors mettre un breakpoint sur l'appel système pour voir exactement ce qu'il se passe.
Création d'un "honeypot"
Il s'agit d'une machine piège, volontairement non sécurisée, destinée à attirer les intrus pour analyser leur comportement et améliorer la sécurité des systèmes réels. Un "honeynet" étend ce principe à un réseau complet de machine pièges, très lourd à mettre en place sans mécanisme de virtualisation.
Exemples d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 16
III
Bochs
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 17
Présentation
Bochs est un émulateur logiciel (écrit en C++) de plate­forme Intel x86 (processeur et périphériques essentiels). Il permet l'installation et l'utilisation de systèmes d'exploitation compatibles x86 à l'intérieur de cet émulateur.
➢Il est comparable à Qemu dans son principe (d'ailleurs Qemu se base sur certains modules de Bochs), mais Qemu permet également d'émuler d'autres plates­formes matérielles, et permet d'améliorer les performances d'exécution (utilisation de la traduction dynamique d'instructions ou d'un module de virtualisation dédiée), notamment quand la machine physique réelle est elle aussi de type x86 (dans ce cas, les instructions à émuler n'ont pas à être traduites pour la plate­forme qui les exécute, donc il s'agit de virtualisation et non plus d'émulation).
L'émulation purement logicielle réalisée par Bochs le rend très portable (on peut ainsi exécuter un système d'exploitation purement x86 sur une machine très différente) mais aussi très peu performant (même utilisé sur une plate­forme x86 puisqu'il ne fait aucune virtualisation), donc pas forcément adapté aux utilisations nécessitant une bonne réactivité.
Au départ outil propriétaire, il a été racheté par Mandriva qui le diffuse sous licence libre LGPL.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 18
IV
Qemu
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 19
Présentation
Qemu est un émulateur de machine virtuelle, utilisant plusieurs techniques d'amélioration de performances (traduction dynamique d'instructions, extension de virtualisation). Qemu est sous licence GPL (sauf pour l'extension d'accélération).
Qemu peut fonctionner en deux modes:
ou
• exécution d'un code compilé pour un autre processeur:
x86, PowerPC, ARM, MIPS, Sparc32/64, ColdFire(68000)
• émulation d'une machine physique:
PC (x86 ou x86_64)
ISA PC (PC sans bus PCI)
PREP (PowerPC)
G3 BW PowerMac (PowerPC)
Mac99 PowerMac (PowerPC)
Sun4m (32­bit Sparc)
Sun4u (64­bit Sparc)
Malta board (32­bit MIPS)
ARM Integrator/CP (ARM926E ou 1026E)
ARM Versatile baseboard (ARM926E)
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 20
Installation
Nous utiliserons la version de qemu précompilée pour Linux sur un processeur i386.
L'installation est réalisée par simple décompactage du fichier archive:
tar xzf qemu-0.9.0-i386.tar.gz
Cette archive est prévue pour être décompactée à partir de la racine du système de fichiers.
Les répertoires utilisés sont:
• usr/local/bin: contient les exécutables
• usr/local/share/qemu: contient les images des bios
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 21
Lancement
Il faut indiquer à qemu le nom d'un fichier image contenant un système d'exploitation utilisable ainsi qu'un répertoire contenant les images des bios.
Exemple:
qemu -L images_bios -no-reboot images_qemu/linux-0.2.img
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 22
Lancement
Architectures supportées
La liste est obtenue avec l'option ­M ?
$ qemu -M ?
Supported machines are:
pc
Standard PC (default)
isapc
ISA-only PC
Ici un pentium 2 à 2Ghz
Simulation de plusieurs processeurs
L'option smp demande à qemu d'émuler plusieurs processeurs (255 au maximum)
qemu -L bios -smp 8 images_qemu/linux-0.2.img
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Numéro du processeur utilisé
Page 23
Optimisation
Module accélérateur
Pour accélerer qemu, il existe un module à ajouter dans le noyau: kqemu.
Un autre accélérateur est qvm86(free/open source) http://savannah.nongnu.org/projects/qvm86/
Installation à partir des sources
Télécharger le fichier source kqemu.
Le décompacter, puis compiler de manière "standard":
./configure
make
make install
Installation à partir de rpm
rpm -i dkms-2.0.16-1.el4.rf.noarch.rpm
rpm -i dkms-kqemu-1.3.0-0.1.pre11.nodist.rf.noarch.rpm
compilation du module: dkms install -m kqemu -v 1.3.0-0.1.pre11.nodist.rf
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 24
Installation de kqemu
Il faut ensuite ajouter le module et configurer /dev/kqemu.
Manuellement
ou
modprobe kqemu
mknod /dev/kqemu c 250 0
chmod 666 /dev/kqemu
modprobe kqemu major=250
Avec udev
Si on utilise udev, le périphérique /dev/kqemu est créé automatiquement, mais il faut changer les droits: echo 'KERNEL=="kqemu", NAME="%k", MODE="0666"' > /etc/udev/rules.d/60-kqemu.rules
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 25
Administration
Mémoire
La mémoire réservée par défaut par qemu est de 128Mo. Pour réserver plus de place, il faut lancer qemu avec l'option ­m
qemu -m 256 -hda monimage.img -L bios
La mémoire sera réservée dans un segment partagé, accessible sous Linux au travers du pseudo­
périphérique /dev/shm. Pour agrandir ce segment, il faut utiliser l'option size lors du montage du périphérique.
umount /dev/shm
mount -t tmpfs -o size=800m none /dev/shm
qemu -m 768 -hda monimage.img -L bios
Administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 26
Administration
La séquence ctrl­alt a une signification particulière pendant l'émulation:
• ctrl­alt­2: passe en mode console
• ctrl­alt: capture la souris et le clavier
Mode console
En mode console, les commandes suivantes sont disponibles (avec complétion automatique):
• quit: quitte l'émulateur
• stop: stoppe l'émulation
• cont:
reprend l'émulation
• system_reset: relance brutalement la machine
• eject/change: permet d'éjecter ou remplacer un périphérique amovible
• info: donne des informations sur l'état du système:
info pci
info network
En mode console, les touches CTRL­PGUP et CTRL­PGDN permettent de faire défiler l'écran
Administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 27
Images
Une image qemu est un fichier qui représente un périphérique de type disque.
Contenu d'une image
L'utilisation principale d'une image est d'y installer un système d'exploitation.
Autres cas d'utilisation:
Images existantes
La version 0.9 est livrée avec des images préconfigurées:
• freedos.img
• linux­0.2.img
• minix204
• small.ffs
• sparc­test­0.2
qemu -no-kqemu -L qemu images_qemu/small.ffs
Images
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 28
Création
Image vierge
qemu-img create -f qcow2 ub704 1G
Le fichier monimage.img est du type "Copy on Write", c'est­à­dire qu'il ne consommera de la place que lors des écritures:
$ file ub704
ub704: QEMU Copy-On-Write disk image version 2,
size 0 + 1073741824
Le format qcow2 permet d'utiliser la fonction "snapshot".
Installation d'un système
qemu -hda ub704 -L bios -boot d \ -cdrom
ubuntu.iso
L'option ­boot d indique qu'il faut démarrer sur l'image iso
Images
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 29
Création d'une image
Une fois le système installé vous pouvez relancer le système sur le disque principal.
qemu ub704 -L qemu
Images
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 30
Snapshot
Un snapshot est une photographie d'un état d'exécution d'une machine virtuelle.
Les snapshots peuvent être créés, chargés et détruits.
Prise d'une photographie
Affichage
Snapshot
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 31
Snapshot
Chargement
On peut aussi lancer qemu directement à partir d'une photographie donnée avec l'option ­loadvm
qemu -m 384 -hda ub704 -L qemu -loadvm avant_bug
La reprise à partir d'une photographie ne peut pas tenir compte des périphériques amovibles.
Suppression d'une photographie
Snapshot
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 32
Réseau
Pour qu'une instance de qemu puisse accéder au réseau, il faut spécifier l'option ­net sur la ligne de commande.
Trois modes sont disponibles:
• nic: crée une interface réseau dans l'instance et la connecte sur un VLAN de la machine hôte
• tap: méthode standard. Crée une interface réseau dans l'instance et la connecte au travers d'un tunnel ethernet. L'instance qemu est vue comme une machine du réseau local.
• user: simulation d'une pile IP en mode utilisateur. La machine qemu est comme derrière un coupe­
feux. Elle voit le réseau de la machine hôte mais la machine hôte ne peut pas accéder à qemu.
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 33
Mode "user"
qemu -L bios linux-0.2.img -net nic -net user
Il faut activer la translation d'adresses à partir de l'instance qemu
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A INPUT -i ! eth0 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 34
Mode tap
Vérifiez que vlan­utils est installé
# vconfig add eth0 6
# ifconfig eth0.6 10.6.0.1/16
# ifconfig eth0.6
eth0.6
Link encap:Ethernet HWaddr 00:15:F2:00:3D:FB
inet adr:10.6.0.1 Bcast:10.6.255.255 Masque:255.255.0.0
adr inet6: fe80::215:f2ff:fe00:3dfb/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:492 (492.0 b)
Puis,
qemu -L bios linux-0.2.img -net nic -net tap,vlan=6
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 35
V
Xen : Introduction
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 36
Présentation
Xen est un logiciel hyperviseur (noyau spécifique très optimisé), permettant l'exécution de plusieurs systèmes d'exploitation en parallèle sur une même machine physique. Les versions récentes (Xen 3) peuvent exploiter les fonctionnalités de virtualisation matérielle des processeurs eux aussi récents (Intel VT­X et AMD Pacifica), permettant d'obtenir de meilleures performances et d'installer des systèmes standards (dont les systèmes Windows de Microsoft), non modifiés pour une utilisation avec Xen.
Avec un processeur plus ancien, on ne peut faire fonctionner que Linux, qui a été modifié pour être compatible Xen, ou FreeBSD (la compatibilité est complète seulement pour Xen 2, l'équipe FreeBSD manquant de ressources pour rendre le système compatible Xen 3).
XenSource, l'entreprise qui supervise le développement, propose une version Open Source (que nous détaillons ici), ainsi que des versions commerciales plus complètes (comportant notamment une console d'administration similaire à celle de VMWare) et agrémentées d'une offre de support.
La version Open Source n'est pas toujours facile à utiliser, car la documentation est incomplète et pas forcément entièrement mise à jour, et le logiciel est toujours en phase de développement rapide. Mais elle est gratuite et ne comporte pas de bridage sur le nombre d'éléments utilisables au sein de certaines fonctionnalités.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 37
VI
Xen : Fonctionnement
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 38
Installation
Une fois Xen téléchargé (depuis http://www.xensource.com/download/index_3.0.4.html, la version 3.0.4 étant la plus récente actuellement) et installé (sous forme de RPMs sur un système Redhat), il faut modifier la configuration de Grub pour que, lors du démarrage, l'hyperviseur Xen soit activé.
Ce dernier charge ensuite le noyau Linux (spécialement adapté pour jouer le rôle d'intermédiaire entre le matériel et les systèmes , et donc en général fourni sous forme binaire avec Xen) qui jouera le rôle de système maître, accueillant tous les autres (systèmes invités).
La configuration va ressembler à ceci :
title Xen 3.0 / XenLinux 2.6
kernel /boot/xen-3.0.gz dom0_mem=262144
module /boot/vmlinuz-2.6-xen root=/dev/hda2 ro console=tty0
module /boot/initrd-2.6-xen.img
Xen0 (ou dom0) représente le noyau maître, tandis que les autres noyaux sont appelé xenU ou domU, et porteront un numéro. Xen désigne par domaine un système d'exploitation, maître ou invité.
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 39
Ajout de systèmes invités
Une fois grub configuré, on peut choisir la nouvelle entrée de menu au démarrage. On remarque des messages provenant de Xen qui démarre (préfixés par « (XEN) »), puis les messages habituels du noyau Linux, démarré et supervisé par Xen.
Les systèmes invités sont décrits dans des fichiers textuels, dont deux exemples sont fournis :
/etc/xen/xmexample1 et /etc/xen/xmexample2
Deux autres exemples, /etc/xen/xmxmexample.hvm et /etc/xen/xmexample.vti sont spécifiques au processeurs fournissant des fonctionnalités de virtualisation matérielle.
Ajout de systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 40
Ajout de systèmes invités (suite)
A partir d'un exemple, on crée un nouveau fichier de description correspondant à nos besoins (mamachine par exemple), et on crée le système invité correspondant, après avoir mis en place un système de fichier racine fonctionnel pour l'invité (par exemple en réplicant le système hôte existant et en prenant en compte les répertoires particuliers comme /dev, /proc et /sys) :
xm create -c mamachine vmid=1
­c permet d'activer la console une fois le système invité démarré, et vmid permet d'affecter un identifiant au système invité.
Un script /etc/init.d/xendomains permet de démarrer les systèmes dont le fichier de configuration est présent ou lié dans /etc/xen/auto.
➢Attention, les systèmes invités doivent utiliser chacun leur propre partition et système de fichiers racines, et non celles du système hôte. Le partage de données n'est pas possible, d'où la nécessité de réaliser une réplication (pas de possibilité d'installer un système hôte depuis un CDROM amorçable ; les versions commerciales de Xen proposent des fonctions supplémentaires sur ce point, mais pas d'émulation complète du lecteur CD­ROM ­­­ comme dans VMWare). Sur ce point, Xen est comparable à UML.
➢Les outils http://xen­tools.org/software/xen­tools/ (principalement orientés distribution Debian) facilitent la création de systèmes de fichiers racine.
Ajout de systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 41
Configuration des systèmes invités
Les fichiers de description des systèmes invités sont rédigés en langage Python. On peut y distinguer plusieurs sections importantes : • le nom du fichier représentant le noyau du système invité (et éventuellement le disque mémoire associé), via la variable kernel. Attention, excepté en cas d'utilisation de la virtualisation matérielle, il faut utiliser un noyau spécialement adapté à Xen. En fonction des versions de Xen, on peut utiliser soit le noyau fourni pour le domaine hôte (un seul noyau en tout fourni avec Xen, nom comportant le suffixe ­xen), soit le noyau fourni pour les domaines invités (deux noyaux sont dans ce cas fournis, l'un pour le système hôte, avec suffixe ­dom0, l'autre pour les systèmes invités, avec suffixe ­domU). On peut également obtenir les patches Xen (dans le paquet source officiel) et compiler son propre noyau, mais il s'agit d'une opération plus sujette à erreurs ;
• le nom du domaine (variable name)
• la quantité de mémoire à réserver pour ce système (variable memory)
• la description des paramètres d'interfaces réseau virtuelles (variable vif)
• la configuration des disques (partitions physiques utilisables par le système invité ainsi que leur numéro logique vu par ce dernier, partition racine utilisée pour démarrer le système), via les variables disk et root.
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 42
Configuration des systèmes invités
(suite)
Par défaut, les interfaces réseau virtuelles (Ethenet) des systèmes invités sont de type ponté, avec une adresse physique affectée de façon aléatoire par Xen.
Les principaux réglages des interfaces virtuelles sont effectués par des scripts qui se trouvent dans le répertoire /etc/xen/scripts/ : network­bridge, network­nat, network­route, vif­bridge, vif­nat et vif­
route. Les scripts network configurent le réseau côté dom0 tandis que les scripts vif (virtual interface) réalisent le paramétrage côté domU.
Trois modes de fonctionnement sont proposés (très similaires à ceux disponibles dans les produits VMWare) : pontage (scripts bridge), translation d'adresse (scripts nat) et routage direct (scripts route). Le pontage est le mode par défaut, pour utiliser l'un des deux autres modes, il faut utilser le mot clé script dans la définition des interfaces virtuelles au sein du fichier de définition du système invité. Le script vif correspondant sera appelé à la création de l'interface virtuelle.
Pour modifier le mode côté dom0, il faut modifier le fichier de configuration /etc/xen/xend­config.sxp (rédigé dans un langage spécifique à Xen, SXP, proche du Lisp). Un exemple :
(network-script network-nat)
(vif-script
vif-nat)
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 43
Configuration des systèmes invités
(suite)
Une autre fonctionnalité réseau est la définition de réseaux virtuels (notion de vnet). Le chapitre de la documentation qui la détaille n'est pas présent dans toutes les versions.
Les vnats émulent des réseaux locaux Ethernet privés auxquels les domaines Xen peuvent se connecter, et ce éventuellement depuis des machines physiques différentes. Le trafic de ces réseaux est encapsulé dans des paquets IP qui transitent sur le réseau physique (eux­même encapsulés dans des paquets Ethernet non virtuels).
La commande de création est : xm vnet­create <fichier>, où fichier décrit le réseau virtuel en format SXP (donc pas toujours aisé à manipuler).
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 44
Gestion des systèmes invités
Le service xend, démarré par le script /etc/init.d/xend, permet la gestion des systèmes invités.
La commande principale d'administration est xm (la page de manuel donne des détails utiles qui complètent le résumé obtenu par la sous­commande help).
[root@Poste410 ~]# xm help
Usage: xm <subcommand> [args]
Control, list, and manipulate Xen guest instances
xm common subcommands:
console <DomId>
create [-c] <ConfigFile>
[Name=Value]..
destroy <DomId>
help
list [--long] [DomId, ...]
mem-set <DomId> <Mem>
migrate <DomId> <Host>
pause <DomId>
reboot <DomId> [-w][-a]
restore <File>
save <DomId> <File>
shutdown <DomId> [-w][-a][-R|-H]
top
unpause <DomId>
vcpu-set <DomId> <VCPUs>
Attach to domain DomId's console.
Create a domain based on Config File
Terminate a domain immediately
Display this message
List information about domains
Adjust the current memory usage for a domain
Migrate a domain to another machine
Pause execution of a domain
Reboot a domain
Create a domain from a saved state file
Save domain state (and config) to file
Shutdown a domain
Monitor system and domains in real-time
Unpause a paused domain
Set the number of VCPUs for a domain
<DomName> can be substituted for <DomId> in xm subcommands.
For a complete list of subcommands run 'xm help --long'
For more help on xm see the xm(1) man page
For more help on xm create, see the xmdomain.cfg(5) man page
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 45
Gestion des systèmes invités (suite)
Pour se connecter à la console d'un système invité, on utiliser xm console suivi de l'identifiant de ce domaine.Pour s'en déconnecter, on envoie un caractère d'échappement avec Ctrl+].
xm shutdown et xm reboot simulent un redémarrage et un arrêt matériels de système invité. En cas de plantage grave, xm destroy détruit complètement un système invité sans en informer le système d'exploitation correspondant.
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 46
Gestion des systèmes invités (suite)
La commande permettant d'afficher la liste des systèmes est xm list :
[root@Poste410 ~]# xm list
Name
AutreMachine
Domain-0
MaMachine
ID Mem(MiB) VCPUs State Time(s)
10
64
1 -b---62.5
0
256
1 r----86.6
9
64
1 -----65.6
La liste des états peut contenir les codes suivants : r pour running, b pour blocked (domaine en attente d'entrée­sortie ou mis en sommeil), p pour paused (état issu de la commande xm pause), c pour crashed (plantage grave) ou d pour dying (en cours de disparition).
Configuration des systèmes invités
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 47
VII
UML
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 48
Présentation
Objectif:
Normalement le noyau Linux dialogue directement avec le matériel (carte vidéo, disque dur, etc), et chaque programme qui s'exécute demande au noyau d'effectuer les opérations matérielles grâce à des appels système, comme ceci :
+-----------+-----------+----+
| Process 1 | Process 2 | ...|
+-----------+-----------+----+
|
Linux Kernel
|
+----------------------------+
|
Hardware
|
+----------------------------+
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 49
Présentation
Le noyau UML ne communique pas avec le materiel mais au «vrai » noyau, comme le ferait n'importe quel autre programme. Les programmes exécutés à l'intérieur de l'UML fonctionneront comme si ils étaient lancés depuis un noyau « normal » :
+----------------+
| Process 2 | ...|
+-----------+----------------+
| Process 1 | User-Mode Linux|
+----------------------------+
|
Linux Kernel
|
+----------------------------+
|
Hardware
|
+----------------------------+
Présentation
(c) Pythagore F.D. 2010
Noyau en mode utilisateur
Noyau hôte
Pythagore F.D.
Page 50
VIII
UML: utilisation
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 51
Utilisation
Fonctions de base
Lancement d'une instance de Linux UML
ou
linux ubd0=Debian_root_fs ubd1=swap_fs
uml_lance
Arrêt
Une fois dans l'UML, pour arrêter le système il suffit de faire un shutdown comme sur un système « classique ».
Attention, un arrêt utilisant un kill sur le processus linux ou utilisant la commande " halt" de la console de supervision revient à couper brutalement le courant d'une machine Unix.
Utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 52
Compte non root
Il est recommandé de lancer un UML avec un compte non privilégié
bash-2.05b$ whoami
seb
bash-2.05b$ linux ubd0=root_fs_slack8.1 ubd1=swap_fs
Checking for the skas3 patch in the host...not found
Checking for /proc/mm...not found
Checking PROT_EXEC mmap in /tmp...OK
tracing thread pid = 17072
Linux version 2.6.10 (root@zia) (gcc version 3.3.5 (Gentoo Linux 3.3.5-r1, ssp-3
.3.2-3, pie-8.7.7.1)) #7 Tue Mar 15 16:39:37 CET 2005
Built 1 zonelists
Kernel command line: ubd0=root_fs_slack8.1 ubd1=swap_fs root=98:0
PID hash table entries: 256 (order: 8, 4096 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 29200k available
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Checking for host processor cmov support...Yes
Checking for host processor xmm support...No
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...missing
...
Utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 53
Consoles de connexion
Utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 54
Multi-UML
Lancement de plusieurs distributions sur la même machine
Multi-UML
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 55
Utilisation
Visualisation des différentes instances sur la machine hôte
#ps -ef
(...)
root
root
root
root
root
root
(...)
Multi-UML
(c) Pythagore F.D. 2010
24974
24976
24978
24980
24984
24986
1
1
1
1
1
1
0
0
0
0
0
2
13:05
13:05
13:05
13:05
13:05
13:05
pts/11
pts/5
pts/5
pts/5
pts/5
pts/5
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
linux
linux
linux
linux
linux
linux
Pythagore F.D.
[/bin/login]
[/bin/login]
[-bash]
[-bash]
[-bash]
[top]
Page 56
Outils
• uml_mconsole
• uml_moo
• uml_mkcow
• uml_net
• uml_switch
Ces outils sont fournis dans uml_utilities_20040406.tar
Installation:
tar xf uml_utilities_20040406.tar
cd tools
make && make install
Utilisation
Lancement d'un UML avec un paramètre nommant l'instance "umid=ici"
./linux ubd0=root_fs_slack8.1 umid=ici con=linux con0=fd:0,fd:1
[root@Poste306 console]# uml_mconsole ici
(ici)
Outils
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 57
Utilisation de uml_mconsole
(ici) help
OK Commands:
version - Get kernel version
help - Print this message
halt - Halt UML
reboot - Reboot UML
config <dev>=<config> - Add a new device to UML;
same syntax as command line
config <dev> - Query the configuration of a device
remove <dev> - Remove a device from UML
sysrq <letter> - Performs the SysRq action controlled by the letter
cad - invoke the Ctl-Alt-Del handler
stop - pause the UML; it will do nothing until it receives a 'go'
go - continue the UML after a 'stop'
log <string> - make UML enter <string> into the kernel log
proc <file> - returns the contents of the UML's /proc/<file>
Additional local mconsole commands:
quit - Quit mconsole
switch <socket-name> - Switch control to the given machine
log -f <filename> - use contents of <filename> as UML log messages
mconsole-version - version of this mconsole program
(ici) version
OK Linux vs 2.6.8.1-1um #1 Fri Mar 18 15:34:31 CET 2005 i686
Outils
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 58
SysRq
Sur la console:
(ici) sysrq 5
OK
(ici) sysrq m
OK
Donne sur la machine UML
SysRq : Changing Loglevel
Loglevel set to 5
SysRq : Show Memory
Mem-info:
DMA per-cpu:
cpu 0 hot: low 4, high 12, batch 2
cpu 0 cold: low 0, high 4, batch 2
Normal per-cpu: empty
HighMem per-cpu: empty
Free pages:
10512kB (0kB HighMem)
Active:1223 inactive:2040 dirty:9 writeback:0 unstable:0 free:2628 slab:1001
...
HighMem: empty
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap:
0kB
8192 pages of RAM
0 pages of HIGHMEM
1138 reserved pages
1503 pages shared
0 pages swap cached
Outils
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 59
Debug
Grâce à UML, il est possible de déboguer le noyau comme n'importe quel autre processus. Il suffit de passer l'option debug en paramètre pour lancer UML dans GDB.
linux debug ubd0=root_fs ubd1=swap_fs
-> execution du noyau UML dans GDB
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 60
Configuration du réseau
Sur l'hôte
Ajout d'un tunnel Ethernet (TAP)
modprobe tun
Activation du routage
echo 1 > /proc/sys/net/ipv4/ip_forward
Sur l'instance
linux ubd0=root_fs ubd1=swap_fs eth0=tuntap,,,10.23.80.1 (IP de l'hote)
Configuration du tunnel
Debian_UML:~# ifconfig eth0 10.23.80.2 netmask 255.255.0.0 broadcast 10.23.255.255
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 61
Utilisation du réseau
Affichage de la configuration
Debian_UML:~# ifconfig
eth0
Link encap:Ethernet HWaddr FE:FD:0A:15:33:8C
inet addr:10.23.80.2 Bcast:10.23.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:5
Ajout d'une route par défaut
Debian_UML:~# route add default gw 10.23.0.1
Modifier aussi /etc/resolv.conf pour disposer de la résolution de noms
Debian_UML:~# ping google.com -c 2
PING google.com (216.239.39.99): 56 data bytes
64 bytes from 216.239.39.99: icmp_seq=0 ttl=241 time=109.4 ms
64 bytes from 216.239.39.99: icmp_seq=1 ttl=241 time=109.2 ms
--- google.com ping statistics --2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 109.2/109.3/109.4 ms
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 62
Utilisation X11
Il est possible de lancer des applications X depuis le systeme UML. Pour cela, il faudra exporter le « display » vers une autre machine afin d'ouvrir l'application sur celle­ci.
Afin de ne pas ouvrir une nouvelle fenêtre par application, on pourra utiliser Xnest.
Exemple: Lancement de xterm dans l'UML mais l'affichage se fera sur l'hôte
Sur l'hôte
xhost + IP_serveur_uml
Sur l'UML
export DISPLAY IP_hote:0.0
xterm
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 63
Son
L'utilisation du son est également possible au sein de l'UML (à condition de cocher l'option dans la configuration du noyau UML).
cat ma_musique > /dev/dsp
cela va envoyer la sortie de « ma_musique » au périphérique audio...
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 64
Réactions en cas de crash
Exemple: consommation par un UML de toute la mémoire
Utilisation de l'argument « mem » pour limiter l'utilisation de la mémoire
linux debug ubd0=root_fs ubd1=swap_fsmem=100M
En cas de plantage du kernel UML, le reste du système ainsi que les autres UML fonctionnent encore.
Debug
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 65
Lancement de plusieurs noyaux
Le lancement de plusieurs noyaux avec la même ligne de commande est verrouillée car elle entrainerait l'exécution de plusieurs noyaux sur le même système de fichiers et donc une corruption des données.
Une solution serait de copier les systèmes de fichiers autant de fois que l'on veut d'instances. Cette solution est très couteuse en espace disque mais aussi en consommation de ressources CPU
Utilisation de COW (Copy On Write).
COW permet de copier uniquement les données qui sont modifiées par une instance.
Le système de fichiers de base ne fonctionne alors qu'en lecture seule et chaque instance écrit dans un système de fichier indépendant.
Lancement
linux ubd0=inst1_cow,root_fs_slack8.1
linux ubd0=inst2_cow,root_fs_slack8.1
linux ubd0=inst3_cow,root_fs_slack8.1
imid=i1 con0=fd:0,fd:1
imid=i2 con0=fd:0,fd:1
imid=i3 con0=fd:0,fd:1
Cela va créer trois fichiers inst1_cow, inst2_cow et inst3_cow, utilisés par les instances i1, i2 et i3.
Lancement de plusieurs noyaux
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 66
Visualisation de la place disque
consommée
ls -l
-rw-r--r--rw-r--r--rw-r--r--rwxr-xr-x
-rw-r--r--
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
210825216
210825216
210825216
2111392
210763776
mar
mar
mar
mar
mar
26
26
26
26
26
21:48
21:53
21:55
19:55
21:39
inst1_cow
inst2_cow
inst3_cow
linux
root_fs_slack8.1
Attention, les fichiers sont "troués" (sparsed files). Pour avoir l'espace disque réellement occupé, il faut utiliser l'option ­s de la commande 'ls'
ls -ls
504
484
524
2068
206032
-rw-r--r--rw-r--r--rw-r--r--rwxr-xr-x
-rw-r--r--
1
1
1
1
1
root
root
root
root
root
root
root
root
root
root
210825216
210825216
210825216
2111392
210763776
mar
mar
mar
mar
mar
26
26
26
26
26
21:48
21:53
21:55
19:55
21:39
inst1_cow
inst2_cow
inst3_cow
linux
root_fs_slack8.1
Dans cet exemple l'espace disque consommé est d'environ 210M.
Lancement de plusieurs noyaux
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 67
Réseau en multi-instances
Chaque instance UML doit disposer de sa propre adresse IP.
Les instances communiqueront alors (avec le système de base) au travers de la machine hôte qui fera office de "routeur".
Il est possible de déclarer une interface multicast qui simplifiera les transferts réseaux. Avec le multicast, les instances UML pourront être sur des hôtes différents. Le multicast crée un segment Ethernet virtuel entre les instances UML.
Sur la ligne de commande de chaque instance, il faut indiquer:
ethn=mcast
La syntaxe complète est:
ethn=mcast,adresse MAC,adresse multicast,port multicast,ttl
Valeurs par défaut
mcast: obligatoire
adresse MAC: calculée
adresse multicast: 239.192.168.1
port: 1102
ttl: 1
Attention à la sécurité: les paquets multicast sont reçus par toutes les machines UML.
Lancement de plusieurs noyaux
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 68
Réseau en multi-instances (suite)
Des outils complémentaires peuvent être utilisés pour créer et gérer des réseaux virtuels de taille importante :
VNUML, http://www.dit.upm.es/vnumlwiki/index.php/Main_Page
VDE, http://vde.sourceforge.net/ Lancement de plusieurs noyaux
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 69
Sauvegarde d'un système de fichiers
#!/bin/sh
i="$1"
rep_sauve=sauve_i${i}
uml_mconsole i${i} stop
uml_mconsole i${i} sysrq s
cp -fra --sparse=always inst${i} $rep_sauve
uml_mconsole i${i} go
nice -n +19 bzip2 $rep_sauve
Sauvegarde d'un système de fichiers
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 70
Sécurisation et performances
SKAS
Normalement, chaque processus dans l'UML génère un processus sur l'hôte et un thread spécial s'occupe des appels systèmes sur les processus UML.
Cela était imposé par le manque de support UML dans le noyau Linux. Ce mode de fonctionnement pose des problèmes car le noyau UML est présent dans l'espace mémoire de chacun des ses processus et est accessible en écriture par défaut. Il y a ici un problème de sécurité car des processus pourraient quitter l'UML pour se retrouver sur le système hôte. Grâce au mode SKAS (Separate Kernel Address Space) ce problème a été résolu. De plus, ce mode accélère l'UML.
L'UML fonctionne maintenant dans un espace mémoire différent des ses processus. Cela corrige les problèmes de sécurité potentiels.
Sauvegarde d'un système de fichiers
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 71
IX
UML: mise en oeuvre
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 72
Présentation
Pour installer une instance UML, il faut disposer d'un noyau Linux et d'un système de fichier installé et configuré.
En outre, pour des raisons de performances et de sécurité, il est préférable de modifier le noyau de la machine hôte avec le patch skas (non inclus dans le noyau officiel, même récent).
L'installation se fait en plusieurs temps:
Phase 1
•
•
•
•
•
•
•
Présentation
(c) Pythagore F.D. 2010
Téléchargement des outils nécessaires
Décompactage des sources du noyau cible
Application du patch UML (si nécessaire)
Modification de la configuration du noyau et compilation du noyau
Création d'un système de fichier cible
Compilation des modules et installation dans les système de fichiers cible
Lancement du noyau UML
Pythagore F.D.
Page 73
Présentation
Phase 2
• Décompactage des utilitaires UML
• Compilation et installation des utilitaires
• Relance du noyau UML
Phase 3
• Application du patch SKAS sur le noyau hôte
• Relance du noyau UML
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 74
Téléchargement
Noyau:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.2.tar.bz2
Utilitaires
http://www.user-mode-linux.org/~blaisorblade/uml-utilities/uml_utilities_20060323.tar.bz2
Pour le patch skas3, choisir le patch adapté dans le répertoire :
http://www.user-mode-linux.org/~blaisorblade/patches/skas3-2.6/
Des correctifs spécifiques à la partie non­SKAS d'UML peuvent être nécessaires dans certains cas (malgré l'inclusion officielle régulière) ; on peut en trouver la liste dans le répertoire :
http://www.user-mode-linux.org/~blaisorblade/patches/guest/
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 75
Compilation d'un noyau SKAS sur la
machine
Cette étape est facultative mais renforce la sécurité: chaque instance UML s'exécutera dans un espace mémoire séparé.
Après décompression d'un noyau vierge, appliquez le patch SKAS
cat ../host-skas3-2.6.xxxxx.patch |patch -p1
cp linux-2.6.xx/arch/i386/defconfig .config
Activez /proc/mm dans le menu "Processor type and features" (normalement déjà activée par défaut)
Activez le chargement dynamique des modules
Compilez le noyau
Ce noyau prendra la place du noyau principal sur la machine.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 76
Configuration du noyau UML
make xconfig ARCH=um
Activez le chargement dynamique des modules
make menuconfig ARCH=um
Linux Kernel v2.6.8.1 Configuration
─────────────────────────────────────────────────────────────────────────────────────
┌────────────────────────────── UML-specific options ───────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. Highlighted
│
│ letters are hotkeys. Pressing <Y> includes, <N> excludes, <M> modularizes
│
│ features. Press <Esc><Esc> to exit, <?> for Help. Legend: [*] built-in [ ]
│
│ excluded <M> module < > module capable
│
│ ┌─────────────^(-)──────────────────────────────────────────────────────────────┐ │
│ │
[*] Separate Kernel Address Space support (NEW)
│ │
│ │
[*] Networking support
│ │
│ │
[*] Kernel support for ELF binaries
│ │
│ │
<M> Kernel support for MISC binaries
│ │
│ │
<*> Support for host-based filesystems
│ │
│ │
<*> Host filesystem
│ │
│ │
< > Usable host filesystem (NEW)
│ │
│ │
< > HoneyPot ProcFS (NEW)
│ │
│ │
[*] Management console
│ │
│ │
[ ]
Magic SysRq key (NEW)
│ │
│ │
[ ] 2G/2G host address space split (NEW)
│ │
│ └─────────────┴(+)──────────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────────────────────────┤
│
<Select>
< Exit >
< Help >
│
└───────────────────────────────────────────────────────────────────────────────────┘
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 77
Compilation
Compiler le noyau
make linux ARCH=um
Striper l'exécutable obtenu
strip linux
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 78
Création d'un FS
L'objectif est d'obtenir un fichier montable en loop et contenant un système de fichier de type racine (rootfs)
Téléchargement rapide, mais a peu de chances de convenir au besoin (version du noyau, type d'un FS préfabriqué de distribution, version)
Présentation
(c) Pythagore F.D. 2010
manuel
Fastidieux mais précis.
mkrootfs
Ensemble de scripts facilitant la création d'un rootfs.
http://www.stearns.org/mkrootfs/
UMLbuilder
Produit pouvant fonctionner avec une interface graphique
http://umlbuilder.sourceforge.net/
gBootRoot
Interface graphique GTK.
http://gbootroot.sourceforge.net/
rootstrap
Produit des systèmes racines Debian.
http://http.us.debian.org/debian/pool/main/r/rootstrap/
Pythagore F.D.
Page 79
Manuel
Création d'un système de fichier vide:
Création
dd if=/dev/zero of=root_fs bs=1M count=1 seek=5000
(seek=5000 pour créer un fichier vide (sparsed file))
Formatage:
mkfs.reiserfs root_fs
Création d'un espace de pagination
dd if=/dev/zero of=swap_fs bs=1M count=1 seek=500
mkswap swap_fs
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 80
Création d'un FS
Remplissage du système de fichier
mkdir /mnt/uml_fs
mount -o loop root_fs /mnt/uml_fs
Avec une Debian Woody:
mount -o loop debian-woody.rootfs debian_lo
cp -fra debian_lo/* mnt/uml_fs
ou avec une Gentoo
cd /mnt/uml_fs
tar -xvjpf stage3.tar.bz2
(systeme de base)
Configuration minimale
vi /mnt/uml_fs/etc/fstab
#Changement de la partition root et swap en :
/dev/ubd0 /
reiserfs noatime 0 0
/dev/ubd1 none
swap
sw
0 0
umount /mnt/uml_fs
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 81
Modules
Installation des modules dans le root_fs
make modules_install INSTALL_MOD_PATH=/mnt/uml_fs (chemin du root_fs)
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 82
UMLbuilder
Vous pouvez simplifier l'étape fastidieuse de la création du fs en utilisant des outils comme umlbuilder.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 83
Création d'un FS
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 84
Rootstrap
Rootstrap est un outil pour créer un FS complet. Il ne permet actuellement que de créer des systèmes de fichiers Debian.
Il est composé d'un ensemble de scripts permettant de créer l'image du FS, installer un système de base, configurer un FS.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 85
Rootstrap
Extrait du fichier /etc/rootstrap/rootstrap.conf [global]
fstype=ext3
initialsize=1024
#taille initiale du rootfs en Mo
freespace=0
modules=network mkfs mount debian uml umount
PATH=/bin:/sbin:/usr/bin:/usr/sbin
[network]
#interface=eth0
#transport=tuntap
#host=192.168.10.1
#uml=192.168.10.2
#gateway=192.168.10.1
#domain=example.com
#nameserver=192.168.10.1
[debian]
dist=woody
mirror=http://http.us.debian.org/debian
exclude=pcmcia-cs setserial
#install=myfavoritepackage someotherpackage
[base-config]
root_password=rootstrap
[uml]
install_modules=yes
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 86
Installation
Vous avez maintenant un systeme prêt à démarrer (vous pouvez installer d'autres applications ou le configurer selon vos besoins durant les étapes précédentes).
cp linux /usr/local/bin (ou autre endroit dans le PATH)
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 87
X
VMWare
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 88
Présentation
La société Vmware propose plusieurs outils distincts, notamment Vmware workstation et Vmware server (ce dernier étant gratuit afin de servir d'appel vers des produits plus élevés en gamme), proposant une virtualisation sour forme de machine virtuelle. Une interface de gestion sophistiquée et complète les caractérise. Les principales différences sont que le premier propose un clonage de machines virtuelles, et que le second peut être administré à distance. Vmware player (gratuit) complète cette gamme et permet simplement d'exécuter une machine virtuelle existante.
Par ailleurs, des produits plus orientés haut de gamme proposent une virtualisation par hyperviseur (ESX server), plus performante, et des solutions beaucoup plus complexes à destination des hébergeurs ou possesseurs de parcs informatiques très importants.
Dans ce cours, nous étudions Vmware server, qui est assez simple à mettre en oeuvre et disponible gratuitement.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 89
Installation
Les différents paquets nécessaires peuvent être obtenus via :
http://www.vmware.com/fr/download/server/
Ils se composent de :
Vmware­server­1.0.1­29996.i386.rpm
Vmware­mui­1.0.1­29996.tar.gz
Vmware­server­console­1.0.1­29996.i386.rpm (celui­ci est téléchargé depuis l'interface Web après la première connexion).
Une fois le paquet principal (Vmware­server) installé, on le configure en appelant le script /usr/bin/vmware­config.pl en ligne de commande. Un numéro de série, obtenu lors du téléchargement, est nécessaire.
On installe par ailleurs l'interface web de gestion (exécution du script vmware­install.pl), ainsi que la console d'administration, qui est une application graphique (le dernier paquet cité ci­dessus est à récupérer à partir de l'interface web).
Les scripts /usr/bin/vmware­config­mui.pl et /usr/bin/vmware­config­server­console.pl permettent la configuration de ces deux éléments.
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 90
Interfaces d'administration
L'interface Web est accessible par défaut sur le port 8222.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 91
Contrôle de la machine virtuelle
Elle permet de surveiller et contrôler (arrêt, redémarage) les machines virtuelles présentes au sein de VMWare Server.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 92
Lancement de la console
d'administration
La console d'administration est lancée par la commande vmware­server­console. Permettant un contrôle plus complet et direct que l'interface web, c'est par son intermédiaire que de nouvelles machines virtuelles peuvent être définies et paramétrées. La réalisation d'instantanés pour redéploiment ultérieur est également proposée.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 93
Résumé
L'affichage résumé d'une machine virtuelle synthétise les paramètres importants et l'état courant.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 94
Mémoire
Les réglages de quantité de mémoire allouée à chaque machine virtuelle, importants en termes d'optimisation, sont également acessibles directement et modifiable quand la machine virtuelle est arrêtée.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 95
Configuration réseau
La configuration réseau (pontée, à translation d'adresse ou directe) des machines virtuelles est accessible depuis la console.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 96
Interfaces d'administration
Ces deux interfaces permettent au final la gestion complète des fonctionnalités de Vmware Server sous forme graphique. Les lecteurs de disques de la machine sont accessibles directement, ou en les émulant à partir du contenu d'un fichier image ISO (image de CD­ROM), permettant l'installation des systèmes invités sur le système hôte, comme on le ferait sur une machine physique qui ne comporte pas encore de système d'exploitation.
Sont également installé des scripts de démarrage : /etc/init.d/vmware et /etc/init.d/httpd.vmware
Le processus princpal représentant la fonctionnalité serveur est vmware­serverd ; des processus complémentaires de gestion des fonctionnalités réseau sont également actifs.
Interfaces d'administration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 97
XI
VServer
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 98
Présentation
VServer est un mécanisme permettant de gérer des conteneurs. Le système de base est découpé en zones étanches dans lesquelles s'exécute une instance de l'OS.
Ce système est à mi­chemin entre une "vraie" machine virtuelle et un environnement en chroot simple. Moins consommateur en ressources qu'un UML ou VMWare, il ne permet pas de virtualiser les noyaux.
Il fonctionne sur les plates­formes Linux.
Base globale du système Linux
Vserver
Serveur1.pfd
Vserver
Serveur2.pfd
La base globale
Le système d'exploitation de base sert de socle à la création de vservers.
C'est cette base globale qui contrôle l'installation, la gestion et la destruction de tous les vservers.
La zone 'vserver'
C'est une instance virtuelle du système, isolée et sécurisée. Elle utilise le noyau et les ressources mémoires de la base globale mais dispose de ses processus systèmes, d'une adresse IP, de ses fichiers de configuration et d'autres ressources propres. C'est une forme d'environnement "chrooté", disposant d'outils d'isolation de processus et de ressources.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 99
Présentation
Le projet vserver est né en 2001. La version 1.0.0 est sortie le 1er novembre 2003 sur un noyau 2.4 et la version 2.0.0 est sortie le 7 août 2005 sur un noyau 2.6.
La version stable actuelle est la v2.2.
L'installation consiste à modifier le noyau de base avec le patch vserver, puis à créer et configurer des systèmes invités.
Un système invité n'est pas un système linux complet, mais plutôt un ensemble de ressources disponibles dans un environnement vserver.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 100
XII
Vserver: mise en oeuvre
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 101
Installation
Télécharger un noyau de base
mkdir /opt/kernel && cd /opt/kernel/
wget 'http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2'
tar xjf linux-2.6.22.6.tar.bz2
Compiler et rebooter le nouveau noyau pour vérifier que tout est fonctionnel (pilotes sata entre autres).
Installation du patch
Récupération, patch et compilation du nouveau noyau :
wget 'http://ftp.linux-vserver.org/pub/kernel/vs2.2/patch-2.6.22.6-vs2.2.0.3.diff'
cp -la linux-2.6.22.6 linux-2.6.22.6-vs2.2.0.3
cd linux-2.6.22.6-vs2.2.0.3/
cat ../patch-2.6.22.6-vs2.2.0.3.diff | patch -p1
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 102
Configuration et compilation
make xconfig
make modules
make && make modules_install
make install
Modification du chargeur pour y ajouter le boot sur le nouveau noyau :
vi /etc/lilo.conf
lilo
reboot
uname -a
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 103
Installation des utilitaires
Les utilitaires vservers permettent de disposer de commandes complémentaires pour gérer les systèmes: arrêts/relances, copie, visualisation, ...
Vérifiez que les paquets ext2fs2-devel et vconfig sont installés.
Récupération, compilation et installation des utilitaires d'exploitation :
wget 'http://ftp.linux-vserver.org/pub/utils/util-vserver/util-vserver-0.30.212.tar.bz2'
tar xjf util-vserver-0.30.212.tar.bz2
cd util-vserver-0.30.214
Sur certaines distributions Linux, la commande mktemp ne supporte pas l'option '­t':
Modifier la variable _MKTEMP dans /opt/kernel/util-vserver-0.30.214/scripts/functions :
#modif FH option -t non supportee sur mktemp
function monmktemp {
/bin/mktemp "$TMPDIR/$1"
}
Modifier la variable _MKTEMP
dans /opt/kernel/util-vserver-0.30.214/scripts/util-vserver-vars
#modif FH option -t non supportee
fonction monmktemp creee dans scripts/functions
_MKTEMP="monmktemp "
#_MKTEMP="/bin/mktemp -t"
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 104
Compilation des utilitaires
Préparation
La commande naddress, fournie avec les utilitaires, contient un bug qui entraine, sur certaines distributions, un segmentation fault.
Pour le corriger, il suffit de remplacer à la ligne 318
par
out:
free(str);
return ret;
out:
//free(str);
return ret;
Compilation
./configure
make
make install
make install-distribution
S'il est besoin de modifier un source :
make && make install
cd /opt/kernel/util-vserver-0.30.214
make && \cp src/.libs/vcontext /usr/sbin/vcontext
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 105
Lancement
Activation manuelle:
echo /usr/lib/util-vserver/vshelper > /proc/sys/kernel/vshelper
Activation automatique:
Dans le fichier /etc/sysctl.conf, ajoutez :
kernel.vshelper = /usr/lib/util-vserver/vshelper
Lancez la commande :
/usr/local/etc/init.d/vprocunhide restart
qu'il faut aussi ajouter dans /etc/rc.local.
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 106
Premier test
Téléchargement d'un script de test :
wget http://vserver.13thfloor.at/Stuff/SCRIPT/testme.sh
chmod 700 testme.sh
Exécution:
./testme.sh
Linux-VServer Test [V0.17] Copyright (C) 2003-2006 H.Poetzl
chcontext is working.
chbind is working.
Linux 2.6.22.6-vs2.2.0.3.pfd2 #1 SMP Wed Feb 13 19:35:40 CET 2008 i686
Ea 0.30.214 273/glibc (Sa) <v13,net,v21,v22,v23,netv2>
VCI: 0002:0200 273 030007b1 (TbsPHIW)
--[000]# succeeded.
[001]# succeeded.
[011]# succeeded.
[031]# succeeded.
[101]# succeeded.
[102]# succeeded.
[201]# succeeded.
[202]# succeeded.
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 107
Création d'une partition
Pour de nombreuses raisons (sécurité, sauvegardes, ...), il est bon d'installer les vservers dans une partition séparée de celle de la base globale.
mkdir /vservers
mount /vservers/
fdisk /dev/sda
--> définition d'une partition, ici /dev/sda9
mkfs -t ext3 -N 4000000 -m 0 /dev/sda9
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 108
Construction d'un serveur
Un nouveau serveur est créé à partir de la commande 'vserver':
vserver Install build -m rsync --hostname Install.srv \
--interface inst=eth0:10.128.10.11/16 -- --source 10.128.10.8:/
rsync -Hazx --numeric-ids 10.128.10.8:/usr /etc/vservers/.defaults/vdirbase/Install/
Il faut que le système obtenu soit chrootable (vérifier que /var et /usr ne sont pas sur des partitions séparées).
Ensuite, il faut configurer sommairement le nouveau vserver avant de le lancer:
rm etc/fstab etc/modprobe + rc3.d
cd etc/rc.d/
rm network bluetooth harddrake kheader sendmail upsmon dkms resolvconf \
shorewall laptop-mode dm network-up oki4daemon \
partmon virtualbox vmware ...
Construction d'un serveur
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 109
Lancement
Lancement du vserver
vserver Install start
'Connexion' au vserver
vserver Install enter
A ce stade, l'utilisateur se trouve dans la machine virtuelle.
Configuration
La première étape de configuration de la machine virtuelle consiste à changer le mot de passe de root :
passwd root
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 110
Contrôle de vserver
Depuis la base globale, on peut obtenir des informations sur les vservers actifs, les lancer, les stopper, etc.
Commandes usuelles
•
•
•
•
vserver-copy : copie de serveurs,
vserver-info : informations sur les vservers (compilation, répertoires, ...),
informations sur les vservers,
vfiles : extrait la liste des vcontext.
vserver-stat:
Exemples:
# vserver-stat
CTX
PROC
VSZ
RSS
40000
40 410.4M 88.7M
40003
41 627.9M 276.3M
userTIME
22m42s94
1h10m19
sysTIME
10m35s80
1m00s60
UPTIME NAME
41d01h02 Install
41d01h02 ServGlpi
# vserver Install status
Vserver 'Install' is running at context '40000'
Number of processes: 40
Uptime:
40 days, 22:46
Lancement
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 111
Réseau
La déclaration des adresses IP dans un vserver se fait dans le répertoire :
/usr/local/etc/vservers/Install/interfaces/0/
Ce répertoire contient entre autres deux fichiers:
• ip : ne contient que l'adresse IP,
•
prefix
: le netmask en notation CIDR.
Un vserver peut contenir jusqu'à 16 adresses IP. La première est dans le répertoire 0.
Exemple de script de création des adresses IP :
#!/bin/sh
j=1
for i in 10.21.10.1 10.21.10.2
do
j=$(($j+1))
mkdir $j
echo $i > $j/ip
echo "24" > $j/prefix
done
Réseau
(c) Pythagore F.D. 2010
10.21.10.50
Pythagore F.D.
Page 112
Réseau
Dans le répertoire /usr/local/etc/vservers/Install/interfaces/0/
existent deux autres fichiers:
dev: qui fixe l'interface physique (eth0)
name: qui fixe le nom de l'alias
# ls /usr/local/etc/vservers/*/interfaces/0/
/usr/local/etc/vservers/Install/interfaces/0/:
dev ip name prefix
/usr/local/etc/vservers/ServGlpi/interfaces/0/:
dev ip name prefix
/usr/local/etc/vservers/ServIrc/interfaces/0/:
dev ip name prefix
# cat /usr/local/etc/vservers/Install/interfaces/0/*
eth0
10.128.10.5
inst
16
# ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:8D:F9:15:38
inet adr:10.128.10.8 Bcast:10.128.255.255 Masque:255.255.0.0
...
eth0:glpi Link encap:Ethernet HWaddr 00:50:8D:F9:15:38
inet adr:10.128.10.18 Bcast:10.128.255.255 Masque:255.255.0.0
eth0:inst Link encap:Ethernet HWaddr 00:50:8D:F9:15:38
inet adr:10.128.10.5 Bcast:10.128.255.255 Masque:255.255.0.0
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 113
Acces ssh
Le démon sshd de l'hôte écoute toutes les adresses. Il faut le limiter pour n'écouter que sa propre adresse, pas celles des vservers.
Dans /etc/ssh/sshd_config de la base :
ListenAddress 10.128.10.8
Dans /etc/ssh/sshd_config du vserver:
ListenAddress 10.128.10.5
# Adresse IP de la machine physique.
# Adresse IP du vserver.
C'est un principe général à suivre pour les services réseaux: postfix, apache,...
De manière générale, il faut essayer de basculer tous les lancements de services dans les vservers, et pas sur le host.
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 114
Gestion de base
Démarrage automatique au boot
echo "default" > /usr/local/etc/vservers/Install/apps/init/mark
Tous les vservers qui possèdent un fichier mark démarrent.
Destruction d'un serveur
rm -r /vservers/Install /etc/vservers/Install
Nom DNS du
vserver clone
Clonage d'un serveur
vserver ServRef build -m clone --hostname ServRef.srv \
--interface inst=eth0:10.128.10.12/16 -- --source Install
Adresse du vserver clone
Réseau
(c) Pythagore F.D. 2010
Pythagore F.D.
Vserver modèle
Page 115
Utilisation
Connexion
On se connecte sur un vserver comme sur une machine physique autonome.
Exemple de connexion :
ssh Vserver1.pfd9
[root@Vserver1 ~]# ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:8D:F9:15:38
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:118773174 errors:0 dropped:0 overruns:0 frame:0
TX packets:89642631 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1778462961 (1.6 GiB) TX bytes:2223492147 (2.0 GiB)
Interruption:19 Adresse de base:0x2000
eth0:inst Link encap:Ethernet HWaddr 00:50:8D:F9:15:38
inet adr:10.128.10.5 Bcast:10.128.255.255 Masque:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:19 Adresse de base:0x2000
Utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 116
Utilisation
Processus
La base vserver est très peu consommatrice de ressources.
Résultat d'un ps
UID
root
root
14
xfs
root
nscd
16
root
root
root
root
root
root
root
postfix
root
root
root
Utilisation
(c) Pythagore F.D. 2010
elf :
PID PPID
1
0
3361
1
3444
1
3462
1
3515
1
3522
1
3528
1
3529 3528
3545
1
3557
1
3620
1
3777
1
3804 3620
3901
1
3906 3901
4877 29569
29566 3557
29569 29566
C
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
STIME
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
Jan07
17:35
Feb07
Feb07
TTY
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
pts/0
?
pts/0
TIME
00:00:00
00:00:02
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
CMD
init [3]
syslogd -m 0 -a /var/spool/postfix/dev/log
dbus-daemon --system
xfs -port -1 -daemon -droppriv -user xfs
crond -p
/usr/sbin/nscd
hald
hald-runner
xinetd
/usr/sbin/sshd
smbd -D
nmbd -D
smbd -D
/usr/lib/postfix/master
qmgr -l -t fifo -u -c
ps -ef
sshd: root@pts/0
-bash
Pythagore F.D.
Page 117
Partitions
Accès depuis la base globale :
[root@ServTP8 ~]# df
Sys. de fich.
/dev/sda1
/dev/hda1
/dev/sdb5
/dev/sda9
/dev/sda7
/dev/sda5
/dev/sda6
/dev/sda10
Tail.
5,8G
184G
66G
9,7G
981M
4,4G
981M
52G
Occ. Disp. %Occ. Monté sur
4,6G 922M 84% /
150G
34G 82% /mnt/H
48G
18G 74% /mnt/G
6,7G 3,1G 69% /opt
17M 915M
2% /tmp
1,9G 2,3G 46% /usr
123M 808M 14% /var
5,6G
44G 12% /vservers
Accès depuis un vserver :
[root@Vserver1 ~]# df
Sys. de fich.
Tail. Occ. Disp. %Occ. Monté sur
/dev/hdv1
52G 5,6G
44G 12% /
none
16M
0
16M
0% /tmp
/dev/sdb6
401G 220G 181G 55% /mnt/H
On remarque le cantonnement du vserver à son environnement prison chroot par sa base globale.
Utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 118
Sécurité
Trois drapeaux permettent de limiter les accès aux pseudo fichiers de /proc depuis les vservers.
Ils sont modifiables à l'aide de la commande setattr et visualisables avec showattr
Exemple:
Depuis la base globale:
# showattr /proc/cpuinfo
Awh-ui- /proc/cpuinfo
Le drapeau A (admin) est levé, le w (watch) et le h (hide) sont baissés.
Le fichier /proc/cpuinfo est donc visible et consultable depuis les vservers, mais ne sont pas modifiables.
Admin
Si levé, la ressource est visible dans la base globale
Watch
Si levé, la ressource est visible depuis le vserver
Hide
Si levé, la ressource n'est pas visible. Si baissé, la ressource est toujours visible et les drapeaux A et W n'ont aucune influence
Sécurité
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 119
Exemple
Depuis la base globale:
# setattr --hide --admin --~watch /proc/cpuinfo
# showattr /proc/cpuinfo
AWH-ui- /proc/cpuinfo
Depuis un vserver:
# cat /proc/cpuinfo
cat: /proc/cpuinfo: Aucun fichier ou répertoire de ce type
Deux options permettent d'étendre la portée des modifications:
-R: fait une modification récursive des répertoires
setattr -R --hide /mesfichiers
-X: ne traverse pas les autres systèmes de fichiers
Attention à la combinaison « ­­hide ­­~admin » qui ne permet pas de faire la modification inverse sans reboot.
Sécurité
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 120
Barrière chroot
Pour éviter les sorties de chroot, il faut poser une barrière sur le point d'entrée du chroot.
Exemple:
Pose d'une barrière sur le répertoire /vservers
setattr --barrier /vservers
Vérification de la pose
# showattr /vservers
---Bui- /vservers
---bui- /vservers/lost+found
---bui- /vservers/Install
Sécurité
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 121
Autres commandes
Quelques autres commandes analogues aux commandes unix de base mais qui agissent sur l'ensemble des contextes:
• vtop
• vps -ef
• vpstree
• vdu
• vkill :
kill global sur tous les serveurs
Resssources
•
•
Sécurité
(c) Pythagore F.D. 2010
http://Openvcp.org,
http://vsmon.revolutionlinux.com/ : superviseur de vserver, fait des vserver-stat sur une grappe.
Pythagore F.D.
Page 122
XIII
Wine
Pythagore F.D.
(c) Pythagore F.D. 2010
Page 123
Présentation
Objectif:
Le logiciel Wine est une implémentation de l'interface de programmation Microsoft Windows. Il est bâti autour du serveur X Window des systèmes Unix. Wine permet d'utiliser des programmes conçus pour Windows sous Unix sans installer le système d'exploitation Windows.
À la différence de Qemu ou Bochs, Wine n'est pas un émulateur de machine, mais gère les modes 16 et 32 bits de l'interface Windows.
Description:
WINE signifie « Wine Is Not an Emulator » (Wine n'est pas un émulateur), ou encore « WINdows Emulator » (l'émulateur Windows).
Wine est un projet Open Source distribué sous licence LGPL (Lesser General Public License), après l'avoir été sous licence WineHQ, puis X11. La licence GNU LGPL permet de s'affranchir du caractère héréditaire de la licence GPL, en autorisant, le plus souvent, une bibliothèque LGPL à se lier à une autre non LGPL sans révoquer la licence.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 124
Historique
1993-1996
Bob Amstatd et Eric Youngdale initient le projet sous licence BSD, repris ensuite par Alexandre Julliard et Peter MacDonald. Utilisation de Xt (X toolkit) comme API graphique.
Support de NetBSD, puis de Win32.
Word et Excel fonctionnent.
1997-2000
Création de wineHQ.org, QG de la communauté des utilisateurs de Wine. Corel participe au projet wineHQ.
Passage sous licence X11 (dérivée de BSD).
2002
Année de la plus forte progression. Première conférence (annuelle) WineConf sur Wine.
Passage sous licence LGPL.
2007
Sortie de la version 0.9.41, constituée d'un million et demi de lignes de code C rédigées par plus de 700 développeurs.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 125
Projets associés
Winelib
Winelib est un kit de développement permettant de compiler des applications Windows (dont on possède les sources) sur Unix.
Il est utilisé, entre autres, pour recompiler des applications à partir du code source Windows afin de pouvoir faire appel à des APIs Unix. Cela permet une meilleure intégration à l'environnement Unix que ce que ne permet Wine avec des applications Windows non modifiées.
Un autre avantage majeur est une recompilation facilitée des applications sur des architectures non­
Intel, et donc une exécution de l'application sans devoir recourir à un quelconque émulateur de machine, gourmand en ressources.
URL du site: http://www.winehq.org/site/winelib
Cedega
Ex­WineX. Reprise propriétaire de Wine (accès libre aux sources CVS). Projet orienté sur la capacité à faire tourner les jeux Windows, impliquant une implémentation la plus large possible de DirectX. Ce projet a entraîné le passage de Wine sous licence LGPL, qui interdit ce genre de réutilisation.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 126
Projets associés
CrossOver
Projet commercial de versions très paramétrables de Wine sous MacOS X et Linux. Intègre une GUI.
Installeurs
PlayOnLinux (jeux), Winetricks et Wine doors (mono, dcom98, fonts,...) sont des installeurs d'applications Windows pour Wine.
Obsolètes
Winetools, Winesetuptk et Xwine ne sont désormais plus maintenus.
Présentation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 127
Installation
Il existe de nombreux binaires précompilés disponibles à l'adresse http://www.winehq.org/site/download pour une grande variété de distributions: RedHat / CentOS / Fedora, Suse, Mandriva, Slackware, Ubuntu, Debian, FreeBSD, PC­BSD, Solaris, Windows.
Procédure
A partir des sources, il est nécessaire de disposer des fichiers de développement X11 (X development files) et de Fontforge pour compiler le support fenêtré X et disposer du support des fontes Windows:
wget http://switch.dl.sourceforge.net/sourceforge/wine/ wine-0.9.41.tar.bz2
tar xvjf wine-0.9.41.tar.bz2
cd wine-0.9.41
./configure
make depend && make
make install
pour Debian et Ubuntu:
apt-get install wine
Installation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 128
Installation
Mandriva:
urpmi wine
RedHat Enterprise Linux 4, à partir d'une installation de base:
soit:
soit:
yum install wine
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
rpm
Installation
(c) Pythagore F.D. 2010
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
liblcms-1.15-10.i586.rpm
gphoto2-2.1.4-7.i386.rpm
bison-1.875c-2.i386.rpm
wine-core-0.9.41-1.el4.i386.rpm
wine-capi-0.9.41-1.el4.i386.rpm
wine-cms-0.9.41-1.el4.i386.rpm
wine-esd-0.9.41-1.el4.i386.rpm
wine-jack-0.9.41-1.el4.i386.rpm
wine-ldap-0.9.41-1.el4.i386.rpm
wine-nas-0.9.41-1.el4.i386.rpm
wine-tools-0.9.41-1.el4.i386.rpm
wine-twain-0.9.41-1.el4.i386.rpm
wine-0.9.41-1.el4.i386.rpm
wine-devel-0.9.41-1.el4.i386.rpm
Pythagore F.D.
Page 129
Configuration
Les fichiers de configuration résident dans $HOME/.wine, répertoire créé lors de la première utilisation de l'outil de configuration winecfg.
Dans un terminal, taper la commande:
~# winecfg
La fenêtre s'ouvre sur l'onglet « Applications ». Choisir la version de Windows pour les paramètres par défaut dans la liste déroulante.
Contenu du répertoire de configuration $HOME/.wine:
~# ls -1 ~/.wine
dosdevices/
drive_c/
system.reg
userdef.reg
user.reg
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 130
Structure
Les fichiers de configuration system.reg, userdef.reg et user.reg définissent la base de registre de Wine. Leur structure est la suivante:
[ Chemin et nom de la clé ]
"Paramètre1"="valeur1"
"Paramètre2"="valeur2"
@="Fichier ou clé de renvoi"
...
Contenu du répertoire $HOME/.wine/dosdevices:
~# ls -1l ~/.wine/dosdevices/
c:/ -> ../drive_c
z:/ -> /
Ces lecteurs sont des liens symboliques.
Par défaut, le lien symbolique c:/ pointe vers le répertoire $HOME/.wine/drive_c/ qui contient une arborescence Windows "habituelle":
~# ls -1 ~/.wine/drive_c/
Program Files/
windows/
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 131
"Applications"
En cliquant sur le bouton "Ajouter une application", l'explorateur Windows permet de naviguer dans l'arborescence afin de sélectionner un nouveau programme à paramétrer.
Dans la fenêtre précédente, l'utilisateur pourra choisir d'utiliser les paramètres globaux (le système par défaut) ou bien de sélectionner une autre émulation d'un système d'exploitation pour l'application choisie.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 132
"Bibliothèques"
La liste déroulante permet de choisir entre une même dll installée par Wine (Incluse/built­in) ou par une application (native) en cliquant sur "Ajouter surclassage".
L'ordre de tentative de chargement ou sa désactivation est déterminé par "Éditer surclassage", puis "sélectionner".
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 133
"Affichage"
L'onglet "Affichage" offre des options de gestion du comportement des fenêtres ouvertes par les applications.
Coché, le paramètre "Permettre aux applications DirectX..." confine le pointeur de la souris dans la fenêtre du système émulé. Pour accéder aux autres fenêtres, presser ESC.
"Emuler un bureau virtuel" autorise un affichage (fenêtré ou non) plus grand que la taille réelle du bureau.
"Permettre au gestionnaire de fenêtres..." bascule ente le mode fenêtré (coché) et le mode plein écran (décoché, plus précis).
Deux paramètres améliorent le rendu visuel en activant des fonctionnalités du GPU.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 134
"Intégration avec le bureau"
Cet onglet permet l'installation et la configuration d'un thème d'affichage du bureau Windows, mais également de lier les dossiers systèmes à des répertoires locaux.
Cette fonctionnalité permet d'accéder aux mêmes fichiers à partir d'applications Windows comme de systèmes Unix.
Les répertoires locaux répondent aux spécificités Unix et peuvent être partagés par Samba ou NFS, voire montés localement.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 135
"Lecteurs"
La disponibilité des unités de stockage de masse dans l'émulation est paramétrée dans cet onglet.
Ces unités sont de 5 types:
• "Détection auto.": l'unité est paramétrée selon le type de fichier (block, character,...),
• "Disque dur local": analogue au lien symbolique vers un répertoire local,
• "Partage réseau": le répertoire monté localement est partagé sur le réseau, une politique de restriction d'accès est appliquée,
• "Lecteur de disquette": périphérique de type block (/dev/fdX) généralement monté sur le répertoire /media/floppy,
• "CD­ROM": périphérique de type block (/dev/hdX) généralement monté sur le répertoire /media/cdrom.
Seule l'assignation manuelle d'un label et d'un numéro de série est à ce jour implémentée.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 136
"Audio"
L'onglet "Audio" permet la sélection d'un pilote audio et le paramétrage de l'accélération matérielle (qualité de la chaîne numérique).
La fonctionnalité "Panneau de configuration", relative au mixage audio, n'est pas à ce jour implémentée.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 137
"À propos"
Cet onglet présente les versions, site et descriptif de la bibliothèque Wine.
Configuration
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 138
Matériels, partages et bases
Ports série et parallèle
L'ajout de l'un de ces ports se fait par lien symbolique du fichier de périphérique character vers sa dénomination Windows dans le répertoire de configuration $HOME/.wine/dosdevices.
• Ajout d'un port série:
~# ln -s /dev/ttyS0 ~/.wine/dosdevices/com1
• Ajout d'un port parallèle:
~# ln -s /dev/lp0 ~/.wine/dosdevices/lpt1
Imprimantes
Wine peut interagir avec CUPS: l'ajout d'un port parallèle n'est alors pas nécessaire, mais la présence de la commande lpr côté Unix est requise.
Dans le cas où CUPS n'est pas installé, Wine peut utiliser l'ancien système d'impression BSD:
• les imprimantes du fichier /etc/printcap sont chargées par Wine
• un fichier PPD est requis par imprimante (generic.ppd est inclus avec Wine)
• la commande lpr est utilisée à l'impression
Matériels, partages et bases
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 139
Matériels, partages et bases
Scanners
La bibliothèque TWAIN de Wine redirige les requêtes vers vers les bibliothèques Linux Sane (Scanner Access Now Easy). Sane doit être présent sur le système, ainsi que l'utilitaire xscanimage.
➢ Le support des scanners n'est pas reconnu comme le point fort de Wine...
Partage réseau
L'ajout d'un répertoire partagé se fait par lien symbolique du répertoire Unix de partage vers le répertoire $HOME/.wine/dosdevices/unc.
Exemple:
Ajout du répertoire partagé par Samba monté sur /smb/mon_serveur/mon_partage:
~# ln -s /smb/mon_serveur/mon_partage ~/.wine/dosdevices/unc/mon_serveur/mon_partage
Matériels, partages et bases
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 140
Matériels, partages et bases
ODBC
La dll builtin odbc32.dll de Wine permet d'interfacer un programme avec n'importe quel système Unix ODBC. Il suffit de configurer l'environnement Unix pour indiquer à Wine la bibliothèque vers laquelle rediriger la requête:
• par variable d'environnement:
~# export LIB_ODBC_DRIVER_MANAGER=/usr/lib/libodbc.so.1.0.0
• si elle n'est pas positionnée, en cherchant la bibliothèque libodbc32.so
~# ln -s libodbc.so.1.0.0 /usr/lib/libodbc.so
~# /sbin/ldconfig
La dll native odbc32.dll de Windows est également utilisable pour se connecter aux bases telles que MS SQL ou Oracle.
Le choix entre les deux dll s'effectue dans l'onglet "Bibliothèques", par surcharge.
Matériels, partages et bases
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 141
Pré-requis d'utilisation
DLLs
Wine n'implémente pas toutes les APIs Windows. Certaines DLLs peuvent s'avérer nécessaires au bon fonctionnement des programmes.
Elles sont librement téléchargeables sur les sites suivants:
• http://www.dll­files.com/ • http://www.dlldump.com/ Fontes
De la même façon, les fontes Microsoft pour le web s'avèrent nécessaires à l'installation et l'usage de certains programmes.
Elles sont librement téléchargeables sur le site du projet hébergé par SourceForge "Smart package of Microsoft's core fonts": http://sourceforge.net/projects/corefonts/.
Installation pour l'émulation Wine (toutes les fontes sont dans un même répertoire):
~# for i in `ls fontes-MS/*.exe`; do wine $i; done;
Pré-requis d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 142
Pré-requis d'utilisation
Applications natives
Wine intègre quelques applications d'utilisation, paramétrage et maintenance du système:
• winefile: un explorateur de fichiers de type windows 3.11
~# [wine] winefile
• winhelp: un butineur de fichiers *.hlp
~# [wine] winhelp
• notepad: un éditeur de texte
~# [wine] notepad
• regedit: l'éditeur de la base de registre
~# [wine] regedit
• regsvr32: utilitaire d'inscription des DLLs
Inscrire une DLL: ~# [wine] regsvr32 <Nom_DLL>
Désinscrire une DLL: ~# [wine] regsvr32 -u <Nom_DLL>
• wineboot: simule un redémarrage
~# [wine] wineboot
• uninstaller: utilitaire de suppression des programmes
~# [wine] uninstaller
• wineconsole: command­dos pour exécution de scripts
~# [wine] wineconsole –backend=(user|curses) hello.bat
• winebrowser: un navigateur web
~# [wine] winebrowser URL
Pré-requis d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 143
Pré-requis d'utilisation
Environnement
Les variables d'environnement peuvent être renseignées de deux façons:
• dans un shell Unix, en utilisant la commande export pour bash par exemple, Wine passant toutes les variables d'environnement Unix à l'émulation Windows:
~# export MAVARIABLE=mavaleur
• dans la base de registre, en éditant les clés situées dans HKEY_CURRENT_USER\Environment:
~# wine regedit
Exemple: "System" = "c:\\windows\\system"
Base de registre
La base de registre est entièrement contenue dans un fichier pour le système et deux par utilisateur:
~/.wine/system.reg
~/.wine/userdef.reg
~/.wine/user.reg
Une fois les applications que l'on souhaite mettre à disposition de tous les utilisateurs installées, le fichier system.reg ne change plus. Il peut être figé par la procédure suivante (en tant que root):
cp ~/.wine/system.reg /usr/share/wine/wine.systemreg
rm ~/.wine/system.reg
ln -s /usr/share/wine/wine.systemreg ~/.wine/system.reg
Le lien est à reproduire pour chaque utilisateur.
Pré-requis d'utilisation
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 144
Programmes
Avant-propos
Certains programmes Windows (Internet Explorer, Quicktime,...) installent des modules dans le panneau de configuration. Ceux­ci sont accessibles par la commande:
~# wine control
Syntaxe d'exécution
Les programmes sont lancés en argument de la commande wine.
Le chemin du programme est spécifié dans la syntaxe Unix ou Windows (une fois installé).
Les arguments du programme sont spécifiés à la suite de son appel.
Installation
Selon les règles précédentes, l'installation d'Apophysis 2.02, un gestionnaire de fractales libre, se déroule de la façon suivante:
~# wine /media/usbdisk/Wine/Apo202.exe
Programmes
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 145
Programmes
Programmes
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 146
Programmes
Exploitation
Deux syntaxes sont donc disponibles pour l'exécution de binaires Windows:
ou
Programmes
(c) Pythagore F.D. 2010
~# wine ~/.wine/drive_c/Program\ Files/Apophysis\ 2.0/Apophysis.exe
~# wine "c:\Program Files\Apophysis 2.0\Apophysis.exe"
Pythagore F.D.
Page 147
Programmes
Désinstallation
La commande interne ~# uninstaller est utilisée pour désinstaller un programme et nettoyer la base de registre Wine.
Programmes
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 148
Ressources et support
Ressources
Wine est très peu consommateur de ressources. En revanche, les programmes qu'il permet d'exécuter peuvent l'être ou générer un plantage qui peut mener à une sévère dégradation des performances de la machine.
À titre indicatif, les tests ont été réalisés sur la configuration suivante sur une RedHat EL4:
• AMD Athlon 2500+ (1,8 Ghz) / 512 ko cache L2
• 1 Go de RAM
• carte graphique Nvidia GeForce4 MX / AGP 2.0 / 64 Mo
• disque dur ATA100
OpenOffice.org 2.2 pour Windows se lance en moins de 3s. Il est fonctionnel et son utilisation transparente.
Support
Les URLs suivantes peuvent aider à la résolution de problèmes:
• site officiel: http://winehq.org
• liste et versions d'applications fonctionnelles, retours d'expérience: http://winehq.org/apps
• DLLs libres de droits: http://www.dlldump.com/ et http://www.dll­files.com/
• le bout de toile de Franck: http://www.frankscorner.org/
Ressources et support
(c) Pythagore F.D. 2010
Pythagore F.D.
Page 149

Documents pareils