<divclass="col-main cell cell--auto"><!-- start custom main top snippet --><divid="results-container"class="search-result js-search-result"></div><!-- end custom main top snippet -->
<articleitemscopeitemtype="http://schema.org/Article"><divclass="article__header"><header><h1style="color:Tomato;">Archlinux Installer KVM QEMU + VMM + Pont réseau</h1></header></div><metaitemprop="headline"content="Archlinux Installer KVM QEMU + VMM + Pont réseau"><divclass="article__info clearfix"><ulclass="left-col menu"><li>
<p><strong>KVM</strong> est une bifurcation de <strong>QEMU</strong>. Le code KVM est modifié pour prendre en charge l’accélération matérielle lorsqu’elle est disponible (même architecture pour la VM hôte et la VM invitée).</p>
<p>La plupart du temps, la <strong>QEMU</strong> est utilisée pour émuler une autre architecture (par exemple, émuler ARM/Power arch. en utilisant un processeur x86. Exemple : faire tourner une image RaspberryPI qui fonctionne sur ARM dans un ordinateur équipé d’un processeur Intel)</p>
<p>Une différence entre les deux est que la <strong>QEMU</strong> fonctionne sur un processeur sans avoir besoin d’une extension de virtualisation matérielle (Intel VT/VT-d, AMD-V) alors que la <strong>KVM</strong> l’utilise. Les extensions de virtualisation matérielle vous permettent d’accéder directement au matériel sur la machine physique. L’inconvénient est que la base de code <strong>KVM</strong> ne peut pas émuler une autre architecture.</p>
<p><u>Simuler une machine complète pour avoir son propre environnement d’exécution.</u><br/>
<em>Les avantages sont nombreux, isolations des processus, plusieurs environnements différents, etc…</em></p>
<p>La virtualisation matérielle est possible au moyen de ce que l’on appelle des hyperviseurs.<br/>
<strong>Il existe plusieurs types d’hyperviseurs, classés en 2 niveaux.</strong></p>
<ul>
<li>Le niveau 1 est dit “natif”.
<ul>
<li><strong>Natif</strong> car les instructions processeurs du système virtuelle sont directement transmis aux hardware. Il faut donc vérifier la compatibilité entre les systèmes virtualisés et les composants matérielles.</li>
</ul>
</li>
<li>Le niveau 2 est dit “hosted”.
<ul>
<li><strong>Hosted</strong> car la virtualisation s’effectue grâce à un logiciel installé sur un système d’exploitation. Donc la machine virtualisée n’interagit pas directement avec le Hardware.</li>
</ul>
</li>
</ul>
<p><strong><u>KVM est un hyperviseur de type 1</u></strong>, il est intégré de manière native à beaucoup de distribution basées sur le noyau Linux. KVM pour Kernel-based Virtual Machine car il transforme le noyau linux sur lequel il est exécuté en hyperviseur, proxmox est basé dessus.
Il en existe d’autres.</p>
<p>On utilise <strong>QEMU</strong> (QuickEmulator) pour interagir avec <strong>KVM</strong>.</p>
<ul>
<li><u>QEMU est de type 1 et 2</u>.
<ul>
<li>Il peut simuler un environnement pour une machine totalement différente de la votre, par exemple une py sur un PC. Dans ce cas la il transforme les exécutions de processeurs pour les rendre compatibles avec le hardware, donc la il est de <strong>type 2</strong>.</li>
<li>Mais quand il est utilise avec <strong>KVM</strong> dans ce cas la il fonctionne en <strong>type 1</strong> avec des performances bien meilleures.</li>
</ul>
</li>
</ul>
<blockquote>
<p>En clair <strong>Qemu sert à manager les machines virtuels, c’est un client</strong>.<br/>
Et la liaison entre Qemu et KVM est faite via l’API libvirt ( management du réseau, stockages, clavier, souris, etc )</p>
</blockquote>
<p><ahref="http://libvirt.org/">libvirt</a> est une bibliothèque permettant d’interagir avec différentes solutions de virtualisation (cet article s’intéressera uniquement à KVM/QEMU, mais Xen, VirtualBox et d’autres sont aussi possibles)<br/>
<ahref="http://virt-manager.org/">Virtual Machine Manager</a> est un ensemble d’applications permettant de gérer les machines virtuelles</p>
<p>En mode graphique :</p>
<ul>
<li><strong>virt-viewer</strong> est une interface graphique permettant de se connecter sur une machine virtuelle</li>
<li><strong>virt-manager</strong> est une interface graphique permettant de gérer les machines virtuelles</li>
</ul>
<p>En ligne de commande :</p>
<ul>
<li><strong>virt-clone</strong> permet de dupliquer une machine existante</li>
<li><strong>virt-convert</strong> permet de convertir l’image d’une machine</li>
<li><strong>virt-image</strong> permet de créer un nouvelle machine à partir d’une image</li>
<li><strong>virt-install</strong> permet de créer une nouvelle machine ou d’importer une machine déjà créé ultérieurement avec qemu ou qemu-kvm</li>
</ul>
<p><ahref="http://www.nongnu.org/qemu/">QEMU</a> est une <u>solution d'émulation et de virtualisation</u> (avec kqemu un pilote permettant d’optimiser l’émulation lorsque qu’elle concerne la même architecture).QEMU peut utiliser KVM lors de l’exécution d’une architecture cible identique à l’architecture hôte. Par exemple, lorsque vous exécutez qemu-system-x86 sur un processeur compatible x86, vous pouvez profiter de l’accélération KVM - ce qui vous donne un avantage pour votre hôte et votre système invité.</p>
<p><ahref="http://www.linux-kvm.org/page/Main_Page">KVM</a> (<em>Kernel-based Virtual Machine</em>) est une <u>solution de virtualisation</u>, pour les processeurs disposant des capacités nécessaires, et intégré au noyau linux.Il supporte les processeurs Intel et AMD récents (x86 et x86_64), PPC 440, PPC 970, S/390, ARM (Cortex A15, AArch64), et les processeurs MIPS32.</p>
<fontcolor="red"><b>Vous ne pouvez pas utiliser KVM en même temps que VirtualBox. Il faudra en effet fermer KVM pour utiliser VirtualBox et vice versa. Ou désactiver le support de la virtualisation processeur dans VirtualBox</b></font>
<pclass="warning">Contrairement à d’autres programmes de virtualisation tels que VirtualBox et VMware, QEMU ne fournit pas d’interface graphique pour gérer les machines virtuelles (autre que la fenêtre qui apparaît lors de l’exécution d’une machine virtuelle), ni un moyen de créer des machines virtuelles persistantes avec des paramètres sauvegardés. Tous les paramètres pour exécuter une machine virtuelle doivent être spécifiés sur la ligne de commande à chaque lancement, sauf si vous avez créé un script personnalisé pour démarrer votre (vos) machine(s) virtuelle(s).</p>
<h3id="prérequis">Prérequis</h3>
<p><strong>Support matériel</strong></p>
<p>KVM exige que le processeur de l’hôte de la machine virtuelle soit compatible avec la virtualisation (nommé VT-x pour les processeurs Intel et AMD-V pour les processeurs AMD). Vous pouvez vérifier si votre processeur prend en charge la virtualisation matérielle à l’aide de la commande suivante :</p>
<p>Si rien n’est affiché après l’exécution de la commande, alors votre processeur ne prend pas en charge la virtualisation matérielle et vous ne pourrez pas utiliser KVM.</p>
<blockquote>
<p><strong>Remarque</strong> : Vérifier l’activation de la prise en charge de la virtualisation dans le BIOS.</p>
</blockquote>
<p><strong>Support du noyau</strong></p>
<p>Les noyaux Arch Linux fournissent les modules de noyau appropriés pour supporter KVM et VIRTIO.</p>
<p><strong>Modules KVM</strong></p>
<p>Vous pouvez vérifier si les modules nécessaires (kvm et l’un de kvm_amd, kvm_intel) sont disponibles dans votre noyau avec la commande suivante (en supposant que votre noyau est compilé avec CONFIG_IKCONFIG_PROC) :</p>
<p><em>La para-virtualisation fournit un moyen de communication rapide et efficace permettant aux invités d’utiliser des appareils sur la machine hôte. KVM fournit des périphériques para-virtualisés aux machines virtuelles en utilisant l’API Virtio comme couche entre l’hyperviseur et l’invité.</em></p>
<p>Tous les périphériques virtio ont deux parties : le périphérique hôte et le pilote invité.</p>
<p>Utilisez la commande suivante pour vérifier si les modules nécessaires sont disponibles :</p>
<p><strong>Chargement des modules du noyau</strong></p>
<p>Les modules kvm et kvm-intel/kvm-amd doivent être chargés automatiquement, sinon, voir la page traitant des <ahref="https://wiki.archlinux.fr/Kernel_modules">modules du noyau</a>.</p>
<p><strong>Astuce</strong> : Si modprobing kvm_intel ou kvm_amd échoue mais que modprobing kvm réussit, (et lscpu prétend que l’accélération matérielle est supportée), vérifiez vos paramètres BIOS.</p>
</blockquote>
<h3id="installer-virt-manager-kvm-et-qemu">Installer Virt-Manager, KVM et QEMU</h3>
<ul>
<li><ahref="https://computingforgeeks.com/install-kvm-qemu-virt-manager-arch-manjar/">Install KVM, QEMU and Virt Manager on Arch Linux / Manjaro</a></li>
<li><ahref="https://discovery.endeavouros.com/applications/how-to-install-virt-manager-complete-edition/2021/09/">How to install Virt-Manager Complete Edition</a></li>
<li><ahref="https://discovery.endeavouros.com/applications/how-to-install-virt-manager-complete-edition/2021/09/">EndeavourOS - How to install Virt-Manager Complete Edition</a></li>
</ul>
<p><strong>Virt-Manager</strong> est une interface utilisateur graphique pour la bibliothèque qui fournit des services de gestion de machines virtuelles. L’interface Virt-manager permet à l’utilisateur de créer, supprimer et manipuler facilement les machines virtuelles sans passer par le terminal.<br/>
Virt-manager supporte principalement KVM mais il peut également fonctionner avec d’autres hyperviseurs tels que Xen et LXC.Il est livré avec les outils énumérés ci-dessous.</p>
<ul>
<li><strong>virt-install</strong> : Utilitaire en ligne de commande pour provisionner le système d’exploitation</li>
<li><strong>virt-viewer</strong> : L’interface utilisateur avec des fonctionnalités graphiques</li>
<li><strong>virt-clone</strong> : Outil en ligne de commande pour cloner des hôtes inactifs existants</li>
<li><strong>virt-xml</strong> : Outil en ligne de commande pour éditer facilement le XML du domaine libvirt en utilisant les options de ligne de commande de virt-install.</li>
<li><strong>virt-bootstrap</strong> : Outil de commande fournissant un moyen facile de configurer le système de fichiers racine pour les conteneurs basés sur libvirt.</li>
</ul>
<p><strong>KVM</strong><br/>
Les lettres KVM signifient Kernel-based Virtual Machines. KVM est une solution de virtualisation complète de Linux pour les processeurs d’architecture x86 qui possèdent l’extension de virtualisation (Intel VT et AMD-V).<br/>
KVM est un logiciel libre et open-source. Le support de KVM est inclus dans tous les nouveaux noyaux Linux par conception.</p>
<p><strong>QEMU</strong> est la version abrégée de Quick EMUlator. Il s’agit d’un émulateur gratuit à code source ouvert qui peut effectuer une virtualisation matérielle. Il émule le processeur de la machine hôte par le biais d’une traduction binaire dynamique. Cela fournit différents ensembles de modèles de matériel et de périphériques pour la machine hôte, ce qui lui permet d’exécuter une variété de systèmes invités.</p>
<p><strong>KVM</strong> peut être utilisé avec <strong>QEMU</strong>, ce qui permet d’exécuter les machines virtuelles à des vitesses proches des vitesses natives. Outre l’émulation matérielle, QEMU est capable d’émuler des processeurs de niveau utilisateur, ce qui permet aux applications compilées pour une architecture de fonctionner sur une autre.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>:: Il y a 3 fournisseurs disponibles pour qemu:
:: Dépôt extra
1) qemu-base 2) qemu-desktop 3) qemu-full
Entrer un nombre (par défaut, 1 est sélectionné):
avertissement: dnsmasq-2.87-1 est à jour -- réinstallation
résolution des dépendances…
recherche des conflits entre paquets…
:: openbsd-netcat et gnu-netcat sont en conflit. Supprimer gnu-netcat? [o/N] o
[...]
résolution des dépendances…
recherche des conflits entre paquets…
:: iptables-nft et iptables sont en conflit. Supprimer iptables? [o/N] o
:: iptables-nft et ebtables sont en conflit. Supprimer ebtables? [o/N] o
[...]
:: Procéder à l’installation? [O/n]
</code></pre></div></div>
<p>OPTION - Pour utiliser la commande <codeclass="language-plaintext highlighter-rouge">virt-builder</code> , il faut installer <strong>libguestfs</strong> sur Arch Linux / Manjaro</p>
<p>libguestfs est un ensemble d’outils utilisés pour accéder aux images disques des machines virtuelles (VM) et les modifier. Vous pouvez l’utiliser pour :</p>
<ul>
<li>visualiser et modifier des fichiers à l’intérieur des invités</li>
<li>effectuer des changements de script sur les VMs</li>
<li>surveiller les statistiques sur les disques utilisés/libres</li>
<li>créer des invités</li>
<li>P2V</li>
<li>V2V</li>
<li>effectuer des sauvegardes, etc.</li>
</ul>
<p>Nous voulons utiliser notre compte utilisateur Linux standard pour gérer KVM, configurons KVM pour l’autoriser.<br/>
Ouvrir le fichier <codeclass="language-plaintext highlighter-rouge">/etc/libvirt/libvirtd.conf</code> pour le modifier.</p>
<p>Ajouter l’utilisateur à <codeclass="language-plaintext highlighter-rouge">qemu.conf</code>. Sinon, QEMU donnera une erreur <codeclass="language-plaintext highlighter-rouge">permission refusée</code> en essayant d’accéder aux lecteurs locaux.</p>
<p>Faites défiler vers le bas ou cherchez <codeclass="language-plaintext highlighter-rouge">#user =</code> ou <codeclass="language-plaintext highlighter-rouge">#group =</code>.<br/>
Ensuite, décommenter les deux entrées et changer par votre nom d’utilisateur ou votre ID, puis enregistrer et quitter.<br/>
Une fois édité, il devrait ressembler à quelque chose comme ci-dessous.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code># Some examples of valid values are:
#
# user = "qemu" # A user named "qemu"
# user = "+0" # Super user (uid=0)
# user = "100" # A user named "100" or a user with uid=100
#
user = "yano"
# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
group = "yano"
</code></pre></div></div>
<p>Les modules <strong>kvm kvm-intel/kvm-amd</strong> sont chargés automatiquement…</p>
<p>Lancer, vérifier et activer libvirt (virt-manager)</p>
<p>Vous pouvez utiliser virsh pour initier une session hyperviseur :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>virsh --connect qemu:///system list --all # avec la commande list par exemple
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> ID Nom État
<p><em>libvirt et son interface graphique virt-manager peuvent créer et gérer des VMs utilisant différents hyperviseurs tels que KVM et Xen. Par défaut, toutes les images de VM créées via libvirt vont dans le répertoire /var/lib/libvirt/images. Cependant, cela peut ne pas être souhaitable dans certains cas. Par exemple, la partition de disque où réside /var/lib/libvirt/images peut avoir un espace libre limité. Ou vous pouvez vouloir stocker toutes les images VM dans un répertoire spécifique à des fins de gestion.</em></p>
<p>Les commandes virsh sont effectuées après passage en mode su</p>
<h4id="création-dun-pool-de-stockage-basé-sur-un-répertoire-avec-virsh">Création d’un pool de stockage basé sur un répertoire avec virsh</h4>
<p><strong>Créer la définition du pool de stockage</strong><br/>
Utilisez la commande <codeclass="language-plaintext highlighter-rouge">virsh pool-define-as</code> pour définir un nouveau pool de stockage. Deux options sont requises pour créer des pools de stockage basés sur des répertoires :</p>
<ul>
<li>Le nom du pool de stockage.<br/>
Cet exemple utilise le nom KVM. Toutes les autres commandes virsh utilisées dans cet exemple utilisent ce nom.</li>
<li>Le chemin d’accès à un répertoire de système de fichiers pour le stockage des fichiers d’images d’invités. Si ce répertoire n’existe pas, virsh le créera.<br/>
Cet exemple utilise le répertoire <codeclass="language-plaintext highlighter-rouge">/home/yano/virtuel/KVM</code></li>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> Nom État Démarrage automatique
--------------------------------------------
default actif Oui
KVM inactif no
</code></pre></div></div>
<p><strong>Démarrer le pool de stockage</strong><br/>
Utilisez la commande <codeclass="language-plaintext highlighter-rouge">virsh pool-start</code> pour activer un pool de stockage de répertoires, permettant ainsi aux volumes du pool d’être utilisés comme images de disques invités.</p>
<divclass="language-bash highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>virsh pool-start KVM <spanclass="c"># Pool KVM démarré</span>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> Nom État Démarrage automatique
------------------------------------------
default actif Oui
KVM actif no
</code></pre></div></div>
<p><strong>Activer le démarrage automatique</strong><br/>
Activez le démarrage automatique pour le pool de stockage. Le démarrage automatique configure le service libvirtd pour qu’il démarre le pool de stockage au démarrage du service.</p>
<divclass="language-bash highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>virsh pool-autostart KVM <spanclass="c"># Le pool KVM démarrera automatiquement</span>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> Nom État Démarrage automatique
------------------------------------------
default actif Oui
KVM actif Oui
</code></pre></div></div>
<p><strong>Vérifiez la configuration du pool de stockage</strong><br/>
Vérifiez que le pool de stockage a été créé correctement, que la taille est indiquée correctement et que l’état est indiqué comme étant en cours d’exécution. Si vous voulez que le pool soit accessible même si la machine virtuelle invitée n’est pas en cours d’exécution, assurez-vous que le paramètre Persistant est indiqué comme étant oui. Si vous voulez que le pool démarre automatiquement lorsque le service démarre, assurez-vous que Autostart est signalé comme étant oui.</p>
<p>Un pool de stockage basé sur un répertoire est maintenant disponible.</p>
<p><strong>Désactiver le démarrage automatique d’un pool</strong><br/>
On ne veut pas que le pool “default” démarre automatiquement</p>
<divclass="language-bash highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>virsh pool-autostart <spanclass="nt">--pool</span> default <spanclass="nt">--disable</span><spanclass="c"># Le pool default ne démarrera plus automatiquement</span>
<p>Note : si systemd est installé le fichier /etc/sysctl.conf n’existe plus et est remplacé par un dossier sysctl.d où mettre les *.conf nécessaires. On doit y créer un fichier (ex: /etc/sysctl.d/99-sysctl.conf). Dans ce cas, pour que la commande “sysctl -p” fonctionne il faut indiquer le fichier, par ex sysctl -p /etc/sysctl.d/fichier.conf. Ou avoir créé un lien symbolique /etc/sysctl.conf vers /etc/sysctl.d/99-sysctl.conf</p>
</blockquote>
<divclass="language-bash highlighter-rouge"><divclass="highlight"><preclass="highlight"><code><spanclass="c"># activation au démarrage</span>
<p>Cette section décrit la gestion d’un pont réseau en utilisant l’outil hérité <codeclass="language-plaintext highlighter-rouge">brctl</code> du paquetage <strong>bridge-utils</strong>.</p>
<pclass="warning">L’utilisation de brctl est dépréciée et est considérée comme obsolète.</p>
<p>Ajoutez un périphérique à un pont, par exemple eth0 :</p>
<pclass="info">L’ajout d’une interface à un pont fera perdre à l’interface son adresse IP existante. Si vous êtes connecté à distance via l’interface que vous avez l’intention d’ajouter au pont, vous perdrez votre connexion. Ce problème peut être contourné en programmant la création du pont au démarrage du système.</p>
<p>Dans cet exemple, nous créons un pont appelé br0 auquel sont connectés un adaptateur Ethernet réel eth0 et (en option) un périphérique tap0. Bien sûr, modifiez br0, eth0 et tap0 selon vos besoins.</p>
<p>Cet exemple crée un pont statiquement assigné appelé br0 auquel est connecté l’adaptateur Ethernet réel eth0. Modifiez Interface, BindsToInterfaces, Address, et Gateway selon vos besoins.</p>
## Ignore (R)STP and immediately activate the bridge
SkipForwardingDelay=yes
</code></pre></div></div>
<blockquote>
<p>Astuce : Si vous utilisez une IP statique, consultez les pages de manuel de netctl, et modifiez également <codeclass="language-plaintext highlighter-rouge">/etc/resolv.conf</code> si nécessaire.</p>
</blockquote>
<p>Vous pouvez ponter n’importe quelle combinaison de périphériques réseau en éditant l’option <codeclass="language-plaintext highlighter-rouge">BindsToInterfaces</code>.<br/>
Si l’un des périphériques pontés (par exemple eth0, tap0) a activé dhcpcd, arrêtez et désactivez le démon dhcpcd@eth0.service. Ou définissez IP=no dans les profils netctl.</p>
<p>Enfin, démarrez et activez votre <codeclass="language-plaintext highlighter-rouge">/etc/netctl/bridge</code>.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip a
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
<p>J’ai une «Connexion filaire 1» qui utilise l’interface Ethernet <strong>enp0s31f6</strong>. Mon système dispose également d’une interface XWireguard. Je vais configurer une interface de pont nommée br0 et ajouter (ou asservir) une interface à enp0s31f6.</p>
<p><strong>Créer un pont nommé br0 ou bridge-br0</strong></p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo nmcli con add ifname br0 type bridge con-name br0
sudo nmcli con add ifname br0 type bridge con-name bridge-br0
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>Connexion «br0» (06d83330-144a-4c53-a56a-cafeff52a9a0) ajoutée avec succès.
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo nmcli con add type bridge-slave ifname enp0s31f6 master br0
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>Connexion «bridge-slave-enp0s31f6» (7a5b8ba6-3a28-47d8-8894-5f164f3cd371) ajoutée avec succès.
</code></pre></div></div>
<p>br0</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>nmcli connection show
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip a
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 192.168.0.43/24 brd 192.168.0.255 scope global dynamic noprefixroute br0
valid_lft 42963sec preferred_lft 42963sec
inet6 2a01:e34:eebf:df0:b50d:862:e7a:25dc/64 scope global dynamic noprefixroute
valid_lft 86165sec preferred_lft 86165sec
inet6 fe80::bcd4:8ecb:cdd6:5d63/64 scope link noprefixroute
valid_lft forever preferred_lft forever
</code></pre></div></div>
<h4id="iproute2">iproute2</h4>
<p>Cette section décrit la gestion d’un pont réseau à l’aide de l’outil ip du paquetage <strong>iproute2</strong>, qui est requis par le paquetage meta de base.</p>
<p>Créez un nouveau pont et changez son état à up :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link add name bridge_name type bridge
ip link set dev bridge_name up
</code></pre></div></div>
<p>Pour ajouter une interface (par exemple eth0) dans le pont, son état doit être up :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link set eth0 up
</code></pre></div></div>
<p>L’ajout de l’interface dans le pont se fait en définissant son maître à bridge_name :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link set eth0 master bridge_name
</code></pre></div></div>
<p>Pour afficher les ponts existants et les interfaces associées, utilisez l’utilitaire bridge (qui fait également partie d’iproute2).</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>bridge link
</code></pre></div></div>
<p>Voici comment supprimer une interface d’un pont :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link set eth0 nomaster
</code></pre></div></div>
<p>L’interface sera toujours active, donc vous pouvez aussi vouloir la mettre hors service :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link set eth0 down
</code></pre></div></div>
<p>Pour supprimer un pont, utilisez la commande suivante :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip link delete bridge_name type bridge
</code></pre></div></div>
<p>Cela supprimera automatiquement toutes les interfaces du pont. Les interfaces esclaves resteront cependant actives, vous pouvez donc les mettre hors service par la suite.</p>
<p>Création d’un second pont réseau avec la connexion liée à la 4G via enp3s0f0<br/>
En mode su</p>
<divclass="language-shell highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>ip <spanclass="nb">link </span>add name br1 <spanclass="nb">type </span>bridge
ip <spanclass="nb">link set </span>dev br1 up
ip <spanclass="nb">link set </span>eth0 up <spanclass="c"># si interface non active</span>
ip <spanclass="nb">link set </span>enp3s0f0 master br1
</code></pre></div></div>
<p>Afficher les ponts existants</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>bridge link
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br1 state forwarding priority 32 cost 5
3: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>Bienvenue dans virsh, le terminal de virtualisation interactif.
Taper : « help » pour l'aide ou « help » avec la commande
« quit » pour quitter
virsh #
</code></pre></div></div>
<h3id="liste-vm">Liste VM</h3>
<p>Liste des machines (actives ou non)</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo virsh list --all
</code></pre></div></div>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code> ID Nom État
<p>Veuillez vous assurer d’avoir manjaro-xfce-18 ISO image dans le chemin <strong>/var/lib/libvirt/boot/</strong> ou tout autre chemin que vous avez donné dans la commande ci-dessus.</p>
<p>Décomposons la commande ci-dessus et voyons ce que chaque option fait.</p>
<ul>
<li><strong>-name</strong> : Cette option définit le nom du nom virtuel. Dans notre cas, le nom de VM est Ubuntu-16.04.</li>
<li><strong>-ram=512</strong> : Affecte 512 Mo de RAM à la VM.</li>
<li><strong>-vcpus=1</strong> : Indique le nombre de cœurs CPU dans la VM.</li>
<li><strong>-cpu host</strong> : Optimise les propriétés du CPU pour la VM en exposant la configuration du CPU de l’hôte à l’invité.</li>
<li><strong>-hvm</strong> : Demande la virtualisation complète du matériel.(Non Utilisé)</li>
<li><strong>–network</strong> : Réseau par défaut</li>
<li><strong>-disk path</strong> : L’emplacement pour sauvegarder le hdd et la taille de la machine virtuelle. Dans notre exemple, j’ai alloué une taille de hdd de 8 Go.</li>
<li><strong>-cdrom</strong> : L’emplacement de l’image ISO de l’installateur. Veuillez noter que vous devez avoir l’image ISO actuelle à cet endroit.</li>
<li><strong>-graphics vnc</strong> : Permet à la VNC d’accéder à la VM depuis un client distant.</li>
</ul>
<p>Le déroulement</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>WARNING No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.
WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
WARNING No console to launch for the guest, defaulting to --wait -1
Starting install...
Allocating 'manjaro-xfce-18-vm1' | 10 GB 00:00:00
Domain installation still in progress. Waiting for installation to complete.
</code></pre></div></div>
<blockquote>
<p><strong>ATTENTION!!!</strong><br/>
<em>Rien n’est apparu parce que vous avez lancé virt-install sur un terminal qui n’avait pas d’information d’affichage X disponible, donc il ne pouvait pas démarrer virt-viewer pour afficher la console de la machine virtuelle.<br/>
Éventuellement, l’installation de la VM sera terminée et la VM s’éteindra. A ce stade, virt-install redémarrera la VM et quittera elle-même. Vous pouvez également appuyer sur Ctrl+C pour arrêter l’attente de l’installation virt-install. Comme la VM est toujours en cours d’exécution, l’installation se poursuivra, mais la VM restera éteinte à la fin, plutôt que de redémarrer dans le système nouvellement installé.<br/>
Vous pouvez également utiliser virt-manager sur votre système local pour visualiser la console de la VM pendant l’installation, si virt-manager a la permission de gérer l’hyperviseur distant.</em></p>
<p>Si une <u>machine virtuelle est configurée avec libvirt</u>, elle peut être configurée avec <strong>virsh autostart</strong> ou via l’interface graphique du gestionnaire de virt (vmm, virt-manager) pour démarrer au démarrage de l’hôte en allant dans les <strong>Options de démarrage</strong> de la machine virtuelle et en sélectionnant <em>“Démarrer la machine virtuelle au démarrage de l’hôte”</em>.</p>
<h3id="sauvegarde-config-vm-xml">Sauvegarde config VM (xml)</h3>
<p>Sauvegarder la configuration de la machine virtuelle <strong>debian9</strong>, vous devez sortir du mode interactif avant de saisir</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>Domain 'win10' created from winten.xml
</code></pre></div></div>
<h3id="gestion-distante-via-vmm--ssh">Gestion distante via VMM + SSH</h3>
<p>Client test</p>
<p>La boîte de dialogue de l’interface graphique du gestionnaire de virt n’a pas la possibilité de spécifier un port ssh autre que par défaut ou la clé privée à utiliser lors de la connexion au serveur distant, mais cela se fait facilement en démarrant virt-manager avec le paramètre ‘-c’.</p>
<p>Dans l’exemple ci-dessus, nous nous connectons en tant que’myuser’ au port d’écoute ssh non par défaut de 2222, et utilisons la clé privée trouvée dans le répertoire courant du fichier’id_rsa’.</p>
<p>virt-manager devrait vous demander immédiatement la phrase de chiffrement protégeant la clé privée (ce n’est pas le mot de passe de l’utilisateur !), et une fois que vous l’aurez entré, vous verrez virt-manager comme si vous étiez assis sur l’hôte KVM localement.</p>
<p>Notez le numéro de port 5900. Installez n’importe quelle application client VNC.</p>
</blockquote>
<p>Pour ce guide, j’utiliserai TigerVnc. TigerVNC est disponible dans les dépôts par défaut d’Arch Linux. Pour l’installer sur des systèmes basés sur Arch, exécutez :</p>
<p>Commencez ensuite à installer la VM Manjaro comme vous le faites dans le système physique.</p>
<p>De même, vous pouvez configurer autant de machines virtuelles en fonction des spécifications matérielles du serveur.</p>
<p>Vous pouvez également utiliser l’utilitaire <strong>virt-viewer</strong> pour installer le système d’exploitation dans les machines invitées. virt-viewer est disponible dans la plupart des dépôts par défaut de la distribution Linux. Après avoir installé virt-viewer, exécutez la commande suivante pour établir l’accès VNC à la VM.</p>
<p>Les instantanés LVM ont pour but de faciliter le rétablissement d’une version antérieure de l’état des fichiers sur un volume logique. Les volumes LVM sont créés à partir d’un groupe de volumes qui représente la quantité totale d’espace disponible.<br/>
Avant de créer un instantané LVM, vous devez vous assurer qu’un espace disque suffisant est disponible dans le groupe de volumes.<br/>
Pour créer un instantané, la procédure est simple ; il suffit d’exécuter la commande</p>
<p>Pour créer un instantané fiable, veillez à arrêter préalablement la machine virtuelle (VM, Virtual Machine).</p>
<h4id="instantanés-via-libvirt---avantage">Instantanés via libvirt - Avantage</h4>
<p>KVM propose une méthode de substitution pour créer des instantanés via libvirt. Libvirt est l’interface d’administration de KVM. Créer des instantanés avec libvirt constitue une meilleure approche car il s’agit d’une solution native.<br/>
Libvirt prend un instantané de l’intégralité de la VM, contrairement aux instantanés LVM qui ne sauvegardent qu’un seul disque.</p>
<p>Pour créer un instantané libvirt, utilisez la commande <codeclass="language-plaintext highlighter-rouge">virsh snapshot-create</code><br/>
Cette commande repose sur un fichier XML qui contient la définition de la VM originale. La commande virsh lit le contenu de ce fichier pour identifier la VM d’origine (telle que spécifiée dans la section <codeclass="language-plaintext highlighter-rouge"><name></code> du fichier XML) et les disques à utiliser.</p>
<p>Le fichier XML peut être soit celui qui définit la VM originale, soit un fichier XML personnalisé ne contenant qu’une partie de la configuration de la VM. Vous pouvez ainsi créer un fichier XML qui ne contient que certains des disques utilisés par la VM. Utilisez par exemple la commande</p>
<p>pour créer un instantané appelé <strong>mondomaine-snap</strong> qui repose sur le fichier de configuration <strong>mondomaine.xml</strong>.</p>
<p>En termes de création d’instantanés KVM, le véritable avantage de la commande virsh tient au modificateur <codeclass="language-plaintext highlighter-rouge">--live</code><br/>
Cette option vous permet de prendre un instantané d’une VM en fonctionnement (« en ligne »).<br/>
Lorsque vous l’utilisez, testez systématiquement votre instantané ; en effet, certaines charges de travail n’acceptent pas à chaud les instantanés.<br/>
De même, ne perdez pas de vue qu’un instantané KVM sera plus volumineux car il intègre également l’image de la mémoire.</p>
<p>Une fois l’instantané KVM créé à l’aide de la commande virsh, vous pouvez revenir à celui-ci au moyen de la commande <codeclass="language-plaintext highlighter-rouge">snapshot-revert nom_vm</code></p>
<p>Par exemple, la commande <codeclass="language-plaintext highlighter-rouge">snapshot-revert mavm --current</code> rétablit le dernier instantané enregistré de la VM. Vous pouvez également spécifier le nom d’un instantané particulier à rétablir au moyen d’une commande telle que <codeclass="language-plaintext highlighter-rouge">virsh snapshot-revert mavm mavm-snapshot</code></p>
<p>Si la vieille méthode qui consiste à utiliser des volumes de stockage LVM fonctionne toujours, elle n’en nécessite pas moins l’arrêt de la VM au moment de créer l’instantané et ne tient pas non plus compte des métadonnées de cette VM. C’est pourquoi, même si LVM fonctionne encore dans les environnements KVM modernes, il est sans doute préférable de réaliser un instantané KVM avec la commande virsh de libvirt.</p>
<p>Ouvrez maintenant l’application “virt-manager” à partir de votre menu d’application.</p>
<p>Cliquez sur le menu <strong>“Edition -> Détails de la connexion”</strong> sur l’application virt-manager.<br/>
Sur l’onglet <strong>“Affichage”</strong> vous verrez que le virt-manager se connectera automatiquement à <codeclass="language-plaintext highlighter-rouge">"qemu:///system"</code><br/>
<imgsrc="/images/qemu-vmm01.png"alt=""/><br/>
virt-manager se connectera automatiquement à QEMU/KVM dans le système.</p>
<p>Allez dans l’onglet <strong>“Réseaux virtuels”</strong> et vous verrez la configuration réseau “par défaut”<br/>
<imgsrc="/images/qemu-vmm02.png"alt=""/></p>
<p>Préférences , aller dans <strong>“Edition -> Preferences”</strong> et activer <strong>Enable xml editing</strong><br/>
<imgsrc="/images/qemu-vmm02a.png"alt=""/></p>
<h3id="gestion-réseau">Gestion réseau</h3>
<p><strong>Créer et configurer une passerelle réseau pour KVM</strong><br/>
Le pont Linux, lorsqu’il est utilisé dans KVM, permet à une machine virtuelle d’accéder à un réseau et à des services externes en dehors de l’environnement virtuel.</p>
<p>Il existe différentes façons de configurer le Bridge Networking sous Linux pour une utilisation en KVM. Le réseau par défaut utilisé par une machine virtuelle lancée dans KVM est le réseau NAT. Avec le réseau NAT, un réseau virtuel est créé pour les machines invitées qui est ensuite mis en correspondance avec le réseau hôte pour fournir une connectivité internet.</p>
<p>Lorsque vous configurez et utilisez la mise en réseau pontée, les systèmes d’exploitation invités accèdent à un réseau externe connecté directement à la machine hôte. Un pont peut être créé soit à l’aide du <strong>gestionnaire de machines virtuelles</strong>, soit à l’aide de l’outil de ligne de commande <strong>virsh</strong>, soit en éditant directement des scripts réseau, soit en utilisant les outils de gestion de réseau Linux.</p>
<p><strong>utilisateur</strong> et <strong>groupe</strong> sont remplacés par ceux du dossier que l’on veut partager sur la machine hôte et supprimer le # en début de ligne.</p>
<p>Redémarrer le service libvirtd pour que ces modifications soient prises en compte:</p>
<p><em>Cela va permettre à la machine virtuelle d’écrire dans le dossier partagé avec l’identité de notre utilisateur plutôt qu’avec l’identité Libvirt Qemu paramétrée par défaut. Ainsi notre utilisateur aura accès aux fichiers créés par le serveur situé sur la VM et pourra les modifier sans souci.</em></p>
<p>Dans <strong>virt-manager</strong>, <strong>“Edition” -> “Détails de la machine virtuelle”</strong> et dans les informations de la machine (icône “Afficher les détails du matériel virtuel”) ,cliquer sur “Ajouter un matériel”, puis sur “Système de fichiers”.Modifier suivant le modèle ci-dessous.</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>sudo mount -a
</code></pre></div></div>
<blockquote>
<p><em>Le partage ne peut pas être monté et édité sur plusieurs hôtes en même temps. Assurez-vous donc de le démonter avant de le monter sur un autre hôte invité.</em></p>
</blockquote>
<h2id="annexe">Annexe</h2>
<h3id="arrêt-vm-avant-extinction-hôte">Arrêt VM avant extinction hôte</h3>
<p><em>paramètres du service libvirt-guests pour permettre l’arrêt gracieux des invités</em></p>
<ul>
<li><ahref="/2022/09/03/Qemu_KVM-libvirt-guests-arret-VM-en-douceur.html">Arrêt en douceur des machines virtuelles lorsque la machine hôte est bloquée, mise hors tension ou redémarrée</a></li>
</ul>
<h3id="vmm---plein-écran-ou-pas">VMM - Plein écran ou pas</h3>
<p>Pour quitter le mode fullscreen de virt-manager, il suffit de déplacer la souris en haut de l’écran et au centre. Une barre blanche permet de faire apparaître deux icônes.</p>
<p><imgsrc="/images/vmm-0002.png"alt=""/></p>
<p><imgsrc="/images/vmm-0003.png"alt=""/></p>
<h3id="cas-des-images-créées-via-qemu">Cas des images créées via qemu</h3>
<h4id="créer-image-via-qemu">Créer image via qemu</h4>
<li><strong>-f</strong> → format de KVM pour le fichier image, qcow2 est le format kvm par défaut, raw est compatible avec Virtualbox et VMware</li>
<li><strong>20G</strong> → Remplacer par la valeur souhaitée, ce sera la taille du disque dur virtuel</li>
</ul>
<h4id="booter-sur-une-iso-et-installer-los-via-kvm-dans-limage-précédemment-créée">Booter sur une ISO et installer l’OS via KVM dans l’image précédemment créée</h4>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>kvm -m 1024 -cdrom /CHEMIN_VERS_VOTRE_ISO -boot d /var/lib/libvirt/images/DOMAINE.img
</code></pre></div></div>
<ul>
<li><strong>-m 1024</strong> → La quantité de ram allouée</li>
<li><strong>-cdrom</strong> → spécifie le chemin vers votre ISO</li>
<li><strong>-boot d</strong> → spécifie sur quelle domaine booter, un système émulé s’appelle domaine, remplacer DOMAINE par un titre parlant par exemple DebianVM</li>
</ul>
<h4id="booter-simplement-sur-los-fraîchement-installé-directement-via-kvm">Booter simplement sur l’OS fraîchement installé directement via KVM</h4>
<p><strong>Attention</strong> en utilisant KVM directement et non avec <strong>libvirt</strong>, <u>les machines virtuelles ne seront pas listés avec virtmanager ou la commande</u> : <codeclass="language-plaintext highlighter-rouge">virsh list</code></p>
</blockquote>
<h4id="import-machine-créée-via-qemu-pour-gestion-avec-virt-manager--libvirt">Import machine créée via “qemu” pour gestion avec “virt-manager” libvirt</h4>
<p>Si vous avez déjà créé précédemment une machine virtuelle avec <strong>qemu</strong> vous pouvez importer cette machine virtuelle pour qu’elle soit gérée via <strong>virt-manager</strong> et par conséquent qu’elle utilise <strong>libvirt</strong>.</p>
<p>Par exemple, si vous avez une image qui se trouve dans <strong>/srv/vms/Fedora12.img</strong>, effectuez ces opérations:</p>
<li>Les options <em>–name</em>, <em>–ram</em> sont obligatoires.</li>
<li>Les options <em>–os-type</em> et <em>–os-variant</em> ne sont pas obligatoires mais permettent tout de même une meilleure gestion pour le démarrage et mémoire au boot.</li>
</ul>
<p>Pour les machines virtuelles Windows, c’est toujours aussi simple:</p>
<p>Aussitôt la génération de la configuration effectuée, la machine va démarrer. Elle apparait alors dans <strong>virt-manager</strong>.</p>
<h2id="lxc">LXC</h2>
<h3id="conteneurs-privilégiés-ou-non-privilégiés">Conteneurs privilégiés ou non privilégiés</h3>
<p><em>Les LXC peuvent être configurés pour fonctionner dans des configurations privilégiées ou non privilégiées.</em></p>
<p>En général, l’<u>exécution d'un conteneur non privilégié est considérée comme plus sûre</u> que l’exécution d’un conteneur privilégié, car les conteneurs non privilégiés ont un degré d’isolation accru en vertu de leur conception. L’élément clé est le mappage de l’UID racine dans le conteneur à un UID non racine sur l’hôte, ce qui rend plus difficile pour un piratage à l’intérieur du conteneur d’entraîner des conséquences sur le système hôte. En d’autres termes, si un attaquant parvient à s’échapper du conteneur, il devrait se retrouver avec des droits limités ou nuls sur l’hôte.</p>
<p>Les paquets du noyau Arch linux, <strong>linux-lts</strong> et <strong>linux-zen</strong> fournissent actuellement un support prêt à l’emploi pour les conteneurs non privilégiés. De même, avec le paquetage <strong>linux-hardened</strong>, les conteneurs non privilégiés ne sont disponibles que pour l’administrateur système ; avec des modifications supplémentaires de la configuration du noyau nécessaires, car les espaces de noms d’utilisateurs y sont désactivés par défaut pour les utilisateurs normaux.</p>
<p>Cet article contient des informations permettant aux utilisateurs d’exécuter l’un ou l’autre type de conteneur, mais des étapes supplémentaires peuvent être nécessaires pour utiliser les conteneurs non privilégiés.</p>
<p>Un exemple pour illustrer les conteneurs non privilégiés</p>
<p>Pour illustrer la puissance du mappage d’UID, considérez la sortie ci-dessous d’un conteneur non privilégié en cours d’exécution. Nous y voyons les processus conteneurisés appartenant à l’utilisateur root du conteneur dans la sortie de ps :</p>
<divclass="language-plaintext highlighter-rouge"><divclass="highlight"><preclass="highlight"><code>[root@unprivileged_container /]# ps -ef | head -n 5
Sur l'hôte, cependant, ces processus racine conteneurisés sont en fait exécutés sous l'utilisateur mappé (ID>100000), plutôt que sous l'utilisateur **root** réel de l'hôte :
En d'autres termes, mappez une plage de 65536 uids consécutifs, en partant de l'uid 0 côté conteneur, qui sera l'uid 100000 du point de vue de l'hôte, jusqu'à l'uid 65535 côté conteneur inclus, que l'hôte connaîtra comme l'uid 165535. Appliquez ce même mappage aux gids.
Créez `/etc/subuid` et `/etc/subgid` pour contenir le mappage des paires uid/gid conteneurisées pour chaque utilisateur qui pourra exécuter les conteneurs.
L'exemple ci-dessous est simplement pour les utilisateurs yann root (et l'unité système systemd) :
En outre, l'exécution de conteneurs non privilégiés en tant qu'utilisateur non privilégié ne fonctionne que si vous déléguez un cgroup à l'avance (le modèle de délégation cgroup2 applique cette restriction, pas liblxc). Utilisez la commande systemd suivante pour déléguer le cgroup (selon [LXC - Getting started : Creating unprivileged containers as a user](https://linuxcontainers.org/lxc/getting-started/#creating-unprivileged-containers-as-a-user)) :
Cela fonctionne de la même manière pour les autres commandes lxc.
Alternativement, déléguer les cgroups non privilégiés en créant une unité systemd (par Rootless Containers : Enabling CPU, CPUSET, and I/O delegation) :
<p><ahref="https://discuss.linuxcontainers.org/t/lxc-on-arch-linux-error-main-260-no-container-config-specified/13252">Lxc on Arch linux - error main: 260 No container config specified</a></p>
<hr/>
<p>Toujours dans ce même fichier de configuration, vous devrez remplacer votre fichier existant (ou similaire) :</p>
<p>lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536</p>
<p>Par quelque chose comme (ceci suppose que l’uid/gid de votre utilisateur est 1000/1000) :</p>
<p>lxc.id_map = u 0 100000 1000
lxc.id_map = g 0 100000 1000
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 101001 64535
lxc.id_map = g 1001 101001 64535</p>
<p>Ces mappages signifient donc que votre conteneur a 65536 uids et gids mappés, de 0 à 65535 dans le conteneur. Ceux-ci sont mappés aux identifiants d’hôtes 100000 à 165535 avec une exception, l’uid et le gid 1000 ne sont pas traduits. Cette astuce est nécessaire pour que votre utilisateur dans le conteneur puisse accéder à la socket X, à la socket pulseaudio et aux périphériques DRI/snd comme votre propre utilisateur le peut (cela nous évite beaucoup de configuration sur l’hôte).</p>
<p>LXC containers started by non-root</p>
<p>Assume that <ahref="https://wiki.debian.org/LXC#Unprivileged_container">preparation of unprivileged containers</a> has been done. LXC needs a CGroup directory that can be manipulated by LXC, which was traditionally prepared by libpam-cgfs. libpam-cgfs no longer works and becomes unnecessary in the unified hierarchy as 946170.</p>
<p>When lxc-start or lxc-execute is run for lxc (1:4.0.6-1), we can use them, for example, as</p>
<p>otherwise we get error message reported at <ahref="https://github.com/lxc/lxc/issues/3221">https://github.com/lxc/lxc/issues/3221</a>. The above call does not work reliably if you want to start the container in the background. You cannot simply omit the -F parameter. Start the container in the background with</p>
<li><ahref="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html-single/virtualization_administration_guide/index#masthead">Virtualization Administration Guide Red Hat</a></li>
<li><ahref="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html-single/getting_started_with_containers/index">Getting Started with Containers</a></li>
<li><ahref="https://zestedesavoir.com/billets/2403/installations-automatisees-de-machines-virtuelles-avec-libvirt/">Installations automatisées de machines virtuelles avec libvirt</a></li>
<li><ahref="https://www.cyberciti.biz/faq/how-to-add-network-bridge-with-nmcli-networkmanager-on-linux/">How to add network bridge with nmcli (NetworkManager) on Linux</a></li>
<li><ahref="https://www.zenzla.com/linux/1462-la-virtualisation-avec-kvm-libvirt-et-virt-manager.html">La virtualisation avec KVM, libvirt et virt-manager</a></li>
<divclass="article__section-navigator clearfix"><divclass="previous"><span>PRÉCÉDENT</span><ahref="/2022/10/22/Nginx_headers_SSL_HSTS_OCSP.html">Nginx headers,SSL,HSTS,OCSP</a></div><divclass="next"><span>SUIVANT</span><ahref="/2022/10/26/EndeavourOS-Chiffrement-LUKS-LVM.html">TEST VM EndeavourOS avec chiffrement complet du disque LVM sur LUKS</a></div></div></div>
</div>
<script>(function(){
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
$(function() {
var $this ,$scroll;
var $articleContent = $('.js-article-content');
var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
var scroll = hasSidebar ? '.js-page-main' : 'html, body';