mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 19:02:31 +00:00
Describe the GPU and Coral assistants as the scripts run them
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Avant de commencer",
|
||||
"drivers": "<strong>Préparez le Coral sur l’hôte</strong>. M.2 / PCIe nécessite le pilote hôte chargé ; USB nécessite l’accès au périphérique et les droits adaptés. Voir <hostLink>Installer Coral TPU sur l’hôte</hostLink>. L’environnement d’exécution doit être disponible dans le conteneur.",
|
||||
"drivers": "<strong>Préparez le périphérique Coral sur l’hôte</strong>. M.2 / PCIe nécessite le pilote hôte chargé ; USB nécessite l’accès au périphérique et les droits adaptés. Voir <hostLink>Installer Coral TPU sur l’hôte</hostLink>. Le script installe l’environnement d’exécution de l’application dans les conteneurs Debian/Ubuntu ; les autres distributions doivent le fournir séparément.",
|
||||
"driversCheck": "ls /dev/apex_* 2>/dev/null ; lsusb | grep -E '1a6e:089a|18d1:9302'",
|
||||
"container": "<strong>Un LXC existant</strong>, idéalement basé sur <strong>Debian / Ubuntu</strong> : l’installation utilise <code>apt-get</code>. Les <strong>conteneurs d’autres distributions</strong> peuvent choisir le <strong>mode passthrough uniquement</strong>, sans installation APT de <code>libedgetpu</code>. Utile si l’application inclut déjà cet environnement, comme l’image Docker Frigate.",
|
||||
"downtime": "<strong>Prévoyez une courte interruption</strong> du conteneur. Le script l’arrête pour modifier sa configuration puis le démarre pour installer l’environnement d’exécution. Ces modifications ne nécessitent pas de redémarrage de l’hôte."
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"gpuHint": {
|
||||
"title": "Suggestion facultative pour l’accès GPU",
|
||||
"body": "Si un GPU est détecté mais non configuré pour ce conteneur, le dialogue recommande <lxcGpuLink>Ajouter un GPU à LXC</lxcGpuLink> pour le décodage vidéo, par exemple Quick Sync, VA-API ou NVDEC. Continuer avec Coral uniquement : Oui poursuit ; Non quitte pour configurer d’abord le GPU."
|
||||
"body": "Si un GPU est détecté mais non configuré pour ce conteneur, un dialogue recommande <lxcGpuLink>Ajouter un GPU à LXC</lxcGpuLink> pour le décodage vidéo matériel, par exemple Quick Sync, VA-API ou NVENC. Il demande s’il faut continuer avec Coral uniquement : Oui poursuit la configuration du TPU ; Non quitte pour vous permettre de configurer d’abord le GPU."
|
||||
},
|
||||
"usb": {
|
||||
"title": "Configurer l’accès USB du LXC",
|
||||
@@ -55,7 +55,7 @@
|
||||
"pcie": {
|
||||
"title": "Configurer l’accès M.2 / PCIe du LXC",
|
||||
"body1": "Si un Coral M.2 / PCIe est détecté et que <code>/dev/apex_0</code> existe, le script utilise l’API Proxmox <code>dev</code> pour gérer cgroup2 dans les LXC privilégiés et non privilégiés :",
|
||||
"body2": "Si <code>/dev/apex_0</code> n’existe pas encore après <hostLink>Installer Coral sur l’hôte</hostLink>, le script utilise cgroup2 et un montage bind facultatif avec <code>create=file</code>. Cela ne crée pas à lui seul un périphérique fonctionnel :",
|
||||
"body2": "Si <code>/dev/apex_0</code> est absent après <hostLink>Installer Coral sur l’hôte</hostLink>, le script écrit un montage bind avec <code>create=file</code> et, uniquement lorsque le numéro majeur apex figure dans <code>/proc/devices</code>, une règle cgroup2 classique. Aucun des deux ne crée un périphérique fonctionnel :",
|
||||
"rebootTitle": "Redémarrez l'hôte d'abord si vous venez d'installer des pilotes Coral",
|
||||
"rebootBody": "Le montage de secours ne charge pas <code>apex</code> sur l’hôte. Chargez le pilote ou redémarrez après installation, puis vérifiez le périphérique. Relancez ensuite le script pour appliquer l’entrée moderne et redémarrez le conteneur."
|
||||
},
|
||||
@@ -92,7 +92,7 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Dépannage",
|
||||
"apexTitle": "LXC démarré, mais /dev/apex_0 absent",
|
||||
"apexBody": "Vérifiez le pilote hôte : <code>lsmod | grep apex</code>. S’il manque, essayez <code>modprobe apex</code> ou redémarrez après installation. Une fois <code>/dev/apex_0</code> présent sur l’hôte, vérifiez l’entrée LXC puis redémarrez avec <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"apexBody": "Vérifiez d’abord le pilote hôte : <code>lsmod | grep apex</code>. S’il manque, essayez <code>modprobe apex</code> ou redémarrez après l’installation du pilote. Une fois <code>/dev/apex_0</code> présent sur l’hôte, vérifiez l’entrée de périphérique LXC (relancez le script si seules les entrées de secours ont été écrites) puis redémarrez le conteneur avec <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"replugTitle": "Coral USB disparaît après reconnexion sur un autre port",
|
||||
"replugBody": "Vérifiez que le LXC monte <code>/dev/bus/usb</code> plutôt que le lien <code>/dev/coral</code>. Sa configuration doit contenir <code>lxc.mount.entry: /dev/bus/usb dev/bus/usb ...</code> sans dépendre directement de <code>/dev/coral</code>. Relancez le script si la configuration est ancienne.",
|
||||
"alpineTitle": "Alpine / Arch / RHEL / SUSE : environnement non installé",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"heading": "Étapes de la procédure",
|
||||
"detect": {
|
||||
"title": "Détecter les GPU et vérifier IOMMU",
|
||||
"body": "Vérifie IOMMU actif, pas seulement les paramètres. Après confirmation séparée, peut ajouter <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> avec <code>iommu=pt</code>. Choisit <code>/etc/kernel/cmdline</code> si un marqueur ZFS comme <code>root=ZFS=</code> existe, sinon <code>/etc/default/grub</code>. Cette heuristique ne prouve pas le chargeur utilisé. Redémarrez puis vérifiez les groupes réels.",
|
||||
"body": "Considère IOMMU comme actif uniquement si le noyau en cours a <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> et que des groupes IOMMU existent. Si le paramètre est déjà enregistré pour le prochain démarrage, il continue en mode redémarrage en attente ; sinon, une étape confirmée séparément peut l’ajouter avec <code>iommu=pt</code>. Son heuristique de fichier d’amorçage utilise <code>/etc/kernel/cmdline</code> lorsqu’un marqueur de racine ZFS comme <code>root=ZFS=</code> s’y trouve ; sinon, elle utilise <code>/etc/default/grub</code>. Cette heuristique ne prouve pas le chargeur d’amorçage réellement utilisé. Un IOMMU nouvellement configuré prend effet après redémarrage ; vérifiez ensuite les groupes réels.",
|
||||
"tipTitle": "Post-installation déjà configurée ?",
|
||||
"tipBody": "Si la <postLink>prise en charge VFIO IOMMU</postLink> est configurée et active dans le noyau, le contrôle passe. Un réglage prévu pour le prochain démarrage ne prouve pas son activation actuelle.",
|
||||
"imageAlt": "Liste des GPU détectés avec l'adresse du fournisseur et du PCI"
|
||||
@@ -58,7 +58,7 @@
|
||||
"<strong>Un seul GPU.</strong> La console locale peut perdre son affichage lorsque VFIO le réserve. Vérifiez d’abord l’accès SSH ou web depuis un autre ordinateur.",
|
||||
"<strong>Politique de réinitialisation AMD.</strong> Lit <code>/sys/bus/pci/devices/<pci>/reset_method</code>. APU ou carte dédiée sans FLR est <em>bloquée par la politique de l’assistant</em> ; un sous-type inconnu sans FLR exige confirmation. Cela ne prouve pas une impossibilité universelle.",
|
||||
"<strong>État D3cold.</strong> L’assistant bloque les cartes AMD signalant <code>D3cold</code> en raison du risque d’échec d’activation. Vérifiez alimentation et micrologiciel.",
|
||||
"<strong>Groupe IOMMU.</strong> Lit <code>/sys/kernel/iommu_groups/</code> et inclut <em>tous les membres sauf les ponts</em>, parfois des contrôleurs réseau ou de stockage. Vérifiez avant confirmation. Si IOMMU attend un redémarrage, seule la fonction GPU est initialement prévue ; contrôlez l’isolation après."
|
||||
"<strong>Analyse du groupe IOMMU.</strong> Lit <code>/sys/kernel/iommu_groups/</code> et inclut dans le plan de la VM <em>tous les membres sauf les ponts</em>, éventuellement des contrôleurs réseau ou de stockage. Le script ne les liste pas : vérifiez vous-même le groupe avant de confirmer. Si IOMMU attend un redémarrage, les groupes réels ne sont pas disponibles et le plan ne contient initialement que la fonction GPU sélectionnée ; vérifiez l’isolation après le redémarrage."
|
||||
],
|
||||
"audioIntro": "<strong>Audio associé.</strong> Deux cas selon l’emplacement du contrôleur :",
|
||||
"audioDgpu": "<strong>GPU dédié :</strong> l’audio HDMI occupe souvent la fonction <code>.1</code> du même emplacement PCI et est inclus si détecté. Si l’hôte l’utilisait, il en perd l’accès lors de la réservation à la VM.",
|
||||
@@ -75,7 +75,7 @@
|
||||
"items": [
|
||||
"<strong>GPU disponible.</strong> Continue sans retirer d’attribution.",
|
||||
"<strong>Attribué à une autre VM.</strong> Arrêtez d’abord la source. Vous pouvez <em>garder ses entrées et désactiver le démarrage automatique</em> ou <em>retirer les entrées en conservant le démarrage automatique</em>. Avec <code>vfio-pci</code> déjà actif et sans changement hôte, le transfert VM→VM peut éviter un redémarrage hôte.",
|
||||
"<strong>Utilisé par LXC.</strong> Pour les conteneurs ordinaires, <em>garder la configuration et désactiver le démarrage automatique</em> ou <em>retirer les périphériques et règles anciennes <code>lxc.cgroup2.devices.allow</code>/<code>lxc.mount.entry</code> en conservant le démarrage automatique</em>. OCI conserve la configuration, est arrêté sans démarrage automatique ; retirez son GPU dans Apps. La détection par famille peut inclure d’autres cartes."
|
||||
"<strong>GPU utilisé par LXC.</strong> Pour les conteneurs ordinaires, choisissez <em>garder la configuration GPU et désactiver le démarrage automatique</em> ou <em>retirer la configuration du périphérique GPU en conservant le démarrage automatique</em>. Le retrait supprime les entrées <code>devN</code> et, pour AMD/Intel, aussi les anciennes règles <code>/dev/dri</code> <code>lxc.mount.entry</code> et <code>lxc.cgroup2.devices.allow</code>. Les conteneurs OCI conservent leur configuration et sont arrêtés avec le démarrage automatique désactivé ; retirez leur GPU via OCI manager Apps. La détection des conflits se fait par famille de périphériques GPU et peut inclure d’autres cartes de cette famille."
|
||||
],
|
||||
"imageAlt": "Boîte de dialogue offrant de supprimer le GPU d'un LXC avant de l'assigner au VM",
|
||||
"smartTitle": "Vérifier l’audio associé au retrait du GPU",
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"summary": {
|
||||
"title": "Examiner le résumé de la confirmation",
|
||||
"body": "Vérifiez le plan final, surtout chaque membre IOMMU, et annulez s’il est incorrect. Empêche les changements principaux, sans annuler une activation IOMMU précédemment confirmée.",
|
||||
"body": "Vérifiez le plan final de l’hôte et de la VM, et annulez s’il est incorrect. Il affiche le groupe IOMMU et son nombre de périphériques, pas chaque membre : vérifiez donc le groupe au préalable. L’annulation empêche les changements principaux, sans annuler une modification de la configuration d’amorçage IOMMU confirmée séparément auparavant.",
|
||||
"imageAlt": "Résumé des modifications prévues sur hôte et VM"
|
||||
},
|
||||
"hostApply": {
|
||||
@@ -102,7 +102,7 @@
|
||||
"Écrit <code>/etc/modprobe.d/iommu_unsafe_interrupts.conf</code> et <code>kvm.conf</code> avec <code>allow_unsafe_interrupts=1</code> et <code>ignore_msrs=1</code>. Réglages du script, pas des exigences universelles Windows/macOS ; les interruptions non sûres réduisent la protection du remappage.",
|
||||
"<code>/etc/modprobe.d/blacklist.conf</code>: NVIDIA — <code>nouveau</code>/<code>lbm-nouveau</code>; AMD — <code>radeon</code> + <code>amdgpu</code>; Intel — <code>i915</code>. Ces règles globales au fabricant peuvent toucher d’autres cartes utilisant le même pilote. Le module <code>nvidia</code> est bloqué <strong>uniquement</strong> via <code>/etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf</code> lorsque <em>toutes</em> les NVIDIA de l’hôte sont réservées à VFIO.",
|
||||
"<code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> + <code>/etc/proxmenux/vfio-bind.bdfs</code> — <strong>NVIDIA seulement.</strong> Applique <code>ATTR'{'driver_override'}'=\"vfio-pci\"</code> au PCI ADD des BDF enregistrés, y compris les fonctions du groupe IOMMU concerné. Hors de ces groupes, <code>nvidia</code> peut rester actif. La politique BDF ne divise pas les groupes matériels.",
|
||||
"<strong>AMD seulement.</strong> Tente d’extraire la ROM de <code>/sys/bus/pci/.../rom</code> ou ACPI VFCT vers <code>/usr/share/kvm/vbios_<card>.bin</code>. Si réussi, utilise <code>romfile=</code>. Une ROM valide ne garantit pas l’initialisation GPU.",
|
||||
"<strong>AMD seulement.</strong> Tente d’extraire la ROM de <code>/sys/bus/pci/.../rom</code> ou ACPI VFCT vers <code>/usr/share/kvm/vbios_<vendor>_<device>.bin</code>. En cas de réussite, la VM utilise <code>romfile=</code>. Une extraction valide ne garantit pas la réussite de l’initialisation du GPU.",
|
||||
"<strong>NVIDIA seulement.</strong> Arrête et désactive <code>nvidia-persistenced</code>, <code>nvidia-powerd</code>, <code>nvidia-fabricmanager</code> seulement si toutes les NVIDIA sont réservées à VFIO. En usage mixte, conserve les services et <code>nvidia</code> pour les cartes natives.",
|
||||
"<code>update-initramfs -u -k all</code> — ne fonctionne que si l'un des éléments ci-dessus a réellement changé."
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Fonctionnement",
|
||||
"body": "Ajoute <code>dev<N></code> à <code>/etc/pve/lxc/<ctid>.conf</code> pour les périphériques <code>/dev/dri/*</code>, <code>/dev/kfd</code> ou <code>/dev/nvidia*</code> concernés. Démarre le conteneur, installe les paquets adaptés et aligne <code>video</code> et <code>render</code>. L’accélération exige matériel, bibliothèques et configuration d’application compatibles."
|
||||
"body": "Ajoute des entrées <code>dev<N></code> à <code>/etc/pve/lxc/<ctid>.conf</code> pour les nœuds <code>/dev/dri/*</code>, <code>/dev/kfd</code> ou <code>/dev/nvidia*</code> concernés. Démarre le conteneur, installe les paquets userspace de sa distribution et, pour Intel/AMD, aligne les groupes <code>video</code> et <code>render</code>. L’accélération des applications exige toujours matériel, bibliothèques et configuration d’application compatibles."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Partage LXC ou attribution directe à une VM",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"pickCt": {
|
||||
"title": "Choisir un conteneur LXC",
|
||||
"body": "Liste les LXC admissibles par ID et nom. Les conteneurs OCI utilisent Apps du gestionnaire OCI pour leurs périphériques. Le conteneur est arrêté pour configuration, démarré pour installation, puis retrouve normalement son état initial.",
|
||||
"body": "Liste les conteneurs LXC admissibles par ID et nom ; les conteneurs OCI sont exclus et utilisent OCI manager Apps pour leurs périphériques. Le conteneur est arrêté s’il est en cours d’exécution, démarré pour l’installation des pilotes, puis retrouve normalement son état initial (en marche/arrêté).",
|
||||
"imageAlt": "Sélection d’un conteneur LXC existant"
|
||||
},
|
||||
"selectGpu": {
|
||||
@@ -98,7 +98,7 @@
|
||||
},
|
||||
"applyConfig": {
|
||||
"title": "Appliquer les modifications de configuration LXC",
|
||||
"body1": "Arrête le conteneur et modifie <code>/etc/pve/lxc/<ctid>.conf</code>. Les entrées <code>dev<N></code> portent les GID choisis. Le mécanisme <code>dev:</code> remplace ici les règles manuelles <code>lxc.mount.entry</code>. Vérifiez configuration et droits.",
|
||||
"body1": "Arrête le conteneur s’il est en cours d’exécution et modifie <code>/etc/pve/lxc/<ctid>.conf</code>. Les entrées numérotées <code>dev<N></code> portent le GID hôte de <code>video</code> ou <code>render</code>. Les lignes bind <code>lxc.mount.entry</code> existantes pour <code>/dev/dri</code> sont remplacées par des entrées <code>dev:</code> ; vérifiez la configuration et les droits obtenus.",
|
||||
"body2": "Exemple après Intel + NVIDIA sur le même conteneur:"
|
||||
},
|
||||
"installDrivers": {
|
||||
@@ -127,14 +127,14 @@
|
||||
},
|
||||
"alignGids": {
|
||||
"title": "Aligner les GID et restaurer l'état",
|
||||
"body1": "Lit les GID hôte de <code>video</code> et <code>render</code>, avec 44/104 comme valeurs de secours, puis adapte <code>/etc/group</code> dans le conteneur. <code>video:44</code> et <code>render:104</code> sont des exemples. Vérifiez les groupes de l’application et les droits effectifs.",
|
||||
"body1": "Pour Intel/AMD, lit les GID hôte de <code>video</code> et <code>render</code>, avec 44/104 uniquement comme valeurs de secours, puis modifie <code>/etc/group</code> dans le conteneur pour qu’ils correspondent ; les exécutions NVIDIA seul sautent cette étape. Des entrées comme <code>video:44</code> et <code>render:104</code> sont des exemples, pas des ID universels. Vérifiez l’appartenance de l’application aux groupes et les droits effectifs sur les périphériques.",
|
||||
"body2": "À la fin normale, un conteneur initialement arrêté est de nouveau arrêté ; un conteneur actif reste actif. En cas d’échec de démarrage ou d’installation, vérifiez l’état final et le journal."
|
||||
}
|
||||
},
|
||||
"vendors": {
|
||||
"heading": "Notes par fabricant",
|
||||
"intelHeading": "Intel iGPU",
|
||||
"intelBody": "L’accélération Intel, dont <em>Quick Sync</em>, dépend de la génération, des codecs et de l’application. Partage les nœuds existants comme <code>/dev/dri/card0</code> et <code>/dev/dri/renderD128</code>, dont les numéros peuvent varier. Le pilote natif de l’hôte, par exemple <code>i915</code>, doit les fournir.",
|
||||
"intelBody": "L’accélération multimédia Intel, dont <em>Quick Sync</em>, dépend de la génération du GPU, des codecs et de la configuration de l’application. Le script partage ceux de <code>/dev/dri/card0</code>, <code>card1</code>, <code>renderD128</code> et <code>renderD129</code> qui existent ; les autres numéros de nœud ne sont pas ajoutés. L’hôte doit déjà les fournir via son pilote natif, par exemple <code>i915</code>.",
|
||||
"amdHeading": "AMD",
|
||||
"amdBody": "AMD utilise DRI pour Mesa/VA-API. Si <code>/dev/kfd</code> existe sur l’hôte, le partage aussi. ROCm/OpenCL exige matériel et bibliothèques compatibles ; partager le périphérique n’installe pas toute la pile ROCm.",
|
||||
"nvidiaHeading": "NVIDIA",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"title": "PCIe : modules gasket et apex via DKMS",
|
||||
"body": "Exécuté uniquement pour un Coral PCIe/M.2 détecté. Compile les modules pour le noyau actuellement exécuté sur l’hôte.",
|
||||
"items": [
|
||||
"<strong>Nettoyage.</strong> Si une installation précédente de <code>gasket-dkms</code> a laissé les paquets dans un état défectueux, le script tente de la purger avant compilation.",
|
||||
"<strong>Nettoyage.</strong> Tout paquet <code>gasket-dkms</code> existant est supprimé avant la recompilation ; s’il est dans un état de paquet défectueux, le script force sa suppression et sa purge.",
|
||||
"<strong>Dépendances de compilation :</strong> <code>git</code>, <code>dkms</code>, <code>build-essential</code>, <code>proxmox-headers-$(uname -r)</code>."
|
||||
],
|
||||
"cloneIntro": "<strong>Clone les sources du pilote.</strong> Préfère <feranickLink>feranick/gasket-driver</feranickLink>, sinon utilise <googleLink>google/gasket-driver</googleLink>. La compilation dépend de la compatibilité du noyau. Les sources Google reçoivent ces correctifs selon la version :",
|
||||
@@ -132,7 +132,7 @@
|
||||
"Purge <code>gasket-dkms</code>, <code>libedgetpu1-std</code> et <code>libedgetpu1-max</code>, puis exécute <code>apt-get autoremove --purge</code>.",
|
||||
"Supprime <code>/etc/udev/rules.d/99-coral-apex.rules</code> et restaure le groupe par défaut de <code>60-gasket-dkms.rules</code> si ce fichier existe encore.",
|
||||
"Vérifie les membres supplémentaires de <code>apex</code>. <strong>Si la liste est vide</strong>, tente de supprimer le groupe ; sinon conserve <code>apex</code> et liste ses membres. Ce n’est pas une vérification complète des utilisateurs dont c’est le groupe principal.",
|
||||
"Supprime les anciens dépôts dont <code>/etc/apt/sources.list.d/coral-edgetpu.list</code> et les trousseaux nommés <code>coral-edgetpu-archive-keyring.gpg</code>. Le trousseau actuel /etc/apt/keyrings/coral-edgetpu.gpg reste présent.",
|
||||
"Supprime la liste de dépôts <code>/etc/apt/sources.list.d/coral-edgetpu.list</code>, l’ancien <code>coral-cloud.list</code> et les anciens trousseaux nommés <code>coral-edgetpu-archive-keyring.gpg</code>. Le trousseau actuel <code>/etc/apt/keyrings/coral-edgetpu.gpg</code> n’est pas supprimé par cette séquence.",
|
||||
"Propose un redémarrage <strong>seulement si PCIe était installé</strong> pour retirer les modules encore actifs. USB seul ne nécessite pas de redémarrage."
|
||||
],
|
||||
"lxcWarnTitle": "Récipients LXC avec passage apex",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Fonctionnement",
|
||||
"body": "Détecte le GPU et propose des branches maintenues incluant son ID PCI. Bloque <code>nouveau</code>, télécharge l’installateur officiel <code>.run</code>, utilise DKMS et installe <code>nvidia-persistenced</code> avec les règles udev ; correctif NVENC facultatif. La compilation vérifie le noyau actuel sans garantir toutes les applications. Les LXC NVIDIA peuvent recevoir des bibliothèques correspondantes."
|
||||
"body": "ProxMenux détecte le GPU et propose des branches NVIDIA maintenues incluant son ID PCI. Il bloque <code>nouveau</code>, télécharge l’installateur officiel <code>.run</code>, utilise DKMS, installe <code>nvidia-persistenced</code>, les règles udev et le NVIDIA Container Toolkit, et propose un correctif NVENC facultatif. Les vérifications de compilation portent sur le noyau en cours ; une compilation réussie ne garantit pas que toutes les applications fonctionnent. Les LXC NVIDIA existants se voient proposer une mise à jour des bibliothèques userspace, de version correspondante sauf sous Arch."
|
||||
},
|
||||
"who": {
|
||||
"heading": "C'est pour qui ?",
|
||||
@@ -89,7 +89,7 @@
|
||||
},
|
||||
"reboot": {
|
||||
"title": "Redémarrer",
|
||||
"body": "Reconstruit <code>initramfs</code> pour tous les noyaux et propose un redémarrage. <strong>Prévoyez ce redémarrage</strong> pour vérifier modules et configuration nouveau au démarrage, même si le pilote répond déjà."
|
||||
"body": "Après l’installation du pilote, le script reconstruit <code>initramfs</code> pour tous les noyaux ; sa dernière étape propose un redémarrage. <strong>Prévoyez ce redémarrage</strong> pour vérifier la configuration persistante des modules et la configuration nouveau lors d’un nouveau démarrage, même si le nouveau pilote répond déjà avant le redémarrage."
|
||||
}
|
||||
},
|
||||
"reinstallUninstall": {
|
||||
@@ -102,8 +102,8 @@
|
||||
"uninstallHeading": "Désinstaller — ce qui est enlevé",
|
||||
"uninstallIntro": "Après confirmation Oui/Non, retire les composants suivants :",
|
||||
"uninstallItems": [
|
||||
"Exécute <code>nvidia-uninstall --silent</code> pour l’installation <code>.run</code>, arrête et désactive <code>nvidia-persistenced</code> et <code>nvidia-powerd</code>, puis tente de décharger <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> et <code>nvidia</code>. Les applications LXC NVIDIA sont affectées ; des clients actifs peuvent empêcher le déchargement.",
|
||||
"Exécute <code>apt purge</code> sur <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> et <code>libcudnn*</code>, supprime l'arborescence des sources DKMS et le cache d'installation <code>/opt/nvidia</code> .run.",
|
||||
"Arrête et désactive <code>nvidia-persistenced</code> et <code>nvidia-powerd</code>, tente de décharger <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> et <code>nvidia</code>, puis exécute <code>nvidia-uninstall --silent</code> pour l’installation <code>.run</code>. Les charges de travail LXC dépendant de NVIDIA sont affectées ; des clients actifs peuvent empêcher le déchargement.",
|
||||
"Exécute <code>apt purge</code> sur <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> et <code>libcudnn*</code>, supprime l'arborescence des sources DKMS et les dossiers <code>nvidia-persistenced</code> et <code>nvidia-patch</code> sous <code>/opt/nvidia</code>.",
|
||||
"Supprime la configuration de chargement des modules (<code>/etc/modules-load.d/nvidia-vfio.conf</code>) et les entrées de liste noire de nouveau gérées par ProxMenux. Les anciens fichiers ProxMenux de liste noire à deux lignes sont également migrés puis supprimés. Les fichiers modifiés ou indépendants de l’administrateur sont conservés.",
|
||||
"Retire <code>/etc/udev/rules.d/70-nvidia.rules</code> et marque NVENC <em>removed</em> dans le registre des installations gérées ; aucun fichier d’état séparé.",
|
||||
"Reconstruit <code>initramfs</code> pour tous les noyaux, exécute <code>proxmox-boot-tool refresh</code> selon l’amorçage et propose un redémarrage."
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
},
|
||||
{
|
||||
"situation": "Je veux retirer toutes les affectations de ce GPU.",
|
||||
"use": "Le mode LXC rend le GPU au pilote hôte ; retirez les affectations des invités via les choix de conflit correspondants. Le GPU reste associé à un pilote."
|
||||
"use": "Le mode LXC rend le GPU au pilote hôte ; la politique de conflit VM peut retirer les entrées hostpci, mais les entrées de périphérique LXC doivent être retirées séparément. Le GPU reste associé à un pilote."
|
||||
}
|
||||
]
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Avant de commencer",
|
||||
"assigned": "<strong>Un GPU déjà attribué</strong> à une VM via VFIO ou à un LXC. Pour la première affectation, utilisez Ajouter un GPU à VM / LXC.",
|
||||
"iommu": "<strong>IOMMU doit être actif sur l’hôte</strong> pour passer <em>au</em> mode VM. Firmware et noyau doivent le permettre ; les paramètres explicites ne sont pas toujours nécessaires. Si besoin, le script tente <code>intel_iommu=on iommu=pt</code> ou <code>amd_iommu=on</code> selon le système d’amorçage, avec <code>proxmox-boot-tool refresh</code> ou <code>update-grub</code>. Vérifiez les avertissements et redémarrez si demandé.",
|
||||
"iommu": "<strong>IOMMU doit être actif sur l’hôte</strong> pour passer <em>au</em> mode VM. Les réglages du firmware et la prise en charge par le noyau comptent tous les deux. Si <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> manque dans le noyau en cours, le script l’ajoute avec <code>iommu=pt</code> à <code>/etc/kernel/cmdline</code> (marqueur de racine ZFS) ou à <code>/etc/default/grub</code>, puis exécute <code>proxmox-boot-tool refresh</code> ou <code>update-grub</code>. Vérifiez les éventuels avertissements et redémarrez si demandé.",
|
||||
"iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1",
|
||||
"reboot": "<strong>Prévoyez un redémarrage.</strong> Les changements persistants de pilote et d’amorçage peuvent nécessiter de reconstruire initramfs puis de redémarrer. Le script le demande à la fin.",
|
||||
"knowList": "<strong>Identifiez les VM et LXC utilisant le GPU.</strong> Le script détecte les références et demande quoi faire pour chaque invité ; connaître la liste facilite la vérification."
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Tous les GPU ne sont pas sûrs de passer à un VM",
|
||||
"body": "Le script bloque le mode VM pour certains identifiants, dont <code>8086:5a84</code> et <code>8086:5a85</code>, selon sa politique de compatibilité. Une correspondance déclenche un avertissement. Cette liste n’empêche pas de passer <em>au</em> mode LXC ; d’autres contrôles restent possibles."
|
||||
"body": "Le script bloque le mode VM pour les identifiants de périphérique <code>8086:5a84</code> et <code>8086:5a85</code> selon sa politique de compatibilité. Si un GPU sélectionné correspond, il interrompt le passage en mode VM et revient à la sélection du GPU, ou quitte s’il s’agit du seul GPU. Cette liste de blocage n’empêche pas de passer <em>au</em> mode LXC ; d’autres contrôles peuvent encore s’appliquer."
|
||||
},
|
||||
"running": {
|
||||
"heading": "Exécuter le script",
|
||||
@@ -85,7 +85,7 @@
|
||||
"intro": "Basé sur le mode actuel, le script propose le contraire comme cible:",
|
||||
"items": [
|
||||
"<strong>VM → LXC :</strong> retire l’affectation à <code>vfio-pci</code> pour permettre au pilote natif (<code>nvidia</code>, <code>amdgpu</code>, <code>i915</code>) de prendre en charge le GPU. Pour NVIDIA, supprime les entrées BDF correspondantes de <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> au prochain démarrage.",
|
||||
"<strong>LXC → VM :</strong> prépare l’affectation à <code>vfio-pci</code>. AMD / Intel bloque le pilote natif et utilise <code>options vfio-pci ids=…</code>. Pour NVIDIA, <code>nvidia</code> n’est <strong>pas</strong> bloqué globalement : les règles BDF appliquent <code>driver_override=vfio-pci</code> aux périphériques des groupes IOMMU concernés. Les GPU hors de ces groupes peuvent conserver <code>nvidia</code>. Vérifiez chaque membre."
|
||||
"<strong>LXC → VM :</strong> prépare l’affectation à <code>vfio-pci</code>. AMD / Intel bloquent le pilote natif et utilisent <code>options vfio-pci ids=…</code>. Pour NVIDIA, <code>nvidia</code> n’est bloqué globalement que si chaque GPU NVIDIA de l’hôte est en VFIO ; sinon, des règles par BDF appliquent <code>driver_override=vfio-pci</code> aux périphériques des groupes IOMMU concernés, et les GPU NVIDIA hors de ces groupes conservent <code>nvidia</code>. Vérifiez chaque membre du groupe avant de basculer."
|
||||
],
|
||||
"outro": "Confirmez la direction ou annulez."
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user