mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 10:52:22 +00:00
Describe the GPU and Coral assistants as the scripts run them
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Antes de começar",
|
||||
"drivers": "<strong>Prepare o Coral no anfitrião</strong>. M.2 / PCIe exige o controlador carregado; USB exige acesso ao dispositivo e permissões adequadas. Consulte <hostLink>Instalar Coral TPU no anfitrião</hostLink>. O runtime da aplicação deve estar disponível no contentor.",
|
||||
"drivers": "<strong>Prepare o dispositivo Coral no anfitrião</strong>. M.2 / PCIe exige o controlador do anfitrião carregado; USB exige acesso ao dispositivo e permissões adequadas. Consulte <hostLink>Instalar Coral TPU no anfitrião</hostLink>. O script instala o runtime da aplicação em contentores Debian/Ubuntu; as outras distribuições têm de o disponibilizar separadamente.",
|
||||
"driversCheck": "ls /dev/apex_* 2>/dev/null ; lsusb | grep -E '1a6e:089a|18d1:9302'",
|
||||
"container": "<strong>Um LXC existente</strong>, de preferência baseado em <strong>Debian / Ubuntu</strong>: a instalação utiliza <code>apt-get</code>. Os <strong>contentores de outras distribuições</strong> podem usar o <strong>modo apenas de passagem direta</strong>, que omite a instalação APT de <code>libedgetpu</code>. É útil se a aplicação já incluir o runtime, como a imagem Docker Frigate.",
|
||||
"downtime": "<strong>Preveja uma breve interrupção</strong> do contentor. O script para-o para alterar a configuração e inicia-o para instalar o runtime. Estas alterações não exigem reiniciar o anfitrião."
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"gpuHint": {
|
||||
"title": "Sugestão opcional de acesso ao GPU",
|
||||
"body": "Se detetar um GPU não configurado para o contentor, recomenda <lxcGpuLink>Adicionar GPU ao LXC</lxcGpuLink> para descodificação de vídeo, como Quick Sync, VA-API ou NVDEC. Pergunta se pretende continuar apenas com Coral: Sim continua; Não sai para configurar primeiro o GPU."
|
||||
"body": "Se for detetado um GPU não configurado para este contentor, uma caixa de diálogo recomenda <lxcGpuLink>Adicionar GPU ao LXC</lxcGpuLink> para descodificação de vídeo por hardware, como Quick Sync, VA-API ou NVENC. Pergunta se pretende continuar apenas com Coral: Sim continua a configuração do TPU; Não sai para que possa configurar primeiro o GPU."
|
||||
},
|
||||
"usb": {
|
||||
"title": "Configurar acesso USB no LXC",
|
||||
@@ -55,7 +55,7 @@
|
||||
"pcie": {
|
||||
"title": "Configurar acesso M.2 / PCIe no LXC",
|
||||
"body1": "Se detetar Coral M.2 / PCIe e existir <code>/dev/apex_0</code>, utiliza a API Proxmox <code>dev</code> para gerir cgroup2 em LXC com e sem privilégios:",
|
||||
"body2": "Se <code>/dev/apex_0</code> ainda não existir após <hostLink>Instalar Coral no anfitrião</hostLink>, utiliza cgroup2 e um bind mount opcional com <code>create=file</code>. Isto não cria por si só um dispositivo funcional:",
|
||||
"body2": "Se <code>/dev/apex_0</code> estiver ausente após <hostLink>Instalar Coral no anfitrião</hostLink>, o script escreve um bind mount com <code>create=file</code> e, apenas quando o número major do apex consta de <code>/proc/devices</code>, uma regra cgroup2 clássica. Nenhum dos dois cria um dispositivo funcional:",
|
||||
"rebootTitle": "Reiniciar o host primeiro se você acabou de instalar os drivers Coral",
|
||||
"rebootBody": "A montagem alternativa não carrega <code>apex</code> no anfitrião. Carregue o controlador ou reinicie após a instalação e verifique o dispositivo. Execute novamente o script para aplicar a entrada moderna e reinicie o contentor."
|
||||
},
|
||||
@@ -92,7 +92,7 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Resolução de problemas",
|
||||
"apexTitle": "LXC iniciado, mas falta /dev/apex_0",
|
||||
"apexBody": "Verifique o controlador do anfitrião: <code>lsmod | grep apex</code>. Se faltar, tente <code>modprobe apex</code> ou reinicie após a instalação. Quando existir <code>/dev/apex_0</code> no anfitrião, verifique a entrada LXC e reinicie com <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"apexBody": "Verifique primeiro o controlador do anfitrião: <code>lsmod | grep apex</code>. Se faltar, tente <code>modprobe apex</code> ou reinicie após a instalação do controlador. Quando existir <code>/dev/apex_0</code> no anfitrião, verifique a entrada de dispositivo LXC (volte a executar o script se só foram escritas as entradas alternativas) e reinicie o contentor com <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"replugTitle": "Coral USB desaparece ao ligar noutra porta",
|
||||
"replugBody": "Confirme que o LXC monta <code>/dev/bus/usb</code> em vez da ligação <code>/dev/coral</code>. A configuração deve incluir <code>lxc.mount.entry: /dev/bus/usb dev/bus/usb ...</code> sem depender diretamente de <code>/dev/coral</code>. Execute novamente o script se a configuração for antiga.",
|
||||
"alpineTitle": "Alpine / Arch / RHEL / SUSE: runtime não instalado",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"heading": "Procedimento passo a passo",
|
||||
"detect": {
|
||||
"title": "Detectar GPUs e verificar IOMMU",
|
||||
"body": "Verifica IOMMU ativo, não só parâmetros. Com confirmação separada pode adicionar <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> com <code>iommu=pt</code>. Usa <code>/etc/kernel/cmdline</code> se houver marca ZFS como <code>root=ZFS=</code>, senão <code>/etc/default/grub</code>. É uma heurística, não prova do carregador. Reinicie para ativar e verifique os grupos reais.",
|
||||
"body": "Considera o IOMMU ativo apenas quando o kernel em execução tem <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> e existem grupos IOMMU. Se o parâmetro já estiver guardado para o próximo arranque, continua em modo de reinício pendente; caso contrário, um passo confirmado separadamente pode adicioná-lo com <code>iommu=pt</code>. A sua heurística de ficheiro de arranque utiliza <code>/etc/kernel/cmdline</code> quando aí existe uma marca de raiz ZFS como <code>root=ZFS=</code>; caso contrário, utiliza <code>/etc/default/grub</code>. Essa heurística não é prova do carregador de arranque real. O IOMMU recém-configurado entra em vigor após o reinício; verifique depois os grupos reais.",
|
||||
"tipTitle": "Já configurou a pós-instalação?",
|
||||
"tipBody": "Se o <postLink>suporte VFIO IOMMU</postLink> já estiver configurado e ativo no kernel, passa a verificação. Uma definição para o próximo arranque não prova que esteja ativo agora.",
|
||||
"imageAlt": "Lista de GPUs detectadas com fornecedor e endereço PCI"
|
||||
@@ -58,7 +58,7 @@
|
||||
"<strong>Uma só GPU.</strong> A consola local pode perder a imagem ao reservá-la para VFIO. Verifique antes o acesso SSH ou web de outro computador.",
|
||||
"<strong>Política de reset AMD.</strong> Lê <code>/sys/bus/pci/devices/<pci>/reset_method</code>. APU ou dedicada sem FLR fica <em>bloqueada pela política do assistente</em>; subtipo desconhecido sem FLR exige confirmação. Não prova impossibilidade universal.",
|
||||
"<strong>Estado D3cold.</strong> Bloqueia placas AMD que indicam <code>D3cold</code> pelo risco de falha na ativação. Verifique alimentação e firmware.",
|
||||
"<strong>Grupo IOMMU.</strong> Lê <code>/sys/kernel/iommu_groups/</code> e inclui <em>todos os membros exceto pontes</em>, mesmo controladores de rede ou discos. Verifique antes de confirmar. Se IOMMU aguardar reinício, planeia inicialmente só a função GPU; confirme o isolamento depois."
|
||||
"<strong>Análise do grupo IOMMU.</strong> Lê <code>/sys/kernel/iommu_groups/</code> e inclui no plano da VM <em>todos os membros exceto pontes</em>, possivelmente controladores de rede ou de armazenamento. O script não os lista, por isso verifique o grupo por si mesmo antes de confirmar. Se o IOMMU aguardar reinício, os grupos reais não estão disponíveis e o plano contém inicialmente só a função GPU selecionada; verifique o isolamento após o reinício."
|
||||
],
|
||||
"audioIntro": "<strong>Áudio associado.</strong> Dois casos consoante a localização do controlador:",
|
||||
"audioDgpu": "<strong>GPU dedicada:</strong> o áudio HDMI ocupa frequentemente a função <code>.1</code> da mesma ranhura PCI e é incluído se detetado. Se o anfitrião o usava, perde acesso ao reservá-lo à VM.",
|
||||
@@ -75,7 +75,7 @@
|
||||
"items": [
|
||||
"<strong>GPU disponível.</strong> Continua sem remover atribuições.",
|
||||
"<strong>Atribuída a outra VM.</strong> Pare primeiro a origem. Pode <em>manter as entradas e desativar o arranque automático</em> ou <em>removê-las mantendo o arranque automático</em>. Com <code>vfio-pci</code> já ativo e sem alterações necessárias no anfitrião, VM→VM pode evitar reiniciá-lo.",
|
||||
"<strong>Usada por LXC.</strong> Nos contentores normais escolha <em>manter a configuração e desativar o arranque automático</em> ou <em>remover dispositivos e regras antigas <code>lxc.cgroup2.devices.allow</code>/<code>lxc.mount.entry</code>, mantendo o arranque automático</em>. OCI conserva a configuração e é parado sem arranque automático; remova a GPU em Apps. A deteção por família pode abranger outras placas."
|
||||
"<strong>GPU usada por LXC.</strong> Nos contentores normais escolha <em>manter a configuração da GPU e desativar o arranque automático</em> ou <em>remover a configuração do dispositivo GPU, mantendo o arranque automático</em>. A remoção elimina as entradas <code>devN</code> e, em AMD/Intel, também as regras antigas <code>/dev/dri</code> <code>lxc.mount.entry</code> e <code>lxc.cgroup2.devices.allow</code>. Os contentores OCI conservam a configuração e são parados com o arranque automático desativado; remova a sua GPU através de OCI manager Apps. A deteção de conflitos é feita por família de dispositivos GPU e pode abranger outras placas dessa família."
|
||||
],
|
||||
"imageAlt": "Oferecendo diálogo para remover o GPU de um LXC antes de atribuí-lo ao VM",
|
||||
"smartTitle": "Rever áudio associado ao remover a GPU",
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"summary": {
|
||||
"title": "Rever o resumo da confirmação",
|
||||
"body": "Verifique o plano final, sobretudo cada membro IOMMU, e cancele se incorreto. Impede as alterações principais, mas não reverte uma ativação IOMMU confirmada anteriormente.",
|
||||
"body": "Verifique o plano final do anfitrião e da VM e cancele se estiver incorreto. Mostra o grupo IOMMU e o número dos seus dispositivos, não cada membro, por isso verifique o grupo antecipadamente. O cancelamento impede as alterações principais, mas não reverte uma alteração da configuração de arranque IOMMU confirmada separadamente antes.",
|
||||
"imageAlt": "Resumo das alterações previstas no anfitrião e VM"
|
||||
},
|
||||
"hostApply": {
|
||||
@@ -102,7 +102,7 @@
|
||||
"Escreve <code>/etc/modprobe.d/iommu_unsafe_interrupts.conf</code> e <code>kvm.conf</code> com <code>allow_unsafe_interrupts=1</code> e <code>ignore_msrs=1</code>. São definições do script, não requisitos universais Windows/macOS; interrupções inseguras reduzem a proteção do remapeamento.",
|
||||
"<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>. Estas regras por fabricante podem afetar outras placas com o mesmo controlador. O módulo <code>nvidia</code> é bloqueado <strong>apenas</strong> por <code>/etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf</code> quando <em>todas</em> as NVIDIA do anfitrião estão reservadas a VFIO.",
|
||||
"<code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> + <code>/etc/proxmenux/vfio-bind.bdfs</code> — <strong>Apenas NVIDIA.</strong> Aplica <code>ATTR'{'driver_override'}'=\"vfio-pci\"</code> no PCI ADD dos BDF registados, incluindo funções do grupo IOMMU afetado. Fora desses grupos pode manter-se <code>nvidia</code>. A política BDF não divide grupos IOMMU físicos.",
|
||||
"<strong>Apenas AMD.</strong> Tenta extrair ROM de <code>/sys/bus/pci/.../rom</code> ou ACPI VFCT para <code>/usr/share/kvm/vbios_<card>.bin</code>. Se conseguir, usa <code>romfile=</code>. Uma ROM válida não garante inicialização da GPU.",
|
||||
"<strong>Apenas AMD.</strong> Tenta extrair a ROM de <code>/sys/bus/pci/.../rom</code> ou ACPI VFCT para <code>/usr/share/kvm/vbios_<vendor>_<device>.bin</code>. Se conseguir, a VM usa <code>romfile=</code>. Uma extração válida não garante a inicialização bem-sucedida da GPU.",
|
||||
"<strong>Apenas NVIDIA.</strong> Para e desativa <code>nvidia-persistenced</code>, <code>nvidia-powerd</code>, <code>nvidia-fabricmanager</code> só quando todas as NVIDIA estão reservadas a VFIO. Em uso misto conserva os serviços e <code>nvidia</code> para as placas nativas.",
|
||||
"<code>update-initramfs -u -k all</code> — só é executado se alguma das acima referidas tiver realmente mudado."
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "O que faz",
|
||||
"body": "Adiciona <code>dev<N></code> a <code>/etc/pve/lxc/<ctid>.conf</code> para os dispositivos <code>/dev/dri/*</code>, <code>/dev/kfd</code> ou <code>/dev/nvidia*</code> aplicáveis. Inicia o contentor, instala pacotes adequados e alinha <code>video</code> e <code>render</code>. A aceleração exige hardware, bibliotecas e configuração da aplicação compatíveis."
|
||||
"body": "Adiciona entradas <code>dev<N></code> a <code>/etc/pve/lxc/<ctid>.conf</code> para os nós <code>/dev/dri/*</code>, <code>/dev/kfd</code> ou <code>/dev/nvidia*</code> aplicáveis. Inicia o contentor, instala pacotes userspace da sua distribuição e, para Intel/AMD, alinha os grupos <code>video</code> e <code>render</code>. A aceleração das aplicações continua a exigir hardware, bibliotecas e configuração da aplicação compatíveis."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Partilha LXC ou atribuição direta a uma VM",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"pickCt": {
|
||||
"title": "Escolha um contentor LXC",
|
||||
"body": "Lista os LXC elegíveis por ID e nome. Exclui OCI: os seus dispositivos gerem-se em Apps do gestor OCI. Para para configurar, inicia para instalar e normalmente recupera o estado inicial.",
|
||||
"body": "Lista os contentores LXC elegíveis por ID e nome; os contentores OCI são excluídos e utilizam OCI manager Apps para os dispositivos. O contentor é parado se estiver em execução, iniciado para a instalação dos controladores e normalmente reposto no estado original (em execução/parado).",
|
||||
"imageAlt": "Seleção de um contentor LXC existente"
|
||||
},
|
||||
"selectGpu": {
|
||||
@@ -98,7 +98,7 @@
|
||||
},
|
||||
"applyConfig": {
|
||||
"title": "Aplicar as alterações de configuração do LXC",
|
||||
"body1": "Para o contentor e altera <code>/etc/pve/lxc/<ctid>.conf</code>. As entradas <code>dev<N></code> incluem os GID escolhidos. O mecanismo <code>dev:</code> substitui aqui regras manuais <code>lxc.mount.entry</code>. Verifique configuração e permissões.",
|
||||
"body1": "Para o contentor, se estiver em execução, e altera <code>/etc/pve/lxc/<ctid>.conf</code>. As entradas numeradas <code>dev<N></code> incluem o GID do anfitrião de <code>video</code> ou <code>render</code>. As linhas bind <code>lxc.mount.entry</code> existentes para <code>/dev/dri</code> são substituídas por entradas <code>dev:</code>; verifique a configuração e as permissões resultantes.",
|
||||
"body2": "Exemplo após Intel + NVIDIA no mesmo recipiente:"
|
||||
},
|
||||
"installDrivers": {
|
||||
@@ -127,14 +127,14 @@
|
||||
},
|
||||
"alignGids": {
|
||||
"title": "Alinhar GIDs e restaurar o estado",
|
||||
"body1": "Lê os GID do anfitrião de <code>video</code> e <code>render</code>, usando 44/104 como alternativa, e ajusta <code>/etc/group</code> no contentor. <code>video:44</code> e <code>render:104</code> são exemplos. Verifique grupos da aplicação e permissões efetivas.",
|
||||
"body1": "Para Intel/AMD, lê os GID do anfitrião de <code>video</code> e <code>render</code>, usando 44/104 apenas como alternativa, e depois altera <code>/etc/group</code> no contentor para corresponderem; as execuções apenas com NVIDIA saltam este passo. Entradas como <code>video:44</code> e <code>render:104</code> são exemplos, não ID universais. Verifique a pertença da aplicação aos grupos e as permissões efetivas dos dispositivos.",
|
||||
"body2": "Ao concluir normalmente, volta a parar o contentor se estava parado; se estava ativo mantém-no ativo. Se falhar o arranque ou a instalação, verifique o estado final e o registo."
|
||||
}
|
||||
},
|
||||
"vendors": {
|
||||
"heading": "Notas por fabricante",
|
||||
"intelHeading": "Intel iGPU",
|
||||
"intelBody": "A aceleração Intel, incluindo <em>Quick Sync</em>, depende da geração, codecs e aplicação. Partilha nós existentes como <code>/dev/dri/card0</code> e <code>/dev/dri/renderD128</code>; a numeração pode variar. O controlador nativo do anfitrião, como <code>i915</code>, tem de os disponibilizar.",
|
||||
"intelBody": "A aceleração multimédia Intel, incluindo <em>Quick Sync</em>, depende da geração do GPU, dos codecs e da configuração da aplicação. O script partilha os que existirem de entre <code>/dev/dri/card0</code>, <code>card1</code>, <code>renderD128</code> e <code>renderD129</code>; outros números de nó não são adicionados. O anfitrião tem de os disponibilizar já através do seu controlador nativo, por exemplo <code>i915</code>.",
|
||||
"amdHeading": "AMD",
|
||||
"amdBody": "AMD usa DRI para Mesa/VA-API. Se existir <code>/dev/kfd</code> no anfitrião, também o partilha. ROCm/OpenCL exige hardware e bibliotecas compatíveis; partilhar o dispositivo não instala toda a pilha ROCm.",
|
||||
"nvidiaHeading": "NVIDIA",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"title": "PCIe: módulos gasket e apex via DKMS",
|
||||
"body": "Executado apenas se detetar um Coral PCIe/M.2. Compila os módulos para o kernel em execução no anfitrião.",
|
||||
"items": [
|
||||
"<strong>Limpeza.</strong> Se uma instalação anterior de <code>gasket-dkms</code> deixou pacotes num estado incorreto, tenta purgá-la antes de compilar.",
|
||||
"<strong>Limpeza.</strong> Qualquer pacote <code>gasket-dkms</code> existente é removido antes de recompilar; se estiver num estado incorreto, o script força a sua remoção e purga.",
|
||||
"<strong>Dependências de compilação:</strong> <code>git</code>, <code>dkms</code>, <code>build-essential</code>, <code>proxmox-headers-$(uname -r)</code>."
|
||||
],
|
||||
"cloneIntro": "<strong>Clona o código do controlador.</strong> Prefere <feranickLink>feranick/gasket-driver</feranickLink>, recorrendo a <googleLink>google/gasket-driver</googleLink> se indisponível. A compilação depende da compatibilidade do kernel. Aplica estas correções ao código Google conforme a versão:",
|
||||
@@ -132,7 +132,7 @@
|
||||
"Purga <code>gasket-dkms</code>, <code>libedgetpu1-std</code> e <code>libedgetpu1-max</code> e executa <code>apt-get autoremove --purge</code>.",
|
||||
"Elimina <code>/etc/udev/rules.d/99-coral-apex.rules</code> e restaura o grupo predefinido de <code>60-gasket-dkms.rules</code> se ainda existir.",
|
||||
"Verifica os membros suplementares de <code>apex</code>. <strong>Se a lista estiver vazia</strong>, tenta remover o grupo; caso contrário mantém <code>apex</code> e lista os membros. Não verifica completamente os utilizadores que o têm como grupo principal.",
|
||||
"Remove repositórios antigos como <code>/etc/apt/sources.list.d/coral-edgetpu.list</code> e chaveiros chamados <code>coral-edgetpu-archive-keyring.gpg</code>. O chaveiro atual /etc/apt/keyrings/coral-edgetpu.gpg permanece.",
|
||||
"Remove a lista de repositórios <code>/etc/apt/sources.list.d/coral-edgetpu.list</code>, o antigo <code>coral-cloud.list</code> e chaveiros antigos chamados <code>coral-edgetpu-archive-keyring.gpg</code>. O chaveiro atual em <code>/etc/apt/keyrings/coral-edgetpu.gpg</code> não é removido por esta sequência.",
|
||||
"Propõe reiniciar <strong>apenas se PCIe estava instalado</strong> para descarregar os módulos ainda ativos. Remover apenas USB não exige reinício."
|
||||
],
|
||||
"lxcWarnTitle": "LXC contêineres com apex passagem",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "O que faz",
|
||||
"body": "Deteta o GPU e oferece ramos mantidos que incluem o ID PCI. Bloqueia <code>nouveau</code>, descarrega o instalador oficial <code>.run</code>, utiliza DKMS e instala <code>nvidia-persistenced</code> com regras udev; patch NVENC opcional. A compilação verifica o kernel atual sem garantir todas as aplicações. Os LXC NVIDIA podem receber bibliotecas correspondentes."
|
||||
"body": "O ProxMenux deteta o GPU e oferece ramos NVIDIA mantidos que incluem o seu ID PCI. Bloqueia <code>nouveau</code>, descarrega o instalador oficial <code>.run</code>, utiliza DKMS, instala <code>nvidia-persistenced</code>, regras udev e o NVIDIA Container Toolkit, e oferece um patch NVENC opcional. As verificações de compilação avaliam o kernel em execução; uma compilação bem-sucedida não garante que todas as aplicações funcionem. Aos LXC NVIDIA existentes é oferecida uma atualização das bibliotecas userspace, com versão correspondente exceto em Arch."
|
||||
},
|
||||
"who": {
|
||||
"heading": "Para quem é isto?",
|
||||
@@ -89,7 +89,7 @@
|
||||
},
|
||||
"reboot": {
|
||||
"title": "Reiniciar",
|
||||
"body": "Regenera <code>initramfs</code> para todos os kernels e oferece reiniciar. <strong>Preveja esse reinício</strong> para verificar módulos e configuração nouveau no arranque, mesmo que o controlador já responda antes."
|
||||
"body": "Após a instalação do controlador, o script regenera <code>initramfs</code> para todos os kernels; o seu último passo oferece reiniciar. <strong>Preveja esse reinício</strong> para verificar a configuração persistente dos módulos e do nouveau num novo arranque, mesmo que o novo controlador já responda antes do reinício."
|
||||
}
|
||||
},
|
||||
"reinstallUninstall": {
|
||||
@@ -102,8 +102,8 @@
|
||||
"uninstallHeading": "Desinstalar — o que é removido",
|
||||
"uninstallIntro": "Após confirmação Sim/Não, remove os seguintes componentes:",
|
||||
"uninstallItems": [
|
||||
"Executa <code>nvidia-uninstall --silent</code> para a instalação <code>.run</code>, para e desativa <code>nvidia-persistenced</code> e <code>nvidia-powerd</code> e tenta descarregar <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> e <code>nvidia</code>. Afeta aplicações LXC NVIDIA; clientes ativos podem impedir a descarga.",
|
||||
"Executa <code>apt purge</code> em <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> e <code>libcudnn*</code>, remove a árvore fonte DKMS e o cache do instalador <code>/opt/nvidia</code>.run.",
|
||||
"Para e desativa <code>nvidia-persistenced</code> e <code>nvidia-powerd</code>, tenta descarregar <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> e <code>nvidia</code> e depois executa <code>nvidia-uninstall --silent</code> para a instalação <code>.run</code>. Afeta as cargas de trabalho LXC dependentes de NVIDIA; clientes ativos podem impedir a descarga.",
|
||||
"Executa <code>apt purge</code> em <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> e <code>libcudnn*</code>, remove a árvore fonte DKMS e as pastas <code>nvidia-persistenced</code> e <code>nvidia-patch</code> em <code>/opt/nvidia</code>.",
|
||||
"Remove a configuração de carregamento <code>/etc/modules-load.d/nvidia-vfio.conf</code> e regras nouveau geridas pelo ProxMenux. Migra e remove também os antigos ficheiros ProxMenux com as duas linhas conhecidas; preserva ficheiros modificados ou não relacionados do administrador.",
|
||||
"Remove <code>/etc/udev/rules.d/70-nvidia.rules</code> e marca NVENC como <em>removed</em> no registo de instalações geridas; não existe ficheiro de estado separado.",
|
||||
"Regenera <code>initramfs</code> para todos os kernels, executa <code>proxmox-boot-tool refresh</code> conforme o arranque e pede reinício."
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
},
|
||||
{
|
||||
"situation": "Quero remover todas as atribuições deste GPU.",
|
||||
"use": "O modo LXC devolve o GPU ao controlador do anfitrião; remova as atribuições dos convidados nas opções de conflito correspondentes. O GPU continua associado a um controlador."
|
||||
"use": "O modo LXC devolve o GPU ao controlador do anfitrião; a política de conflitos da VM pode remover as entradas hostpci, mas as entradas de dispositivo LXC têm de ser removidas separadamente. O GPU continua associado a um controlador."
|
||||
}
|
||||
]
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Antes de começar",
|
||||
"assigned": "<strong>Um GPU já atribuído</strong> a uma VM por VFIO ou a um LXC. Para a primeira atribuição utilize Adicionar GPU a VM / LXC.",
|
||||
"iommu": "<strong>IOMMU deve estar ativo no anfitrião</strong> ao passar <em>para</em> modo VM. Depende do firmware e do kernel; parâmetros explícitos nem sempre são necessários. Se necessário, tenta <code>intel_iommu=on iommu=pt</code> ou <code>amd_iommu=on</code> conforme o arranque, com <code>proxmox-boot-tool refresh</code> ou <code>update-grub</code>. Reveja os avisos e reinicie quando solicitado.",
|
||||
"iommu": "<strong>IOMMU deve estar ativo no anfitrião</strong> ao passar <em>para</em> modo VM. Tanto as definições do firmware como o suporte do kernel são importantes. Se faltar <code>intel_iommu=on</code> ou <code>amd_iommu=on</code> no kernel em execução, o script adiciona-o com <code>iommu=pt</code> a <code>/etc/kernel/cmdline</code> (marca de raiz ZFS) ou a <code>/etc/default/grub</code> e depois executa <code>proxmox-boot-tool refresh</code> ou <code>update-grub</code>. Reveja eventuais avisos e reinicie quando solicitado.",
|
||||
"iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1",
|
||||
"reboot": "<strong>Preveja um reinício.</strong> Alterações persistentes ao controlador e ao arranque podem exigir regenerar initramfs e reiniciar. O script apresenta a opção no final.",
|
||||
"knowList": "<strong>Identifique as VM e LXC que utilizam o GPU.</strong> O script deteta referências e pergunta como tratar cada convidado; conhecer a lista facilita a revisão."
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Nem todas as GPUs são seguras para passar para um VM",
|
||||
"body": "O script bloqueia o modo VM para certos ID, incluindo <code>8086:5a84</code> e <code>8086:5a85</code>, segundo a política de compatibilidade. Uma correspondência apresenta um aviso. A lista não impede passar <em>para</em> modo LXC; continuam a aplicar-se outras verificações."
|
||||
"body": "O script bloqueia o modo VM para os ID de dispositivo <code>8086:5a84</code> e <code>8086:5a85</code>, segundo a sua política de compatibilidade. Se um GPU selecionado corresponder, interrompe a mudança para modo VM e volta à seleção do GPU, ou sai quando é o único GPU. Esta lista de bloqueio não impede passar <em>para</em> modo LXC; outras verificações podem continuar a aplicar-se."
|
||||
},
|
||||
"running": {
|
||||
"heading": "Executar o script",
|
||||
@@ -85,7 +85,7 @@
|
||||
"intro": "Com base no modo atual, o script propõe o oposto como alvo:",
|
||||
"items": [
|
||||
"<strong>VM → LXC:</strong> remove a associação a <code>vfio-pci</code> para que o controlador nativo (<code>nvidia</code>, <code>amdgpu</code>, <code>i915</code>) possa utilizar o GPU. Para NVIDIA remove as entradas BDF correspondentes de <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> para o próximo arranque.",
|
||||
"<strong>LXC → VM:</strong> prepara a associação a <code>vfio-pci</code>. AMD / Intel bloqueia o controlador nativo e utiliza <code>options vfio-pci ids=…</code>. Em NVIDIA, <code>nvidia</code> <strong>não</strong> é bloqueado globalmente: regras BDF aplicam <code>driver_override=vfio-pci</code> aos dispositivos dos grupos IOMMU afetados. GPU fora desses grupos podem manter <code>nvidia</code>. Reveja todos os membros."
|
||||
"<strong>LXC → VM:</strong> prepara a associação a <code>vfio-pci</code>. AMD / Intel bloqueiam o controlador nativo e utilizam <code>options vfio-pci ids=…</code>. Em NVIDIA, <code>nvidia</code> só é bloqueado globalmente quando todas as GPU NVIDIA do anfitrião estão em VFIO; caso contrário, regras por BDF aplicam <code>driver_override=vfio-pci</code> aos dispositivos dos grupos IOMMU afetados, e as GPU NVIDIA fora desses grupos mantêm <code>nvidia</code>. Reveja todos os membros do grupo antes de mudar."
|
||||
],
|
||||
"outro": "Confirme a direção ou cancele."
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user