LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:opensuse-kvm

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

opensuse:opensuse-kvm [2018/11/17 13:53] (Version actuelle)
Ligne 1: Ligne 1:
 +======= La virtualisation via KVM =======
 +{{:opensuse:suselien.png|}}Toutes ces manipulations ont été faites sous opensuse 11.3, à partir des paquets officiels. 
  
 +Mais cela devrait fonctionner sur des versions antérieures d'opensuse. 
 +=====Compatibilitée matériel:=====
 +
 +{{:opensuse:suselien.png|}}Sous linux, les instructions de virtualisation s'appellent **vmx** pour Intel, **svm** pour AMD.
 +Il arrive de temps en temps que cette fonction soit désactivée dans le bios par défaut . Ou beaucoup plus rarement, non géré par la carte mère.
 +
 +Dans un terminal
 +
 +    
 +    # egrep --color '(vmx|svm)' /proc/cpuinfo
 +
 +Si **vmx** ou **svm** apparait dans la liste, votre processeur est compatible.
 +
 +Vous pouvez aussi vérifier la présence des instructions de virtualisation sur le site [[http://ark.intel.com/MySearch.aspx?VTX=true|d'Intel]] ou [[http://products.amd.com/en-us/desktopcpuresult.aspx?f1=&f2=&f3=&f4=&f5=&f6=&f7=&f8=&f9=&f10=&f11=&f12=True|d'amd]] avec la référence de votre processeur.
 +Quelques [[http://www.pcinpact.com/actu/news/55115-amd-intel-athlon-sempron-phenom-core-i3-i5-i7-pentium-tableau-comparatif-2010.htm|info]]
 +
 +
 +Dans un terminal
 +
 +    
 +    # egrep 'model name' /proc/cpuinfo
 +    model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz
 +    model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz
 +
 +
 +
 +__
 +Se retrouver parmi toutes les instructions de virtualisation__
 +
 +| [[http://ark.intel.com/MySearch.aspx?VTX=true|vt-x]]    | intel    | **vmx**      | instruction processeur base pour la virtualisation        |
 +| [[http://ark.intel.com/MySearch.aspx?VTD=true|vt-d]]    | intel    | **iommu**       | instruction processeur **ET** chipset **ET** bios permettant d'attacher un périphérique physique à une machine virtuelle        |
 +| [[http://www.intel.com/network/connectivity/solutions/virtualization.htm|vt-c]]    | intel    | iommu??      | instruction [[http://www.intel.com/cd/products/services/emea/fra/ethernet/458263.htm|carte réseau]]  intel dépendant de vt-d    |
 +| amd-v    | amd     | **svm**      | instruction processeur base pour la virtualisation        |
 +| amd-vi    | amd     | **iommu**       | instruction chipset (série [[http://en.wikipedia.org/wiki/AMD_800_chipset_series#Desktop_comparison_matrix|890FX]] actuellement) permettant d'attacher un périphérique physique à une machine virtuelle      |
 +| via vt    | via    | ???      | instruction processeur base pour la virtualisation        |
 +
 +
 +----
 +=====Installation KVM et libvirt:=====
 +
 +{{:opensuse:suselien.png|}}Tout ce dont vous avez besoin est trouvable dans les dépots officiels d'opensuse 11.3.
 +
 +<note tip> Le dépot [[http://download.opensuse.org/repositories/Virtualization/openSUSE_11.3/|Virtualization/openSUSE_11.3]] est un peu plus à jour.</note>
 +
 +Dans un terminal en root
 +
 +    # zypper install kvm libvirt
 +    
 +
 +
 +A l'aide de yast:
 +
 +{{:opensuse:opensuse-kvm01.png|}}
 +
 +
 +Verifiez que libvirt est lancé:
 +
 +    
 +    # service libvirtd status
 +    Checking status of libvirtd              running
 +
 +----
 +===== Préparez le reseau (facultatif): =====
 +
 +{{:opensuse:suselien.png|}}La mise en réseau d'une machine virtuelle passe soit par du **nat** entre votre réseau ethernet et un réseau local virtuel, soit par un **pont réseau** (**bridge**). Un réseau isolé peut aussi être crée entre plusieurs machines virtuelles.
 +Par défaut s'il n'y a pas de **pont réseau** en place, c'est **nat** qui vous sera proposé.
 +
 +----
 +==== Pont reseau (bridge): ====
 +
 +<note importante> Si vous avez un pc muni de __deux__ ports Ethernet, je vous conseille de dédier cette seconde à votre machine virtuelle, à l'aide d'un **pont réseau**. </note>
 +
 +
 +
 +
 +
 +===Pont réseau en console:===
 +
 +**Premier cas:**
 +//vous avez **__deux__** cartes réseau, créer un pont réseau nommé br0 relié par la carte réseau eth0 __dédié__ à la machine virtuelle.//
 +
 +Il n'y a pas de fichier ifcfg-eth0 à éditer, si vous en avez un supprimez le.
 +
 +
 +Dans un terminal en root
 +
 +    
 +    vi /etc/sysconfig/network/ifcfg-br0   
 +<file>
 +    BOOTPROTO='static'
 +    BRIDGE='yes'
 +    BRIDGE_FORWARDDELAY='0'
 +    BRIDGE_PORTS='eth0'
 +    BRIDGE_STP='off'
 +    BROADCAST=''
 +    ETHTOOL_OPTIONS=''
 +    IPADDR='0.0.0.0/24'
 +    MTU=''
 +    NAME=''
 +    NETWORK=''
 +    REMOTE_IPADDR=''
 +    STARTMODE='auto'
 +    USERCONTROL='no'
 +</file>
 +Relancez le reseau:
 +
 +
 +Dans un terminal en root
 +
 +    service network restart
 +
 +**Second cas:**
 +//créer un pont réseau nommé br0 relié par la carte réseau eth0, utilisé pour la machine physique en dhcp ET pour la machine virtuelle//
 +
 +Dans un terminal en root
 +
 +    
 +    vi /etc/sysconfig/network/ifcfg-br0   
 +
 +<file>
 +    BOOTPROTO='dhcp'
 +    BRIDGE='yes'
 +    BRIDGE_FORWARDDELAY='0'
 +    BRIDGE_PORTS='eth0'
 +    BRIDGE_STP='off'
 +    BROADCAST=''
 +    ETHTOOL_OPTIONS=''
 +    IPADDR=''
 +    MTU=''
 +    NAME=''
 +    NETMASK=''
 +    NETWORK=''
 +    REMOTE_IPADDR=''
 +    STARTMODE='auto'
 +    USERCONTROL='no'
 +</file>
 +    vi /etc/sysconfig/network/ifcfg-eth0
 +<file>
 +    BOOTPROTO='static'
 +    BROADCAST=''
 +    ETHTOOL_OPTIONS=''
 +    IPADDR='0.0.0.0/32'
 +    MTU=''
 +    NAME='88E8001 Gigabit Ethernet Controller'
 +    NETMASK=''
 +    NETWORK=''
 +    REMOTE_IPADDR=''
 +    STARTMODE='auto'
 +    USERCONTROL='no'
 +</file>
 +Relancez le reseau:
 +
 +
 +Dans un terminal en root
 +
 +    service network restart
 +
 +===Pont réseau avec Yast:===
 +
 +Cliquez sur Ajouter
 +
 +{{ opensuse:opensuse-bridge01v2.png }}
 +
 +
 +Sélectionnez pont, ou bridge si yast est en anglais, ainsi que le numéro que vous souhaitez attribuer a votre pont réseau: 
 +
 +
 +{{ opensuse:opensuse-bridge02v2.png }}
 +
 +Si vous n'avez qu'une carte réseau utilisée jusqu'a maintenant en dhcp:
 +
 +
 +{{ opensuse:opensuse-bridge06v2.png }}
 +
 +Si la carte réseau est dédiée au pont réseau de votre future machine virtuelle:
 +
 +{{ opensuse:opensuse-bridge03v2.png }}
 +
 +
 +Sélectionnez la carte réseau à mettre en bridge:
 +
 +
 +{{ opensuse:opensuse-bridge04v2.png }}
 +
 +
 +
 +Voilà votre bridge est en place:
 +
 +
 +{{ opensuse:opensuse-bridge05v2.png }}
 +
 +----
 +==== Open Vswitch: ====
 +
 +
 +[[http://openvswitch.org/|Open vSwitch]] permet créer un switch virtuel, pour reliez toutes les machines virtuelles entres elles.
 +Ca a l'air compliqué comme ca, et ca l'est surement... j'ai pas encore eu le temps de tester...
 +
 +
 +----
 +=====virt-manager administrez graphiquement vos machines virtuelles=====
 +
 +{{:opensuse:suselien.png|}}**virt-manager** permet de gérer graphiquement des machines virtuelles locales ou distantes.
 + **xen**, **qemu** et **kvm/qemu** sont gérés par **virt-manager**. C'est aussi l'interface pour la virtualisation proposé par yast.
 +
 +Il n'est pas obligatoire pour la création de machines virtuelles.
 +Si vous ne voulez pas utiliser **virt-manager**, sautez a l'étape **virsh**.
 +
 +
 +----
 +==== Installation virt-manager:====
 +
 +<note importante> Veillez à ce que libgtk-vnc soit en version 3.1, la version 4.x refusant le lancement de virt-manager. </note>
 +
 +Dans un terminal en root
 +
 +    zypper install virt-manager
 +
 +A l'aide de yast:
 +
 +{{:opensuse:opensuse-virt-manager00.png|}}
 +
 +
 +
 +----
 +
 +
 +
 +==== Lancement de virt-manager ====  
 +
 +Dans un terminal
 +
 +    
 +    su -
 +    virt-manager
 +
 +A l'aide de yast: (**virt-manager** sera lancé en français)
 +
 +{{ opensuse:opensuse-virt-manager12.png }}
 +
 +Une fois virt-manager lancé: ajoutez une connection
 +
 +
 +{{ opensuse:opensuse-virt-manager01v3.png }}
 +
 +
 +Le menu 'Add Connection': sélectionnez l'hyperviseur **QUEMU/KVM**
 +
 +//cela va créer une connection vers votre hyperviseur kvm sur votre machine locale// 
 +
 +{{ opensuse:opensuse-virt-manager02.png }}
 +
 +----
 +==== Creation d'une machine virtuelle: ====
 +
 +Cliquez sur l'icône 'New'
 +
 +
 +{{ opensuse:opensuse-virt-manager03v2.png }}
 +
 +
 +Passez la page d'accueil de création de machine virtuelle
 +
 +
 +{{ opensuse:opensuse-virt-manager04v2.png }}
 +
 +
 +Si vous avez déjà un disque virtuel sélectionnez le second choix.
 +Laissez tel quel pour créer un disque dur virtuel.
 +
 +
 +{{ opensuse:opensuse-virt-manager05v2.png }}
 +
 +
 +Choisissez au plus proche, le type de système d'exploitation que vous souhaitez installer.
 +
 +{{ opensuse:opensuse-virt-manager06v2.png }}
 +
 +Petit récapitulatif de la configuration "matérielle" de la machine virtuelle que vous allez créer.
 +Quelques modifications doivent encore être apportées.
 +
 +{{ opensuse:opensuse-virt-manager07v2.png }}
 +
 +Dans la section: Name of Virtual Machine
 +Editez le nom de la machine (à faire avant de créer le disque dur virtuel...)
 +
 +{{ opensuse:opensuse-virt-manager17v2.png }}
 +
 +
 +Dans la section: Operating System Intallation 
 +Vous sélectionnez le média d'installation
 +
 +{{ opensuse:opensuse-virt-manager08v2.png }}
 +
 +
 +
 +Installation à partir du lecteur cd/dvd de votre pc ou d'un iso
 +
 +{{ opensuse:opensuse-virt-manager09v2.png }}
 +
 +
 +
 +Dans la section: Network Adapter
 +Ajoutez ou modifiez, le pilote, la mac, ou le lien de votre carte réseau virtuelle
 +(virtio par défaut pour Linux et plus performant que realtaek ou e1000)
 +
 +{{ opensuse:opensuse-virt-manager10v2.png }}
 +
 +
 +Les bridges (br0) permettent de dédier une carte réseau à une vm.
 +
 +{{ opensuse:opensuse-virt-manager11v2.png }}
 +
 +
 +
 +Dans la section: Disks
 +Ajoutez ou modifiez, la taille, la source et le format de votre disque dur virtuel
 +
 +{{ opensuse:opensuse-virt-manager13.png?497  }}
 +
 +
 +L'édition d'un disque dur virtuel
 +
 +{{ opensuse:opensuse-virt-manager14.png?497  }}
 +
 +
 +Dans la section: Graphics and Keyboard
 +Modifiez le pilote graphique et le clavier.
 +(vesa vga ne semble basculer automatiquement vers cirrus logic lors d'une installation)
 +
 +{{ opensuse:opensuse-virt-manager15v2.png }}
 +
 +
 +
 +Dans la section: Hardware
 +Configurez la quantitée de ram dédiée à la machine virtuel ainsi que le nombre de processeurs virtuels.
 +
 +{{ opensuse:opensuse-virt-manager16v2.png }}
 +
 +
 +
 +
 +Dernier récapitulatif avant installation
 +
 +{{ opensuse:opensuse-virt-manager18v2.png?650 }}
 +
 +
 +Quelques instants pour la création de la machine virtuelle...
 +
 +
 +{{ opensuse:opensuse-virt-manager19.png }}
 +
 +----
 +==== Installation: ====
 +
 +<note tip>Pour détacher le pointeur de la souris de la fenêtre de la machine virtuelle.
 +
 +Appuiez simultanément sur les touches **CTRL** et **ALT** 
 +</note>
 +
 +
 +La machine boot sur le dvd d'installation
 +
 +{{ opensuse:opensuse-virt-manager20.png?650 }}
 +
 +{{:opensuse:opensuse-virt-manager21.png?650;|}}
 +
 +La machine virtuelle s'affiche dans le manager de virt-manager
 +
 +
 +{{:opensuse:opensuse-virt-manager22.png?650;|}}
 +
 +Pour des raisons de performances, une partition d"échange swap n'est pas toujours conseillé pour une machine virutelle
 +
 +
 +{{:opensuse:opensuse-virt-manager24.png?650;|}}
 +
 +Opensuse 11.3 installé, après son premier boot
 +
 +//Il arrive que la souris ne fonctionne pas après l'installation, ajoutez une souris usb virtuelle//
 +{{:opensuse:opensuse-virt-manager26.png?650;|}}
 +
 +
 +----
 +==== Post installation: ====
 +
 +
 +Dans l'onglet Detail, vous pouvez modifier le matériel virtuel de la machine ainsi que quelques réglages.
 +
 +{{:opensuse:opensuse-virt-manager28.png?650;|}}
 +
 +
 +Quelques statistiques 
 +
 +{{:opensuse:opensuse-virt-manager30.png?650;|}}
 +
 +
 +Ajout d'un périphérique virtuel (une souris usb par example)
 +Necessite que la machine virtuelle soit éteinte
 +
 +
 +{{:opensuse:opensuse-virt-manager32.png|}}
 +{{:opensuse:opensuse-virt-manager33.png|}}
 +----
 +==== Administration distante: ====
 +virt-manager permet d'administrer une machine virtuelle à distance, juste à travers ssh
 +
 +{{ opensuse:opensuse-virt-manager42.png }}
 +
 +Une fois connecté...
 +
 +
 +{{ opensuse:opensuse-virt-manager43v2.png }}
 +{{ opensuse:opensuse-virt-manager44v2.png }}
 +
 +----
 +==== IOMMU: ====
 +
 +Ajout d'un périphérique physique sur une machine virtuelle. (IOMMU)
 +
 +
 +Cela nécessite: 
 +  * Un processeur compatible [[http://ark.intel.com/MySearch.aspx?VTD=true|vt-d]] ou **amd-v**
 +  * Un chipset compatible [[http://en.wikipedia.org/wiki/List_of...ore_2_chipsets|vt-d]] ou **amd-vi**
 +  * Surtout que le fabriquant ait activé la fonction **vt-d** ou **amd-vi** sur la carte mere.
 +
 +<note> Dans mon cas, asus ne l'a pas activé donc je n'ai malheureusement pas pu tester. (P5Q-Deluxe P5Q-Premium P5QL)</note>
 +
 +=== Identifier le périphérique: ===
 +
 +Cette manipulation n'est pas gérée par **virt-manager**, il faudra utiliser **virsh** en console
 +
 +Dans un terminal en root:
 +  # virsh nodedev-list --tree
 +
 +
 +La liste de votre matériel apparait
 +  
 +
 +  computer
 +   |
 +    +- net_lo_00_00_00_00_00_00
 +    +- pci_0000_00_00_0
 +    +- pci_0000_00_01_0
 +    |   |
 +    |   +- pci_0000_01_00_0
 +    |     
 +    +- pci_0000_00_1a_0
 +    |   |
 +    |   +- usb_usb3
 +    |       |
 +    |       +- usb_3_0_1_0
 +    |         
 +    +- pci_0000_00_1a_1
 +    |   |
 +    |   +- usb_usb4
 +    |       |
 +    |       +- usb_4_0_1_0
 +    |         
 +    +- pci_0000_00_1a_7
 +    |   |
 +    |   +- usb_usb1
 +    |       |
 +    |       +- usb_1_0_1_0
 +    |         
 +    +- pci_0000_00_1b_0
 +    +- pci_0000_00_1c_0
 +    +- pci_0000_00_1c_5
 +    |   |
 +    |   +- pci_0000_02_00_0
 +    |       |
 +    |       +- net_eth0_00_22_15_15_26_e7
 +
 +Pour détacher la carte réseau eth0 il faut l'identifiant pci de cette dernière.
 +
 +Dans ce cas **pci_0000_02_00_0**
 +
 +
 +=== Détacher le périphérique: ===
 +
 +Cette manipulation n'est pas gérée par **virt-manager**, il faudra utiliser **virsh** en console
 +
 +Dans un terminal en root:
 +  # virsh nodedev-dettach pci_0000_02_00_0
 +  Device pci_0000_02_00_0 dettached
 +
 +=== Attacher le périphérique: ===
 +
 +La suite est gérée par **virt-manager**
 +
 +{{ opensuse:opensuse-virt-manager50.png }}
 +
 +
 +
 +Je vous invite à la lecture de ces articles si vous avez les moyens matériel de tester
 +
 +http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization/sect-Virtualization-PCding_a_PCI_device_to_a_host.html
 +
 +http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization/chap-Virtualization-PCI_passthrough.html
 +
 +----
 +=====Virsh la virtualisation en console=====
 +
 +
 +
 +
 +{{:opensuse:suselien.png|}}[[http://docs.redhat.com/docs/fr-FR/Red_Hat_Enterprise_Linux/5/html/Virtualization/ch-virt-task-virsh.html|Virsh]] est un outil en ligne de commande pour administrer et gérer ses machines virtuelles.
 +Il est tout à fait compatible avec le machine virtuelle créee ou lancée à l'aide de **virt-manager**. Son avantage est de permettre des réglages plus fins que **virt-manager**.
 +
 +<note warning>
 +Si xen est installé sur votre machine, **virsh** et **virt-install** peuvent s'embrouiller entre **xen** et **kvm/qem**. 
 +Il est conseillé dans ce cas de lancer **virsh** ou **virt-install** avec l'option
 +     
 +     -c qemu:///system
 +     
 +Example:
 +     # virsh -c qemu:///system list --all
 +     Id Name                 State
 +     ----------------------------------
 +     14 opensuse11           running     
 +
 +
 +</note>
 +
 +
 +----
 +
 +====Creez une machine virtuelle====
 +
 +<note> Pour éviter d'embrouiller ceux qui ont suivit la partie **virt-manager**, le même nom et les mêmes caractéristiques que pour la machine crée précedement vont etre utilisé.
 +Ceux ayant suivit la partie **virt-manager** peuvent sauter cette étape.</note>
 +
 +**virt-install** est l'outil de création de machine virtuelle.
 +
 +
 +Utilisation du prompt de **virt-install**:
 +
 +Dans un terminal en root:
 +    # virt-install --prompt
 +    What is the name of your virtual machine? opensuse11
 +    How much RAM should be allocated (in megabytes)? 1024
 +    What would you like to use as the disk (file path)? /var/lib/kvm/images/opensuse11/disk0.raw
 +    How large would you like the disk (/var/lib/kvm/images/opensuse11/disk0.raw) to be (in gigabytes)? 10
 +    This will overwrite the existing path '/var/lib/kvm/images/opensuse11/disk0.raw'
 +    Do you really want to use this disk (yes or no) yes
 +    What is the install CD-ROM/ISO or URL? /home/[...]/openSUSE-11.3-DVD-x86_64.iso
 +    C'est pas finit...
 +
 +**virt-install** en une ligne: 
 +
 +Dans un terminal en root: (un truc du genre)
 +    # virt-install -n opensuse11 -r 1024 --vcpus=2 -f URL-IMAGE-DISK.raw -s 10 
 +    -c URL-IMAGE-DVD.iso --vnc --noautoconsole --os-type linux  
 +    --os-variant opensuse11 --accelerate --network=bridge:br0 --hvm
 +
 +
 +
 +----
 +
 +====Administrez une machine virtuelle====
 +
 +Lister les machines virtuelles actives et inactives:
 +
 +Dans un terminal en root:
 +    # virsh list --all
 +     Id Name                 State
 +     ----------------------------------
 +     14 opensuse11           running
 +
 +
 +Démarrer une machine virtuelle:
 +
 +    # virsh start opensuse11
 +    Domain opensuse11 started
 +
 +
 +Eteindre une machine virtuelle:
 +
 +    # virsh shutdown opensuse11
 +    Domain opensuse11 is being shutdown
 +
 +Eteindre sauvagement une machine virtuelle :
 +
 +    # virsh destroy opensuse11
 +    Domain opensuse11 destroyed
 +
 +Mettre en veille une machine virtuelle:
 +
 +    # virsh suspend opensuse11
 +    Domain opensuse11 suspended
 +
 +Réveiller une machine virtuelle:
 +
 +    # virsh resume opensuse11
 +    Domain opensuse11 resumed
 +
 +----
 +
 +====Modifiez une machine virtuelle====
 +
 +
 +//la fonction **edit** de virsh reprend les commandes de l'éditeur **vi**//
 +
 +
 +Dans un terminal en root
 +    virsh edit opensuse11
 +
 +
 +
 +En modifiant la valeur **vram='9216'** vous modifiez la quantité de mémoire alouée à la carte vidéo virtuelle
 +
 +<file>
 +    <video>
 +    <model type='cirrus' vram='16384' heads='1'/>
 +    <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
 +    </video>
 +    
 +</file>
 +----
 +=====Spice l'avenir de la virtualisation  =====
 +
 +
 +{{:opensuse:suselien.png|}}**[[http://www.spicespace.org/|Spice]]** est encore en plein développement, mais semble utilisable et stable depuis la version 0.6. Projet **Redhat**, **Spice** a été intégré dans Fedora 14 avec le status experimental. La version 0.6.3 est la dernière en date, et la version 0.8, actuellement en dévelloppement, est prévue pour courant février.
 +
 +
 +<note tip> Le dépot [[https://build.opensuse.org/project/show?project=home%3Akraxel|home:kraxel/openSUSE_11.3]] propose la version 0.6.1.</note>
 +
 +Actuellement **spice** est un driver pour une nouvelle carte vidéo virtuelle, ainsi qu'un protocole (genre vnc en mieux) pour s'y connecter.
 +
 +Les points négatifs étant qu'actuellement le protocole n'est pas compatible avec **virt-manager**, il faut se contenter de **virsh**.
 +Il y a aussi le fait que **spice** necessite coté serveur, un system 64bits pour fonctionner car il est dépendant de [[http://fr.wikipedia.org/wiki/Atomicit%C3%A9_%28informatique%29|l'atomicité]] du x64 (it is dependent on 64-bit atomic operations).
 +
 +Dans l'avenir il est prévu que **spice** gère la lecture de video, la 3d, le réseau, le son... 
 +rien de tel qu'une vidéo **flash** éditée par **redhat** pour vous expliquer... 
 +http://www.redhat.com/v/swf/rhev/spice.html
 +
 +----
opensuse/opensuse-kvm.txt · Dernière modification: 2018/11/17 13:53 (modification externe)