docs: review utility documentation in all seven translations

This commit is contained in:
Jonatan
2026-10-17 15:08:54 +02:00
parent ce1a3de719
commit 9f6296501a
58 changed files with 8588 additions and 224 deletions
+145
View File
@@ -0,0 +1,145 @@
{
"meta": {
"title": "Exportar VM para OVA / OVF | Documentação ProxMenux",
"description": "Exporte uma VM Proxmox para um arquivo OVA portátil ou um diretório OVF com o esquema padrão DMTF. Discos VMDK no formato streamOptimized e manifesto SHA1. Importável no VMware ESXi / Workstation / Fusion, VirtualBox e novamente no Proxmox.",
"ogTitle": "Exportar VM para OVA / OVF | Documentação ProxMenux",
"ogDescription": "Converta uma VM Proxmox num pacote OVA / OVF portátil compatível com VMware e VirtualBox."
},
"header": {
"title": "Exportar VM para OVA / OVF",
"description": "Converte uma VM Proxmox num pacote OVA portátil (um único arquivo TAR) ou OVF (descritor e ficheiros VMDK) com o esquema OVF padrão DMTF. Os discos são convertidos com qemu-img para VMDK streamOptimized. O resultado pode ser importado no VMware (ESXi / Workstation / Fusion), VirtualBox e novamente no Proxmox através da ferramenta de importação.",
"section": "Utilitários"
},
"intro": {
"title": "O que isto faz",
"body": "Lê a configuração de uma VM parada, converte cada disco para VMDK streamOptimized, gera um descritor OVF e um manifesto SHA1 e reúne tudo num único ficheiro <code>.ova</code> ou num diretório <code>-ovf</code>. A VM de origem nunca é modificada."
},
"picker": {
"heading": "Seletor de VM",
"body": "Ao iniciar, o script lista todas as VMs de <code>qm list</code> com VMID, nome e estado. Escolha a que pretende exportar:",
"imgAlt": "Janela de seleção da VM a exportar com a lista de todas as VMs"
},
"stopped": {
"heading": "A VM tem de estar parada",
"intro": "Uma imagem de disco consistente exige uma VM parada. Se a VM selecionada estiver em execução, o ProxMenux propõe desligá-la:",
"items": [
"Encerramento normal através de <code>qm shutdown $VMID --timeout 120</code> (aguarda 2 minutos pelo encerramento ACPI do sistema convidado).",
"Se o tempo de espera terminar, propõe uma paragem forçada: <code>qm stop $VMID</code> (equivale a cortar a alimentação).",
"Se você recusar ambos, a exportação é interrompida — nenhum dado é tocado."
],
"warnTitle": "A paragem forçada equivale a cortar a alimentação",
"warnBody": "<code>qm stop</code> equivale a desligar a alimentação à força. O sistema convidado pode precisar de reparar o sistema de ficheiros no arranque seguinte. Prefira o encerramento normal e reserve a paragem forçada para sistemas convidados que não respondem."
},
"format": {
"heading": "Selector de formato: OVA vs OVF",
"headerFormat": "Formato",
"headerOutput": "Saída",
"headerPros": "Vantagens",
"headerCons": "Desvantagens",
"rows": [
{
"format": "OVA",
"output": "name-vmid-ts.ova",
"pros": "Um único ficheiro autónomo, fácil de mover, transferir por sftp ou anexar a um pedido de suporte.",
"cons": "Requer ~220% do tamanho virtual do disco (espaço adicional para o arquivo TAR durante a criação)."
},
{
"format": "OVF",
"output": "name-vmid-ts-ovf/",
"pros": "~120% do tamanho virtual do disco. Mais fácil de inspecionar, pois o descritor é XML em texto. Pode ser editado antes da importação.",
"cons": "Vários ficheiros, que têm de ser transferidos em conjunto."
}
]
},
"destination": {
"heading": "Diretório de destino",
"body": "Escolha um caminho predefinido (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) ou introduza um caminho personalizado. O script verifica se o diretório permite escrita e avisa se o espaço livre parecer insuficiente antes de começar.",
"calloutTitle": "Estimativa do espaço livre necessário",
"calloutBody": "Para exportar em OVF uma VM cujos discos somam 100 GB virtuais, reserve ~120 GB livres; para OVA, ~220 GB. A utilização real pode ser menor para discos quase vazios. O arquivo OVA é criado com TAR sem compressão enquanto os ficheiros VMDK temporários ainda existem, pelo que deve reservar espaço para ambos. Se o espaço acabar durante a exportação, o gestor de EXIT limpa o diretório temporário e terá de recomeçar."
},
"package": {
"heading": "O que acaba no pacote",
"intro": "Para um OVA/OVF denominado <code>myvm-100-2026-04-26_18-30-15</code>:",
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
},
"exported": {
"heading": "O que é exportado",
"items": [
"<strong>Discos:</strong> todas as entradas <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> e <code>ide*</code> da configuração da VM, convertidas para VMDK streamOptimized.",
"<strong>Número de vCPUs</strong> (RASD ResourceType 3) e <strong>memória</strong> em MiB (ResourceType 4).",
"<strong>Número de placas de rede</strong> (ResourceType 10: apenas o número, sem a bridge ou o modelo).",
"<strong>Nome da VM</strong> e indicação do tipo de sistema operativo."
],
"notTitle": "O que não é exportado",
"notItems": [
"Montagens CD-ROM / ISO (excluídas intencionalmente).",
"Unidades cloud-init (excluídas intencionalmente).",
"Bridge e modelo específicos da placa de rede (apenas o número é conservado).",
"Escolha BIOS / UEFI, a configurar novamente na importação.",
"Configuração de passthrough PCI.",
"Instantâneos — apenas o estado atual é capturado.",
"Opções de nível VM (NUMA, páginas enormes, hotplug, ...)."
]
},
"conversion": {
"heading": "Conversão de disco",
"intro": "Cada disco é convertido com:",
"code": "qemu-img convert -p -O vmdk -o subformat=streamOptimized \\\n \"$source_path\" \\\n \"$work_dir/<base_name>-disk<N>.vmdk\"",
"outro": "<code>streamOptimized</code> é o formato VMware legível numa única passagem, suportado pelo ESXi 6.7+, VMware Workstation, VirtualBox e pelo próprio Proxmox. É o subformato VMDK com maior compatibilidade e adequado à portabilidade. A desvantagem é não permitir acesso aleatório, pelo que não pode ser montado diretamente sem conversão."
},
"manifest": {
"heading": "Manifesto SHA1",
"intro": "Cada pacote inclui um ficheiro <code>.mf</code> com os hashes SHA1 do descritor OVF e de cada VMDK:",
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
"outro": "É opcional na especificação OVF e muitos programas ignoram-no, mas permite verificar se o pacote foi transferido intacto. Verifique manualmente com <code>sha1sum -c file.mf</code>."
},
"import": {
"heading": "Importar o resultado",
"intro": "O pacote exportado pode ser importado em:",
"items": [
{
"href": "/docs/utils/import-vm",
"preRich": "<strong>Proxmox</strong> — use a ferramenta correspondente ",
"linkLabel": "Importar VM de OVA / OVF",
"tailRich": "."
},
{
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; selecione o ficheiro .ova ou .ovf."
},
{
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open; selecione o ficheiro .ova ou .ovf."
},
{
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance; selecione o ficheiro .ova ou .ovf."
}
]
},
"troubleshoot": {
"heading": "Resolução de Problemas",
"noSpaceTitle": "qemu-img convert falha durante a conversão com \"No space left on device\"",
"noSpaceBody": "O destino ficou sem espaço livre. O gestor de EXIT limpa automaticamente o diretório temporário. Escolha um destino com mais espaço livre (consulte a estimativa acima) e repita a exportação.",
"unsupportedHwTitle": "A exportação termina, mas o VMware recusa a importação: \"Unsupported hardware family\"",
"unsupportedHwBody": "Algumas versões do ESXi rejeitam descritores OVF que declaram uma família de hardware desconhecida. Abra o .ovf num editor de texto, ou extraia primeiro o .ova, procure <code>&lt;vssd:VirtualSystemType&gt;</code> e defina um valor aceite pelo ESXi, como <code>vmx-13</code> para ESXi 6.5+. Para contornar rapidamente o problema, experimente o VirtualBox, que é mais permissivo.",
"nicTitle": "A VM importada usa uma placa de rede ou um controlador SCSI diferente",
"nicBody": "O OVF conserva o número de placas de rede, mas não o modelo original. Reveja as definições de rede da VM importada no hipervisor de destino. A exportação declara um controlador SCSI lsilogic para compatibilidade com o VMware. Ao importar novamente no Proxmox, pode escolher <code>VirtIO SCSI</code> se o sistema convidado tiver os controladores adequados.",
"runningTitle": "A VM estava em execução e recusei pará-la: exportação cancelada",
"runningBody": "O script não consegue produzir uma imagem consistente enquanto há escrita nos discos. Aceite o pedido de encerramento na próxima vez, ou desligue primeiro a VM manualmente (<code>qm shutdown $VMID</code>) e repita a exportação.",
"slowTitle": "A conversão do disco é lenta",
"slowBody": "<code>qemu-img convert</code> usa uma única thread e lê a origem à velocidade máxima. Para um disco de 100 GB num disco rígido mecânico, conte com 15–30 minutos. De NVMe para NVMe é 5–10 vezes mais rápido. Os discos de uma VM são convertidos em sequência; o tempo aumenta linearmente com o tamanho virtual total."
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/utils/import-vm",
"label": "Importar VM de OVA / OVF",
"tail": " — a ferramenta complementar para voltar a importar a VM."
},
{
"href": "/docs/utils",
"label": "Visão geral dos utilitários",
"tail": " — voltar ao panorama da secção."
}
]
}
}
+218
View File
@@ -0,0 +1,218 @@
{
"meta": {
"title": "Importar VM de OVA / OVF | Documentação ProxMenux",
"description": "Importe uma VM VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux no Proxmox VE. Extrai OVA automaticamente, analisa metadados OVF, cria a VM e importa cada disco no formato nativo do armazenamento (qcow2 / raw).",
"ogTitle": "Importar VM de OVA / OVF | Documentação ProxMenux",
"ogDescription": "Importe no Proxmox VMs exportadas do VMware, VirtualBox ou ProxMenux. Os discos são convertidos automaticamente para o formato nativo do armazenamento."
},
"header": {
"title": "Importar VM de OVA / OVF",
"description": "Importa um pacote OVA / OVF no Proxmox VE: extrai arquivos OVA, lê no descritor OVF o número de vCPUs, memória, placas de rede e referências dos discos, cria a VM e importa cada disco com qm importdisk para o armazenamento escolhido. Compatível com exportações VMware (ESXi / Workstation / Fusion), VirtualBox e ProxMenux.",
"section": "Utilitários"
},
"intro": {
"title": "O que isto faz",
"body": "Cria uma VM completa no Proxmox a partir de um pacote portátil. Após a importação, está pronta para arrancar; recomendam-se verificações e ajustes do modelo de placa de rede, firmware e tipo de sistema para desempenho e compatibilidade."
},
"picker": {
"heading": "Selector de ficheiros",
"intro": "No lançamento, o script oferece dois diretórios predefinidos ou um caminho manual:",
"items": [
"<code>/var/lib/vz/dump</code> — o diretório de backup padrão do Proxmox vzdump.",
"<code>/var/lib/vz/template/iso</code> — útil se transferiu o OVA para aí por sftp.",
"Caminho manual — para arquivos OVA / OVF em qualquer outro lugar no host."
],
"outro": "Ele então lista todos os arquivos <code>.ova</code> e <code>.ovf</code> no diretório escolhido.",
"imageAlt": "Janela de seleção do ficheiro da VM a importar"
},
"flow": {
"heading": "Como funciona a importação",
"nodes": [
{
"label": "Entrada OVA / OVF",
"detail": ".ova → tar xf para\n /tmp/.proxmenux-import-*\n.ovf → usar no local",
"variant": "source"
},
{
"label": "Processar + diálogos",
"detail": "AWK lê OVF\n(nome, vCPU, RAM, NICs,\ndiscos). Escolha de\nVMID / armazenamento / bridge",
"variant": "bridge"
},
{
"label": "qm create + importdisk",
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formato do armazenamento)\nqm set --scsiN",
"variant": "target"
}
]
},
"ovf": {
"heading": "Processamento OVF",
"intro": "Um analisador <strong>gawk</strong> lê o descritor OVF e retira os metadados VM. O analisador usa a forma de 3-argumento do <code>match()</code> que é específica do gawk (mawk — o <code>awk</code> padrão no Debian / Proxmox — não o suporta). Na primeira importação, o script auto-instala gawk através do par canônico <code>ensure_repositories</code> + <code>install_single_package</code> se estiver faltando; as importações subsequentes começam instantaneamente. Campos extraídos:",
"headerField": "Campo",
"headerSource": "Fonte em OVF",
"headerDefault": "Predefinição se faltar",
"rows": [
{
"field": "Nome VM",
"source": "<Name> (primeira correspondência)",
"default": "imported-vm"
},
{
"field": "Contagem de vCPU",
"source": "RASD ResourceType 3 → VirtualQuantity",
"default": "1"
},
{
"field": "Memória (MiB)",
"source": "RASD ResourceType 4 → VirtualQuantity",
"default": "1024"
},
{
"field": "Contagem NIC",
"source": "contagem de ResourceType 10",
"default": "1"
},
{
"field": "Tipo de sistema operacional",
"source": "/Linux/ ou /Windows/ na descrição",
"default": "other"
},
{
"field": "Referências do disco",
"source": "atributos href terminando em .vmdk / .qcow2 / .img / .raw",
"default": "nenhum (importação aborta)"
}
]
},
"memWarn": {
"title": "Ambiguidade da unidade de memória",
"body": "O analisador converte as unidades de memória reconhecidas para <strong>MiB</strong>, incluindo bytes, KiB, MiB, GiB e as etiquetas de texto suportadas. As unidades em falta ou desconhecidas são <em>tratadas como MiB</em>. Após importar, compare <code>qm config $VMID | grep memory</code> com a RAM documentada da VM de origem e, se necessário, corrija com <code>qm set $VMID --memory &lt;MiB&gt;</code>."
},
"dialog": {
"heading": "Fluxo de diálogo de importação",
"items": [
"<strong>VMID</strong> — propõe o próximo identificador disponível (<code>pvesh get /cluster/nextid</code>).",
"<strong>Nome da VM</strong> — usa o nome lido no OVF; pode alterá-lo.",
"<strong>Armazenamento de destino</strong> — lista dos armazenamentos com conteúdo <code>images</code>, obtida por <code>pvesm status -content images</code>.",
"<strong> Ponte de rede</strong> — menu de pontes (de <code>ip link show type bridge</code>); escolhe automaticamente se existir apenas um; o padrão é <code>vmbr0</code>.",
"<strong>Confirmação</strong> — diálogo sumário com VMID, nome, vCPU, memória, NICs, armazenamento, ponte e a lista de discos a serem importados. Cancelar aqui = nada muda."
]
},
"create": {
"heading": "Criação de VM",
"intro": "Após a confirmação, o script é executado:",
"code": "qm create $VMID \\\n --name \"$NAME\" \\\n --memory $MEMORY \\\n --cores $VCPU \\\n --ostype $OSTYPE \\\n --scsihw lsi \\\n --net0 e1000,bridge=$BRIDGE\n\n# For each additional NIC:\nqm set $VMID --netN e1000,bridge=$BRIDGE",
"outro": "Controlador SCSI padrão para <code>lsi</code> (LSI Logic) para compatibilidade VMDK. NICs padrão para <code>e1000</code> (compatibilidade universal) na ponte escolhida."
},
"diskLoop": {
"heading": "Loop de importação de disco",
"intro": "Para cada referência de disco no OVF:",
"items": [
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importa o disco num formato suportado pelo armazenamento de destino e cria uma entrada <code>unusedN:</code> na configuração da VM.",
"O script procura com grep na configuração a referência <code>unusedN</code> acabada de criar.",
"<code>qm set $VMID --scsiN $unused_disk</code> — liga o disco como <code>scsi0</code>, <code>scsi1</code>, ...",
"<code>qm set $VMID --delete unusedN</code> — elimina o marcador unused que deixou de ser necessário."
],
"outro": "A inicialização é definida para o primeiro disco SCSI: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
},
"postImport": {
"heading": "Ajustes recomendados após a importação",
"intro": "A importação usa configurações amplamente compatíveis para favorecer o arranque à primeira tentativa. Depois de confirmar o arranque, escolha configurações mais eficientes pela interface Proxmox ou CLI:",
"headerSetting": "Configuração",
"headerDefault": "Predefinição após a importação",
"headerRecommended": "Recomendado se suportado pelo sistema convidado",
"rows": [
{
"setting": "Modelo NIC",
"default": "e1000",
"recommended": "VirtIO (muito mais rápido, exige controlador no sistema convidado)"
},
{
"setting": "Controlador SCSI",
"default": "LSI",
"recommended": "VirtIO SCSI single (Linux recente ou Windows com controladores VirtIO)"
},
{
"setting": "Firmware (BIOS / UEFI)",
"default": "Por omissão do Proxmox (BIOS)",
"recommended": "Use o firmware da VM de origem; uma escolha incorreta impede o arranque"
},
{
"setting": "Agente convidado QEMU",
"default": "Desligado",
"recommendedRich": "Ativar e instalar <code>qemu-guest-agent</code> no sistema convidado (melhores cópias de segurança e indicação dos IPs)"
},
{
"setting": "Tipo de sistema operacional",
"default": "l26 / win10 / other (heurística)",
"recommended": "Verifique contra o sistema operacional convidado real"
},
{
"setting": "Visualização",
"default": "Padrão",
"recommended": "VirtIO-GPU ou SPICE (melhor desempenho da consola)"
}
]
},
"fwWarn": {
"title": "Firmware mismatch = nenhuma inicialização",
"body": "Se a VM de origem usava UEFI mas o Proxmox a cria com BIOS, ou vice-versa, o sistema convidado não encontra um disco de arranque. Verifique <em>FirmwareType / firmware</em> no OVF ou nas configurações originais e use a mesma escolha no Proxmox: <code>qm set $VMID --bios ovmf</code> para UEFI; o valor predefinido para BIOS é <code>seabios</code>."
},
"notImported": {
"heading": "O QUE NÃO É IMPORTADO",
"items": [
"<strong>Bridges de rede específicas</strong> — apenas o número de placas é preservado. Todas usam a bridge escolhida na importação.",
"<strong>Modelo da placa de rede</strong> — usa e1000 por predefinição.",
"<strong>Tipo de firmware BIOS / UEFI</strong> — usa a predefinição Proxmox, BIOS.",
"<strong>Configuração de passthrough PCI</strong>.",
"<strong>TPM</strong> (vTPM).",
"Unidades <strong>cloud-init</strong>.",
"<strong>Snapshots</strong> — apenas o estado atual.",
"<strong>USB / serial / dispositivos paralelos</strong> declarados no OVF.",
"Opções de <strong>etiquetas / notas / arranque automático da VM</strong>."
]
},
"troubleshoot": {
"heading": "Resolução de Problemas",
"orphanTitle": "A VM foi criada mas a importação dos discos falhou: ficou uma VM parcial",
"orphanIntro": "Quando a importação falha, o script propõe remover a VM parcial e os discos importados. Se recusou ou a eliminação automática falhou, inspecione a VM e remova-a manualmente com:",
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
"orphanOutro": "Em seguida, corrija a causa subjacente (provavelmente espaço em disco no armazenamento alvo) e re-importação.",
"memTitle": "VM importado tem 8 MB de RAM (ou 8 TB)",
"memIntro": "O analisador converte as AllocationUnits reconhecidas para MiB. Unidades em falta ou desconhecidas são tratadas como MiB. Inspecione o OVF e compare a memória importada com a VM de origem. Corrija se necessário:",
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
"bootTitle": "A VM importada não arranca: \"No bootable device\"",
"bootIntro": "Uma causa frequente é uma diferença BIOS / UEFI. A VM usava UEFI, mas o Proxmox criou-a com BIOS. Configure o firmware correspondente:",
"bootCode": "qm set $VMID --bios ovmf # UEFI\n# also add an EFI disk for the EFI vars:\nqm set $VMID --efidisk0 $STORAGE:1,format=qcow2,efitype=4m,pre-enrolled-keys=1",
"bootOutro": "Outra causa frequente: a ordem de arranque aponta para scsi0, mas o disco do sistema é scsi1. Altere a ordem no separador Opções da VM.",
"bsodTitle": "Uma VM Windows exportada do VMware apresenta um ecrã azul no primeiro arranque",
"bsodBody": "O Windows é sensível a mudanças do controlador de disco. Instale os controladores VirtIO <em>antes</em> de exportar do VMware, ou mantenha o controlador <code>lsi</code> predefinido. Mude para VirtIO SCSI só depois de arrancar o sistema convidado e instalar os controladores VirtIO no Windows.",
"zeroTitle": "O analisador OVF indica 0 discos",
"zeroBody": "O OVF pode usar referências de disco que o analisador não reconhece. Abra-o e procure uma entrada <code>&lt;File ovf:href=\"...vmdk\" ...&gt;</code> para cada disco. Se o disco for realmente VMDK mas tiver uma extensão invulgar como <code>.dat</code>, mude-a para <code>.vmdk</code> e atualize a referência OVF. Mudar o nome não converte o formato.",
"awkTitle": "awk: erro de sintaxe em ou próximo , — o analisador falha em cada OVA / OVF",
"awkIntro": "O analisador OVF usa a sintaxe gawk de <code>match()</code> com três argumentos, não suportada pelo mawk, o <code>awk</code> predefinido no Debian / Proxmox. As versões recentes instalam gawk no primeiro uso por <code>ensure_repositories</code> + <code>install_single_package</code>. Se usa uma cópia antiga, instale-o manualmente:",
"awkCode": "apt-get install -y gawk",
"awkOutro": "Depois repita a importação.",
"netTitle": "A rede não funciona após a primeira inicialização",
"netBody": "O sistema convidado pode não ter controladores para o modelo e1000, ou a bridge escolhida pode estar errada. No separador Hardware da VM, altere Network Device → Model. Verifique também <code>ip a</code> no sistema convidado: a interface pode chamar-se ens18 em vez de eth0, enquanto a configuração de rede ainda usa o nome antigo."
},
"files": {
"heading": "Ficheiros envolvidos",
"code": "scripts/utilities/import_vm_ova_ovf.sh # this script\n/tmp/.proxmenux-import-*/ # temp extraction dir for OVA\n/etc/pve/nodes/<node>/qemu-server/<vmid>.conf # created by qm create\n<storage>/<vmid>/<vmid>-disk-<n>.<fmt> # disk images, format depends on storage"
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/utils/export-vm",
"label": "Exportar VM para OVA / OVF",
"tail": " — a ferramenta complementar para exportar a VM."
},
{
"href": "/docs/utils",
"label": "Visão geral dos utilitários",
"tail": " — voltar ao panorama da secção."
}
]
}
}
+115
View File
@@ -0,0 +1,115 @@
{
"meta": {
"title": "Utilitários Proxmox — UUP Dump, atualização de PVE 8 para 9, exportação/importação OVA | ProxMenux",
"description": "Utilitários do dia a dia para Proxmox VE: criar ISOs do Windows com o UUP Dump, instalar uma seleção de ferramentas CLI, atualizar o sistema Proxmox com segurança, passar do PVE 8 para o PVE 9, exportar VMs para OVA / OVF e importar VMs OVA / OVF do VMware ou VirtualBox.",
"ogTitle": "Utilitários Proxmox — UUP Dump, atualização de PVE 8 para 9, exportação/importação OVA",
"ogDescription": "Crie ISOs do Windows, instale ferramentas CLI, execute uma atualização segura, passe do PVE 8 para o PVE 9 e exporte ou importe VMs OVA / OVF.",
"twitterTitle": "Utilitários Proxmox | ProxMenux",
"twitterDescription": "Criação de ISOs, ferramentas CLI, atualização do Proxmox, passagem PVE 8→9 e portabilidade de VMs OVA / OVF."
},
"header": {
"title": "Utilitários e Ferramentas",
"description": "Seis ferramentas complementam as tarefas diárias no Proxmox VE: criação de ISOs, manutenção do sistema e portabilidade de VMs. Cada opção é independente: escolha a que precisa; nada é instalado sem que o solicite.",
"section": "Utilitários"
},
"intro": {
"title": "Para que serve este menu",
"body": "Três grupos de ferramentas independentes, mas frequentemente necessárias: <strong>criar uma ISO do Windows</strong> com o UUP Dump, <strong>manter o host Proxmox</strong> (utilitários CLI, atualizações e passagem de versão principal) e <strong>importar e exportar VMs</strong> no Proxmox através do formato padrão OVA / OVF."
},
"opening": {
"heading": "Abrir o menu",
"body": "No menu principal do ProxMenux, selecione <strong>Utilities</strong>. Você verá isto:",
"imageAlt": "Menu de utilitários com UUP Dump, utilitários de sistema, atualização, passagem de versão, exportação e importação"
},
"groups": {
"heading": "Três grupos de ferramentas",
"intro": "As seis ferramentas estão divididas em três grupos independentes. Clique num cartão abaixo para ir para a secção correspondente.",
"iso": {
"title": "Criação ISO",
"body": "Crie ISOs oficiais do Windows do UUP Dump no próprio host Proxmox.",
"bullets": [
"Link partilhado do UUP Dump → ISO de arranque",
"Dependências instaladas automaticamente",
"O resultado é guardado no diretório de modelos ISO do Proxmox"
]
},
"maintenance": {
"title": "Manutenção do sistema",
"body": "Mantenha o host saudável: ferramentas CLI, atualizações regulares e atualização de versão principal quando chegar a hora.",
"bullets": [
"Instalador de utilitários de sistema (25 ferramentas CLI)",
"Atualização do Sistema Proxmox (apt + dist-upgrade)",
"Atualização de versão principal PVE 8 → PVE 9"
]
},
"portability": {
"title": "Portabilidade VM",
"body": "Mover VMs para dentro e para fora do Proxmox usando o formato padrão OVA / OVF.",
"bullets": [
"Exportação Proxmox VM → OVA / OVF",
"Importar OVA / OVF → Proxmox VM",
"Compatível com VMware e VirtualBox"
]
}
},
"upgradeWarn": {
"title": "A atualização PVE 8 → 9 é destrutiva e não reversível",
"body": "Uma atualização de versão principal substitui no local a base Debian (Bookworm → Trixie) e os componentes Proxmox. Não existe um caminho de reversão: antes de começar, precisa de <strong>cópias de segurança verificadas</strong> de cada VM e CT e de <strong>acesso por consola / IPMI / iKVM</strong>. Por isso, a ferramenta recusa a execução no terminal web do Proxmox."
},
"isoSection": {
"heading": "Criação ISO",
"body": "Crie uma nova ISO de instalação do Windows atualizada diretamente no host Proxmox. O script automatiza todo o processo UUP Dump: instalação de dependências (aria2c, cabextract, wimlib-imagex, …), transferência paralela dos ficheiros de atualização com aria2 e conversão numa única ISO de arranque. A ISO é guardada em <code>/var/lib/vz/template/iso</code>, pronta para associar a uma VM.",
"options": [
{
"title": "Criador de ISO do UUP Dump",
"description": "Crie uma ISO de instalação do Windows atualizada a partir de um link partilhado do UUP Dump. As dependências, a transferência e a conversão são totalmente automatizadas; a ISO resultante é guardada em /var/lib/vz/template/iso, pronta para criar uma VM.",
"href": "/docs/utils/UUp-Dump-ISO-Creator"
}
]
},
"maintenanceSection": {
"heading": "Manutenção do sistema",
"body": "Três ferramentas cobrem as tarefas diárias e ocasionais no host. O <strong>Instalador de utilitários de sistema</strong> configura as ferramentas CLI úteis após uma nova instalação. A <strong>Atualização do sistema Proxmox</strong> trata da manutenção semanal ou mensal. A <strong>Atualização do PVE 8 para o PVE 9</strong> é a grande mudança de cada ciclo de versão principal, com verificações de segurança adicionais por não ser reversível.",
"options": [
{
"title": "Instalador de utilitários de sistema",
"description": "Seletor de 25 ferramentas CLI escolhidas (htop, btop, iperf3, jq, tmux, ncdu, ...) com seleção personalizada ou grupos predefinidos (básico, desenvolvimento, compressão, multiplexadores, análise e rede). Usa o fluxo padrão com repositório e comando de verificação.",
"href": "/docs/utils/system-utils"
},
{
"title": "Atualização do sistema Proxmox",
"description": "Verificação dos repositórios + apt update + apt dist-upgrade, com confirmação antes de reiniciar. Deteta a versão principal do PVE (8 ou 9), mantém os repositórios configurados e pede confirmação antes de mudar um host sem subscrição para o repositório no-subscription; depois executa autoremove.",
"href": "/docs/utils/system-update"
},
{
"title": "Atualize PVE 8 para PVE 9",
"description": "Atualização de versão principal (Debian Bookworm → Trixie + PVE 8 → 9). Verificações prévias, migração dos repositórios, modo automatizado ou interativo, validação final e reinício. Recusa a execução no terminal web.",
"href": "/docs/utils/upgrade-pve8-pve9"
}
]
},
"portabilitySection": {
"heading": "Portabilidade VM (OVA / OVF)",
"body": "OVA e OVF são formatos de empacotamento entre hipervisores definidos pelo padrão DMTF e suportados pelo VMware, VirtualBox e Proxmox. As duas ferramentas permitem exportar e voltar a importar: uma VM exportada do Proxmox pode ser importada novamente, e vice-versa. Use-as para migrar cargas de trabalho do ESXi, criar uma cópia de segurança portátil de uma VM ou partilhar uma VM preparada com alguém que usa VirtualBox.",
"options": [
{
"title": "Exportar VM para OVA / OVF",
"description": "Converta uma VM Proxmox num arquivo OVA portátil ou num diretório OVF. Esquema padrão DMTF, manifesto SHA1 e discos VMDK no formato streamOptimized. Importável no VMware (ESXi / Workstation / Fusion), VirtualBox e novamente no Proxmox.",
"href": "/docs/utils/export-vm"
},
{
"title": "Importar VM de OVA / OVF",
"description": "Importe no Proxmox uma exportação do VMware / VirtualBox / ProxMenux. A ferramenta extrai automaticamente o OVA, analisa os metadados OVF, cria a VM e importa cada disco no formato nativo do armazenamento.",
"href": "/docs/utils/import-vm"
}
]
},
"diskSpaceCallout": {
"title": "Nota sobre o espaço em disco para exportação / importação",
"body": "As duas ferramentas convertem formatos de disco: a exportação usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; a importação usa <code>qm importdisk</code> para voltar ao formato nativo do armazenamento (qcow2 / raw). Para exportar, reserve <strong>~120% do tamanho virtual do disco</strong> para OVF e <strong>~220%</strong> para OVA. O arquivo OVA usa TAR sem compressão e é criado enquanto os ficheiros VMDK temporários ainda existem. Verifique se o diretório de destino tem espaço livre suficiente antes de começar."
},
"fitsTogether": {
"heading": "Como o menu se encaixa",
"body": "Cada ferramenta tem um script dedicado em <code>scripts/utilities/</code>. A atualização do sistema Proxmox chama um único script seguro em <code>scripts/global/</code>, update-pve-safe.sh, que deteta a versão principal e trata do PVE 8 e do PVE 9. A atualização PVE 8 → 9 oferece duas ações adicionais no seu próprio menu: uma <em>Verificação prévia à atualização</em> independente (executa <code>pve8to9 --full</code>) e um <em>Guia de atualização manual</em> só de leitura (procedimento de 17 passos), para quem quer inspecionar o processo ou executá-lo manualmente."
}
}
@@ -0,0 +1,168 @@
{
"meta": {
"title": "Atualização do sistema Proxmox | Documentação ProxMenux",
"description": "Atualiza os pacotes dentro da versão principal atual do Proxmox com apt-get update e apt full-upgrade -y. Verifica o espaço em disco e os repositórios configurados, tenta recuperar chaves GPG, verifica e repara cabeçalhos PV LVM antigos, recompila os controladores DKMS geridos quando necessário, executa autoremove/autoclean e propõe reiniciar quando é preciso.",
"ogTitle": "Atualização do sistema Proxmox | Documentação ProxMenux",
"ogDescription": "apt full-upgrade com verificação de repositórios, autoremove/autoclean e pedido de reinício quando necessário."
},
"header": {
"title": "Atualização do sistema Proxmox",
"description": "Chama um único script de execução (<code>update-pve-safe.sh</code>) que deteta a versão principal do Proxmox. Os repositórios são lidos através da API Proxmox e preservados; um host sem subscrição que use apenas Enterprise tem de confirmar a mudança para no-subscription. O script atualiza pacotes e recompila os controladores DKMS geridos pelo ProxMenux para um kernel preparado para o próximo arranque. O script principal propõe reiniciar se existir o marcador de sistema ou se o kernel instalado mais recente diferir do que está em execução. Também pode ser iniciado em <em>Update Now</em>, no cabeçalho do ProxMenux Monitor, quando há atualizações pendentes.",
"section": "Utilitários"
},
"calloutWhat": {
"title": "O que isto faz",
"body": "Leva o host para o nível de patch mais recente de sua versão principal atual. <strong>não</strong> atualiza entre versões principais — para PVE 8 → PVE 9 consulte <link>Atualizar PVE 8 para PVE 9</link>."
},
"official": {
"heading": "A recomendação oficial da Proxmox",
"intro": "A própria orientação de atualização do Proxmox para um host em execução (na mesma versão principal) deve ser executada:",
"code": "apt update && apt full-upgrade -y",
"outro": "Esta linha é o comando oficial nas versões atuais do Proxmox. É igualmente necessário garantir que os repositórios estão corretos, que os adequados estão ativos e que o host fica num estado coerente após a atualização."
},
"onTop": {
"heading": "O que o ProxMenux acrescenta: verificado no script",
"intro": "Usa <strong>a mesma operação apt full-upgrade</strong>, com verificação dos repositórios, recompilação DKMS e limpeza final. Os passos seguintes correspondem a <code>scripts/utilities/proxmox_update.sh</code> e ao seu único script de execução <code>scripts/global/update-pve-safe.sh</code>:",
"items": [
"<strong>Deteta a versão principal do PVE</strong> no script de execução (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Um único script trata do PVE 8 e do PVE 9; os repositórios são preservados, salvo se um host sem subscrição aceitar a mudança proposta.",
"<strong>Mantém os repositórios configurados.</strong> <code>ensure_repositories</code> lê os repositórios e o estado da subscrição através da API Proxmox. Com uma subscrição ativa ou um repositório no-subscription ou test já utilizado, nada muda. Um host sem subscrição ativa que use apenas Enterprise tem de confirmar a mudança para no-subscription. Se recusar, a atualização termina sem alterar as fontes.",
"<strong>Executa a atualização sem interação</strong> com <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. Para decisões sobre ficheiros de configuração dpkg, aceita a ação predefinida quando existe; caso contrário, mantém o ficheiro atual.",
"<strong>Não impõe utilitários opcionais.</strong> O script não força a instalação de <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ou pacotes semelhantes. Se a instalação Proxmox optou por dispensar algum deles, essa escolha mantém-se. Os pacotes em falta são indicados nos processos de instalação superiores, não na atualização.",
"<strong>Verificação e reparação de metadados LVM.</strong> Deteta cabeçalhos PV antigos e executa vgck --updatemetadata e vgchange -ay nos grupos de volumes afetados. Pode alterar metadados LVM; não é uma verificação que apenas emite avisos.",
"<strong>Limpa depois:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
"<strong>Recompilação DKMS antes do pedido de reinício.</strong> O script de execução chama <code>pmx_rebuild_dkms_after_kernel</code> quando está preparado um kernel instalado mais recente. O script principal verifica <code>/var/run/reboot-required</code> e usa <code>dpkg-query</code> para comparar o kernel indicado por <code>uname -r</code> com o pacote <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> instalado mais recente. O marcador pode não existir em hosts sem <code>needrestart</code>; a comparação dos kernels continua a funcionar."
]
},
"calloutOneSentence": {
"title": "Em uma frase",
"body": "Atualiza os pacotes do host, preserva os repositórios salvo uma mudança aceite, verifica os metadados LVM, recompila os controladores DKMS geridos, limpa com autoremove/autoclean e propõe reiniciar quando necessário."
},
"confirm": {
"heading": "Janela de confirmação",
"intro": "A seleção da opção abre um resumo das ações previstas e exige uma confirmação explícita:",
"imageAlt": "Janela de confirmação da atualização Proxmox com verificação dos repositórios, atualização dos pacotes e limpeza"
},
"routes": {
"heading": "Como o script principal delega a execução",
"nodes": {
"source": {
"label": "proxmox_update.sh",
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
},
"bridge": {
"label": "Um único script de execução",
"detail": "update-pve-safe.sh\n(detecta PVE 8 / 9\ninternamente)"
},
"target": {
"label": "Após a atualização",
"detail": "apt-get autoremove\napt-get autoclean\nPedido de reinício se necessário"
}
}
},
"worker": {
"heading": "O que faz o script de execução",
"intro": "Um único script (<code>scripts/global/update-pve-safe.sh</code>) trata do PVE 8 (<code>bookworm</code>) e do PVE 9 (<code>trixie</code>). Deteta a versão principal e verifica os repositórios existentes sem reescrever as fontes base do Debian. As etapas são:",
"items": [
"<strong>Verificações prévias.</strong> Verifica se há pelo menos ~1 GB livre em <code>/var/cache/apt/archives</code>. Caso contrário, termina de imediato com uma mensagem clara para evitar falhar a meio de uma operação apt.",
"<strong>Verificação dos repositórios.</strong> <code>ensure_repositories</code> lê os repositórios e o estado da subscrição. Com um repositório Proxmox utilizável, nada muda. Num host sem subscrição ativa que use apenas Enterprise, pede confirmação antes de passar a no-subscription e interrompe a atualização em caso de recusa.",
"<strong>apt update com recuperação automática GPG.</strong> Perante <code>NO_PUBKEY</code> num repositório, incluindo de terceiros, o script importa a chave em falta e tenta novamente antes de apresentar uma falha.",
"<strong>Atualizações pendentes e de segurança.</strong> Indica quantos pacotes vão mudar e quantos provêm da suite de segurança, para apresentar números concretos na janela de confirmação.",
"<strong>Janela de confirmação.</strong> Depois de atualizar as listas de pacotes, o script exige um sim explícito antes de atualizar os pacotes.",
"<strong>apt full-upgrade.</strong> Usa <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. O dpkg segue a ação predefinida para os ficheiros de configuração quando existe; caso contrário, conserva o ficheiro atual.",
"<strong>Verificação LVM.</strong> <code>lvm_repair_check</code> atualiza os metadados dos grupos de volumes quando discos atribuídos diretamente a VMs convidadas (DSM, TrueNAS ou appliances de armazenamento) regressam com cabeçalhos PV antigos.",
"<strong>Recompilação DKMS dos controladores geridos pelo ProxMenux.</strong> Quando há um kernel novo preparado, <code>pmx_rebuild_dkms_after_kernel</code> lê os controladores instalados pelo ProxMenux em <code>components_status.json</code> (atualmente <code>nvidia_driver</code> → módulo <code>nvidia</code> e <code>coral_driver</code> → módulo <code>gasket</code>), instala os cabeçalhos correspondentes (<code>proxmox-headers-&lt;newkver&gt;</code> quando disponível; caso contrário, <code>pve-headers-&lt;newkver&gt;</code>) e executa <code>dkms autoinstall -k &lt;newkver&gt;</code>. Se <code>dkms status</code> não mostrar os módulos compilados para o novo kernel, volta a executar cada instalador com <code>--auto-reinstall</code>. As falhas são registadas sem interromper a atualização, que chega na mesma ao pedido de reinício.",
"<strong>Limpeza final.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> antes de devolver o controlo ao script principal."
]
},
"post": {
"heading": "Limpeza e reinício após a atualização",
"intro": "Quando o script de execução termina, o script principal executa:",
"code": "apt-get autoremove -y # drop unused dependencies pulled in by old packages\napt-get autoclean # drop downloaded .deb files no longer in the index",
"afterCode": "O script principal também verifica se é preciso reiniciar. Qualquer um destes sinais faz aparecer o pedido:",
"items": [
"Existe <code>/var/run/reboot-required</code>: um pacote ou uma ferramenta do sistema marcou a necessidade de reiniciar o host.",
"O pacote de kernel Proxmox instalado mais recente difere do kernel em execução, segundo <code>dpkg-query</code> e uname -r."
],
"outro": "Se alguma condição for verdadeira, uma janela whiptail pergunta <em>«Algumas alterações exigem um reinício. Pretende reiniciar agora?»</em>. Recuse para continuar com o kernel atual até reiniciar manualmente, por exemplo numa janela de manutenção planeada."
},
"end": {
"heading": "O que vês no fim",
"intro": "Quando o script de execução termina, o terminal apresenta o resultado da limpeza e, se necessário, o pedido de reinício:",
"imageAlt": "Resumo de conclusão da atualização do sistema Proxmox com saída de limpeza e prompt de reinicialização"
},
"calloutDeclineReboot": {
"title": "Adie o reinício apenas por um motivo concreto",
"body": "Instalar um novo pacote <code>proxmox-kernel-*</code> não substitui o kernel em execução até reiniciar. O novo kernel e os módulos correspondentes ficam ativos no próximo arranque. Planeie o reinício para uma janela de manutenção adequada e reveja antes os avisos de compilação DKMS."
},
"noSub": {
"heading": "Como o script trata o repositório Enterprise",
"intro": "O Proxmox ativa o repositório Enterprise por predefinição. Sem subscrição ativa, esse repositório devolve 401 em <code>apt-get update</code>. O script só altera os repositórios nesse caso e após confirmação, através da API Proxmox usada por <em>Node → Updates → Repositories</em>. Estes são os casos possíveis:",
"items": [
"Com uma <strong>subscrição ativa</strong>, os repositórios mantêm-se e o Enterprise fornece as atualizações.",
"Com o <strong>repositório no-subscription ou test já ativo</strong>, os repositórios mantêm-se, independentemente de outras fontes configuradas.",
"<strong>Sem subscrição ativa e apenas com o repositório Enterprise</strong>, uma janela propõe a mudança. Aceitar desativa Enterprise, ativa no-subscription e atualiza as listas de pacotes. A mudança é registada na vista <em>Changes</em> de Audit & Report. Recusar termina a atualização sem alterar as fontes.",
"As <strong>fontes Ceph Enterprise</strong> existentes são desativadas na mesma mudança, sem escolher outro canal Ceph. Um host que use Ceph configura o respetivo canal separadamente.",
"Se <strong>não houver um terminal para pedir confirmação</strong>, nenhuma fonte é alterada e a atualização termina com uma mensagem que remete para <em>Node → Updates → Repositories</em>."
],
"outro": "As fontes Debian e todos os outros ficheiros de repositórios nunca são alterados por este processo. Uma entrada que misture Enterprise com outros componentes não é mudada: a atualização termina e pede para separar a entrada na vista de repositórios Proxmox."
},
"cluster": {
"heading": "Considerações para clusters",
"calloutTitle": "Em clusters: atualizar um nó de cada vez",
"calloutBody": "Num cluster Proxmox, execute esta opção em <strong>um nó de cada vez</strong> e espere pelo fim do reinício antes de passar ao seguinte. Migre primeiro os sistemas convidados para fora do nó, para evitar interrupções de serviço no cluster. Versões secundárias diferentes, como 8.4.1 e 8.4.5, podem coexistir durante algumas horas; kernels em execução diferentes podem causar comportamentos inesperados em sistemas convidados geridos por HA."
},
"doesnt": {
"heading": "O que não faz",
"items": [
"<strong>Atualização de versão principal.</strong> A passagem 8 → 9 é uma operação separada; consulte <link>Atualizar do PVE 8 para o PVE 9</link>.",
"<strong>Backup.</strong> Sem instantâneos, sem retrocesso. As operações Apt não são transacionais. Combine com sua disciplina de backup normal (PBS, vzdump, ZFS instantâneos).",
"<strong>Atualizações de contentores / VMs.</strong> Só o host é atualizado; os sistemas convidados mantêm-se.",
"<strong>Gravação dedicada de firmware.</strong> Esta ferramenta não serve para gravar BIOS ou firmware de dispositivos. Os pacotes de firmware ou microcódigo CPU já instalados podem receber atualizações através de apt."
]
},
"troubleshooting": {
"heading": "Resolução de Problemas",
"items": [
{
"title": "apt update falha com 401 Unauthorized",
"body": "O repositório Enterprise está ativo, mas o host não tem subscrição ativa. Antes de <code>apt-get update</code>, o script propõe passar a no-subscription. Se recusou, repita a atualização e aceite, ou desative Enterprise em <em>Node → Updates → Repositories</em> e ative no-subscription."
},
{
"title": "dist-upgrade trava em \"Configuring grub-pc\"",
"body": "Se aparecer uma pergunta interativa do GRUB, pede os dispositivos onde instalar o gestor de arranque. A opção <code>--force-confold</code> aplica-se aos ficheiros de configuração, não à escolha dos dispositivos. Use <kbd>Tab</kbd> + <kbd>Space</kbd> para selecionar os discos de arranque adequados e depois OK. Pode configurar esta escolha antes com <code>dpkg-reconfigure grub-pc</code>."
},
{
"title": "O Kernel atualizou, mas faltam os novos módulos para um driver fora da árvore",
"body": "Para os controladores geridos (<code>nvidia_driver</code> e <code>coral_driver</code>), a função executa <code>dkms autoinstall -k &lt;newkver&gt;</code> e pode repetir os instaladores com <code>--auto-reinstall</code>. Verifique o resultado com <code>dkms status</code>. O comando autoinstall também pode recompilar outros módulos DKMS registados; os instaladores alternativos limitam-se às entradas geridas de <code>components_status.json</code>. Inspecione os módulos de terceiros ainda em falta e recompile-os se necessário com <code>dkms autoinstall</code>."
},
{
"title": "O prompt de reinicialização não apareceu, mas tenho certeza que o kernel mudou",
"body": "Os sinais são alternativos: <code>/var/run/reboot-required</code> ou uma diferença entre o kernel em execução e o kernel Proxmox instalado mais recente. O script principal não analisa entradas linux-image no registo apt. Verifique a versão em execução com <code>uname -r</code> e os pacotes de kernel instalados com <code>dpkg-query</code>. Planeie o reinício necessário ou execute <code>shutdown -r now</code> quando estiver pronto."
}
]
},
"files": {
"heading": "Ficheiros envolvidos",
"code": "scripts/utilities/proxmox_update.sh # this script (wrapper)\nscripts/global/update-pve-safe.sh # single safe worker (PVE 8 + PVE 9)\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\nscripts/global/utils-install-functions.sh # pmx_rebuild_dkms_after_kernel\n/usr/local/share/proxmenux/components_status.json # ProxMenux-managed DKMS driver registry\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted\n/var/run/reboot-required # read to decide on reboot prompt\n# Reboot fallback when needrestart isn't installed:\n# dpkg-query -W 'proxmox-kernel-*-pve-signed' 'pve-kernel-*-pve' vs. uname -r"
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/utils/upgrade-pve8-pve9",
"label": "Atualize PVE 8 para PVE 9",
"tail": " — para a actualização da versão principal (ferramenta diferente, modelo de segurança diferente)."
},
{
"href": "/docs/utils/system-utils",
"label": "Instalador de utilitários de sistema",
"tail": " — para instalar ferramentas CLI úteis durante as atualizações (htop / btop / ncdu)."
},
{
"href": "/docs/utils",
"label": "Visão geral dos utilitários",
"tail": " — voltar ao panorama da secção."
}
]
}
}
@@ -0,0 +1,252 @@
{
"meta": {
"title": "Instalador de utilitários de sistema | Documentação ProxMenux",
"description": "Instalador de utilitários CLI para Proxmox VE, com 25 pacotes na lista de referência (htop, btop, iperf3, tmux, ...). Seleção personalizada, instalação completa e grupos predefinidos (básico, desenvolvimento, compressão, multiplexadores, análise e rede). Os grupos podem incluir pacotes adicionais. Usa ensure_repositories + install_single_package.",
"ogTitle": "Instalador de utilitários de sistema | Documentação ProxMenux",
"ogDescription": "Instale ferramentas CLI com curadoria em Proxmox VE com um clique ou seleção personalizada."
},
"header": {
"title": "Instalador de utilitários de sistema",
"description": "Seletor dos 25 utilitários CLI da lista de referência PROXMENUX_UTILS. Oferece seleção personalizada, instalação completa, seis grupos predefinidos e verificação das instalações. Os grupos podem incluir ferramentas fora da lista. Usa as funções partilhadas ensure_repositories() + install_single_package() para gerir repositórios e mensagens por pacote de forma coerente.",
"section": "Utilitários"
},
"info": {
"title": "O que isto faz",
"body": "Instala ferramentas CLI de uma lista de 25 pacotes. Todas as instalações seguem o mesmo processo: <code>ensure_repositories</code> verifica um repositório Proxmox utilizável para a versão principal de PVE em execução; depois <code>install_single_package</code> instala o pacote e verifica se o comando está em PATH."
},
"opening": {
"heading": "Abrir o instalador",
"intro": "No menu Utilities, escolha <strong>System Utilities Installer</strong>. O menu principal tem nove opções:",
"imageAlt": "Menu Instalador de Utilitários de Sistema com seleção personalizada, ALL, grupos predefinidos e verificar"
},
"actions": {
"heading": "As 9 ações do menu",
"headerOption": "Opção",
"headerBehaviour": "Comportamento",
"rows": [
{
"option": "1. Seleção personalizada",
"behaviourRich": "Lista de seleção dos 25 pacotes. Use SPACE para marcar e ENTER para confirmar; só os pacotes selecionados são instalados."
},
{
"option": "2. Instalar todos os utilitários",
"behaviourRich": "Instalação única de cada pacote em <code>PROXMENUX_UTILS</code>. Use após uma instalação nova do Proxmox."
},
{
"option": "3. Básico",
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
},
{
"option": "4. Desenvolvimento",
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
},
{
"option": "5. Compressão",
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
},
{
"option": "6. Multiplexadores de terminal",
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
},
{
"option": "7. Análise",
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
},
{
"option": "8. Rede",
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
},
{
"option": "9. Verificar as instalações",
"behaviourRich": "Percorre cada entrada de <code>PROXMENUX_UTILS</code>, verifica se o comando está em PATH e apresenta um resumo Disponível / Em falta."
}
]
},
"packages": {
"heading": "Os 25 pacotes",
"intro": "Definidos no ficheiro partilhado <code>scripts/global/utils-install-functions.sh</code> como <code>PROXMENUX_UTILS</code> (formato: <code>package:verify_command:description</code>). Outros scripts ProxMenux, como os que iniciam iftop / iptraf-ng / iperf3, reutilizam estas entradas para manter os pacotes e comandos de verificação sincronizados.",
"headerPackage": "Pacote",
"headerVerify": "Comando de verificação",
"headerDescription": "Descrição",
"rows": [
{
"package": "axel",
"verify": "axel",
"description": "Acelerador de transferências"
},
{
"package": "aria2",
"verify": "aria2c",
"description": "Downloader multi-fonte"
},
{
"package": "btop",
"verify": "btop",
"description": "Monitor de recursos moderno"
},
{
"package": "cabextract",
"verify": "cabextract",
"description": "Extrair arquivos CAB"
},
{
"package": "chntpw",
"verify": "chntpw",
"description": "Editar o registro do Windows / senhas"
},
{
"package": "dos2unix",
"verify": "dos2unix",
"description": "Converter arquivos de texto DOS / Unix"
},
{
"package": "genisoimage",
"verify": "genisoimage",
"description": "Criar imagens ISO"
},
{
"package": "grc",
"verify": "grc",
"description": "Colorador de log genérico"
},
{
"package": "htop",
"verify": "htop",
"description": "Visualizador interativo de processos"
},
{
"package": "iftop",
"verify": "iftop",
"description": "Utilização da rede em tempo real"
},
{
"package": "intel-gpu-tools",
"verify": "intel_gpu_top",
"description": "Ferramentas Intel GPU"
},
{
"package": "iotop",
"verify": "iotop",
"description": "Monitorar a utilização de E/S do disco"
},
{
"package": "iperf3",
"verify": "iperf3",
"description": "Teste de largura de banda de rede"
},
{
"package": "ipset",
"verify": "ipset",
"description": "Gerenciar conjuntos de IP"
},
{
"package": "iptraf-ng",
"verify": "iptraf-ng",
"description": "Ferramenta de monitorização da rede"
},
{
"package": "libguestfs-tools",
"verify": "virt-filesystems",
"description": "Utilitários de disco VM"
},
{
"package": "msr-tools",
"verify": "rdmsr",
"description": "Acesso aos registos MSR da CPU"
},
{
"package": "net-tools",
"verify": "netstat",
"description": "Ferramentas de rede legadas"
},
{
"package": "plocate",
"verify": "locate",
"description": "Localizar arquivos rapidamente"
},
{
"package": "s-tui",
"verify": "s-tui",
"description": "Stress-Terminal UI"
},
{
"package": "sshpass",
"verify": "sshpass",
"description": "Autenticação não interactiva do SSH"
},
{
"package": "tmux",
"verify": "tmux",
"description": "Multiplexador de terminal"
},
{
"package": "unzip",
"verify": "unzip",
"description": "Extrair arquivos ZIP"
},
{
"package": "wimtools",
"verify": "wimlib-imagex",
"description": "Gerenciar imagens WIM"
},
{
"package": "zip",
"verify": "zip",
"description": "Criar arquivos ZIP"
}
]
},
"howItWorks": {
"heading": "Como funciona a instalação de um pacote",
"items": [
"<code>ensure_repositories</code> deteta PVE 8 ou 9 e lê os repositórios através da API Proxmox. Com um repositório Proxmox utilizável, nada muda. Um host sem subscrição ativa que use apenas Enterprise tem de confirmar a mudança para no-subscription; <code>apt-get update</code> é executado após a mudança aceite.",
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> executa <code>apt-get install -y \"$pkg\"</code> com feedback (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
],
"verifyIntro": "Após a instalação, o comando é verificado com <code>command -v \"$verify_cmd\"</code>. Três resultados possíveis:",
"verifyOutcomes": [
"<strong>0 (sucesso):</strong> comando disponível, pacote contado como <em>Sucesso</em>.",
"<strong>1 (falhou):</strong> apt falhou, contado como <em>Falhou</em>.",
"<strong>2 (aviso):</strong> apt terminou com sucesso, mas o comando esperado não foi encontrado em PATH; conta como <em>Com avisos</em>."
],
"summary": "No fim de uma instalação personalizada ou de grupo, uma janela apresenta os totais <em>Com sucesso / Com avisos / Com falha</em>."
},
"verify": {
"heading": "Verifique as instalações",
"intro": "A opção 9 é só de leitura: percorre <code>PROXMENUX_UTILS</code> e executa <code>command -v</code> para cada comando de verificação. O resultado é semelhante a:",
"code": "Total: 26\nAvailable: 18\nMissing: 8\n\n✓ axel - Download accelerator\n✓ aria2c - Multi-source downloader\n✓ btop - Modern resource monitor\n✗ cabextract - Extract CAB files\n✓ dos2unix - Convert DOS / Unix text files\n✗ genisoimage - Create ISO images\n✓ grc - Generic log colorizer\n...",
"outro": "Útil antes de executar scripts que dependem destas ferramentas (por exemplo. <code>uup_dump_iso_creator.sh</code> precisa de <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). Se algo estiver faltando, execute a instalação do grupo correspondente ou escolha os pacotes em falta através da seleção personalizada."
},
"troubleshoot": {
"heading": "Resolução de Problemas",
"reposTitle": "\"Falhou em configurar repositórios. Instalação cancelada.\"",
"reposBody": "A verificação do repositório não passou: a mudança para o repositório sem assinatura foi recusada, o status da assinatura não pôde ser lido, ou uma entrada de repositório precisa de atenção. A mensagem impressa acima indica a causa. Os repositórios estão listados em <em>Node → Atualizações → Repositórios</em> e <code>apt-get update</code> de um console mostra os relatórios de erro apt.",
"warningsTitle": "Um pacote é relatado \"Com avisos\", mas o comando funciona depois de fechar o menu",
"warningsBody": "Após <code>apt-get install</code>, a função executa <code>hash -r</code>, espera brevemente e verifica o comando esperado com <code>command -v</code>. Um aviso significa que essa verificação continua a falhar, sem identificar a causa. Experimente uma nova shell e verifique a instalação do pacote e PATH se o comando continuar em falta.",
"hangsTitle": "Uma instalação apt trava",
"hangsBody": "Provavelmente há uma pergunta debconf oculta pela saída silenciada. O script usa <code>DEBIAN_FRONTEND=noninteractive</code> nas chamadas apt, o que normalmente evita perguntas, mas alguns pacotes ainda exigem dados. Cancele com <kbd>Ctrl</kbd>+<kbd>C</kbd> e execute <code>apt-get install -y &lt;pkg&gt;</code> manualmente numa shell para ver a pergunta e decidir."
},
"files": {
"heading": "Ficheiros envolvidos",
"code": "scripts/utilities/system_utils.sh # this script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted"
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/utils/system-update",
"label": "Atualização do sistema Proxmox",
"tailRich": " — para o <code>apt dist-upgrade</code> efectivo no hospedeiro."
},
{
"href": "/docs/network/monitoring",
"label": "Ferramentas de monitorização ao vivo (rede)",
"tailRich": " — utiliza iftop / iptraf-ng / iperf3 desta mesma lista."
},
{
"href": "/docs/utils",
"label": "Visão geral dos utilitários",
"tailRich": " — voltar ao panorama da secção."
}
]
}
}
@@ -0,0 +1,335 @@
{
"meta": {
"title": "Atualizar PVE 8 para PVE 9 | Documentação do ProxMenux",
"description": "Três formas de passar do Proxmox VE 8 para 9 (Debian Bookworm para Trixie e PVE 8 para 9): automática, interativa ou manual, seguindo o procedimento oficial. Verificação pve8to9, migração dos repositórios, dist-upgrade e validação final. A execução no terminal web é bloqueada.",
"ogTitle": "Atualizar PVE 8 para PVE 9 | Documentação do ProxMenux",
"ogDescription": "Três métodos (automático, interativo e manual) para passar do Proxmox VE 8 para 9."
},
"header": {
"title": "Atualize PVE 8 para PVE 9",
"description": "Executa a atualização do Proxmox VE 8 para 9 segundo o procedimento oficial: Debian Bookworm para Trixie e PVE 8 para 9. Oferece métodos automático, interativo e manual, além de uma verificação prévia independente. Bloqueia o terminal web porque uma desconexão durante a atualização pode deixar o anfitrião inutilizável.",
"section": "Utilitários"
},
"dangerCallout": {
"title": "Uma atualização de versão principal é irreversível",
"intro": "Esta operação substitui a base Debian (Bookworm → Trixie) e os componentes Proxmox no próprio sistema. <strong>Não existe um procedimento de reversão</strong>. Antes de começar:",
"items": [
"<strong>Cópias de segurança verificadas</strong> de cada VM e CT (PBS, vzdump, snapshots ZFS — verifique também o restauro).",
"<strong>Acesso por consola / IPMI / iKVM</strong> ao anfitrião caso a ligação SSH seja interrompida.",
"O host já está atualizado em PVE 8.4.x (o script obriga isso).",
"Ceph (se presente) na versão 19.x Squid.",
"Pelo menos <strong>5 GB livres</strong> no sistema de ficheiros raiz."
]
},
"modeMenu": {
"heading": "O menu modo",
"intro": "A opção abre quatro entradas: Automático, Interativo, Verificação prévia e Guia manual. Três opções <em>executam</em> a atualização ou explicam como fazê-la; a verificação independente <em>confirma</em> os requisitos e pode propor reparações.",
"imageAlt": "Menu de atualização do PVE 8 para 9 com modos automático, interativo, verificação prévia e guia manual"
},
"threeWays": {
"heading": "Três maneiras de atualizar",
"intro": "Os modos Automático e Interativo seguem o mesmo processo, com verificações prévias e validação final. Diferem nas respostas às perguntas do dpkg durante <code>dist-upgrade</code>. O guia manual mostra os comandos, incluindo as verificações; cabe-lhe executar todos os passos.",
"auto": {
"title": "Automático / Sem assistência",
"summary": "Define <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. Para ficheiros de configuração modificados, o dpkg usa a ação predefinida se existir; caso contrário, <strong>mantém o ficheiro atual</strong> (<code>--force-confold</code>).",
"items": [
"O mais rápido — sem esperar por instruções",
"Adequado para instalações padrão sem ficheiros de configuração personalizados",
"Risco: uma configuração personalizada é mantida sem perguntas e pode ocultar os novos valores predefinidos"
]
},
"interactive": {
"title": "Interactiva",
"summary": "O mesmo processo, mas o utilizador responde a cada pergunta do dpkg sobre conflitos de configuração. Mais lento, com visibilidade máxima.",
"items": [
"Você vê cada conflito de configuração e decide",
"Melhor quando você tiver personalizado <code>/etc/lvm</code>, <code>/etc/ssh</code>, etc.",
"Consulte a tabela de respostas recomendadas no procedimento manual abaixo"
]
},
"manual": {
"title": "Guia de atualização manual",
"summary": "Apresenta, sem executar, o procedimento oficial Proxmox em 17 passos. Execute os comandos manualmente numa shell separada.",
"items": [
"Controle máximo — você digita cada comando",
"Melhor quando você quer aprender o procedimento ou você não confia em nada",
"O script exibe as etapas; nada é executado automaticamente"
]
}
},
"precheckCallout": {
"title": "Mais uma pré- verificação separada",
"body": "A opção 3 — <strong>Executar verificação do PVE 8 para 9</strong> — inicia a ferramenta oficial <code>pve8to9 --full</code>, propõe reparações guiadas para problemas comuns e depois <strong>termina</strong>. Utilize-a antes de atualizar ou após reparações manuais. Os modos automático e interativo também a executam; o guia manual indica que deve executá-la pessoalmente."
},
"webTerminal": {
"heading": "Por que o terminal web está bloqueado",
"body": "Os três modos detetam <code>termproxy</code> / <code>vncshell</code> na cadeia de processos ascendentes e recusam iniciar. O terminal web depende de <code>pveproxy</code>, um serviço atualizado durante o processo. Quando <code>pveproxy</code> reinicia, a sessão termina e o script que nela decorre também. O anfitrião pode ficar parcialmente atualizado.",
"warningTitle": "Utilize SSH ou uma consola física / IPMI / iKVM",
"warningBody": "SSH é a opção habitual. Inicie a sessão dentro de <code>tmux</code> ou <code>screen</code> para resistir a breves interrupções de rede. Se detetar uma shell SSH simples, o script apresenta primeiro um lembrete sobre tmux/screen."
},
"auto": {
"heading": "Modo automático / sem vigilância",
"intro": "As confirmações e perguntas habituais sobre ficheiros de configuração usam as respostas predefinidas. As falhas bloqueantes das verificações podem continuar a exigir intervenção. Utilize este modo em instalações padrão ou depois de avaliar o efeito das respostas nos ficheiros personalizados.",
"behaviourHeading": "Comportamento específico do modo automático",
"behaviourTable": {
"settingHeader": "Configuração",
"effectHeader": "Efeito",
"rows": [
{
"settingRich": "<code>ASSUME_YES=1</code>",
"effectRich": "Opção interna — confirma automaticamente as perguntas sim/não do script"
},
{
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
"effectRich": "apt / dpkg são executados sem abrir perguntas do debconf"
},
{
"settingRich": "<code>--force-confdef</code>",
"effectRich": "Para arquivos de configuração intocados: instale a nova versão do mantenedor"
},
{
"settingRich": "<code>--force-confold</code>",
"effectRich": "Para ficheiros modificados: ação predefinida do dpkg, se existir; caso contrário, <strong>manter a sua versão</strong>."
}
]
},
"flowHeading": "Processo do modo automático",
"flowIntro": "Seis fases consecutivas. As primeiras podem atualizar pacotes PVE 8 e escrever a configuração dos repositórios. Uma falha interrompe o processo sem reverter essas alterações. A fase 5 executa <code>dist-upgrade</code> para PVE 9.",
"flowDiagram": "1. VERIFICAÇÕES\nBloqueia termproxy / vncshell; rejeita PVE 9; verifica espaço e conectividade.\nExige Ceph 19.x Squid se estiver instalado.\npve8to9 --full (pode propor reparações).\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nAtualiza os pacotes PVE 8; systemctl restart pve-manager.\n\n3. MIGRAR REPOSITÓRIOS\nBookworm → Trixie; escreve ficheiros deb822 .sources.\nComenta os ficheiros .list antigos; apt-get update.\n\n4. VALIDAR O CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nPara se o candidato não for 9.x ou se proxmox-ve fosse removido.\n\n5. ATUALIZAR\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nRegisto: /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. VERIFICAR E REINICIAR\nEFI: apt install grub-efi-amd64\npve8to9 --full; examine os resultados e a pergunta de reinício.",
"preflightHeading": "Verificações antes da atualização",
"preflightTable": {
"checkHeader": "Verificar",
"whyHeader": "Por que importa",
"rows": [
{
"checkRich": "<strong>Bloco do terminal web</strong>",
"whyRich": "Impede que a atualização termine a shell que a executa"
},
{
"checkRich": "<strong>Já em 9.x</strong>",
"whyRich": "Interrompe se a máquina já executar PVE 9 (nada a fazer)"
},
{
"checkRich": "<strong>Versão mais recente do PVE 8.4.x</strong>",
"whyRich": "Atualiza primeiro o PVE 8 para a última revisão com o respetivo script; versões 8.x antigas têm requisitos diferentes"
},
{
"checkRich": "<strong>pve8to9 --full</strong>",
"whyRich": "Verificação dos requisitos pelo Proxmox; os erros FAIL bloqueiam a atualização até serem corrigidos"
},
{
"checkRich": "<strong>Espaço em disco</strong>",
"whyRich": "≥ 1024 MB livres em <code>/var/cache/apt/archives</code> para os ficheiros .deb transferidos"
},
{
"checkRich": "<strong>Conectividade</strong>",
"whyRich": "Ping a <code>download.proxmox.com</code> — se falhar, a operação não começa"
},
{
"checkRich": "<strong>Ceph 19.x Squid</strong>",
"whyRich": "Se o Ceph estiver instalado, já deve estar em 19.x. O PVE 9 não funciona com Ceph 17/18. As opções <code>--ignore-ceph-check</code> e <code>--warn-ceph-check</code> permitem ignorar a verificação; utilize-as apenas com conhecimento das consequências."
}
]
},
"distUpgradeHeading": "O comando dist-upgrade (modo automático)",
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
"distUpgradeOutro": "O resultado aparece em tempo real no stdout e é também guardado em <code>/var/log/pve8-a-pve9-&lt;timestamp&gt;.log</code>. Tudo fica visível; só as perguntas são suprimidas.",
"postHeading": "Tarefas de pós- atualização (modo automático)",
"postItems": [
"<strong>Anfitriões EFI:</strong> instala <code>grub-efi-amd64</code>, de acordo com o problema conhecido na documentação Proxmox. A atualização não o instala automaticamente e pode ser necessário no próximo arranque.",
"<strong>Momento do reinício de <code>pve-manager</code>.</strong> O reinício explícito faz parte da preparação do PVE 8, antes da atualização dos pacotes para Trixie/PVE 9.",
"<strong>Volta a executar <code>pve8to9 --full</code>.</strong> Mostra problemas restantes. Os erros FAIL apresentam o mesmo menu de reparação da verificação prévia.",
"<strong>Pergunta de reinício.</strong> Recomenda-se reiniciar para carregar o novo kernel e os serviços. Recuse apenas por um motivo concreto: manter o kernel antigo após uma atualização de versão principal apresenta riscos."
]
},
"interactive": {
"heading": "Modo interativo",
"intro": "O mesmo processo do <autolink>modo automático</autolink>: verificações, migração dos repositórios e validação final iguais. A diferença está em <code>dist-upgrade</code>: <strong>responde pessoalmente a cada conflito de configuração do dpkg</strong>. O ProxMenux executa <code>apt-get dist-upgrade</code> sem as opções <code>--force-conf*</code>.",
"distUpgradeHeading": "O comando dist-upgrade (modo interativo)",
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
"whenHeading": "Quando interativo é a escolha certa",
"whenItems": [
"Você personalizou <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> ou qualquer outro arquivo de configuração que seja tocado pela atualização.",
"Pretende ver que pacotes causam conflitos e decidir para cada ficheiro.",
"Você está atualizando um host de produção onde qualquer alteração oculta é inaceitável."
],
"promptCalloutTitle": "O que responder em cada alerta",
"promptCalloutBody": "Aplicam-se as mesmas recomendações da operação manual: consulte <dpkglink>Respostas recomendadas às perguntas do dpkg</dpkglink> abaixo. Introduza <strong>D</strong> para ver as diferenças ou <strong>Z</strong> para abrir uma shell."
},
"manual": {
"heading": "Procedimento de actualização manual",
"intro": "É isto que mostra a opção <strong>Guia de atualização manual</strong>: o <wikilink>wiki oficial Proxmox para passar de 8 para 9</wikilink>, organizado em quatro fases. O script <em>mostra</em> os comandos; executa-os pessoalmente numa shell root separada. Cada passo é visível.",
"rootCalloutTitle": "Todos os comandos precisam de root",
"rootCalloutBody": "Utilize uma shell root para estes comandos, incluindo redirecionamentos e documentos here-document. Com <code>sudo</code>, garanta que todo o comando é executado com privilégios root.",
"phase1Heading": "Fase 1 — Preparação",
"phase1Intro": "Atualize o anfitrião para a última PVE 8.4.x, confirme a versão e o Ceph se utilizado, execute a verificação Proxmox e inicie um multiplexador de terminal para resistir a desconexões.",
"phase1Code": "# Step 1 — Update PVE 8 to the latest 8.4+\napt update && apt dist-upgrade -y\n\n# Step 2 — Verify version (must be 8.4.1 or newer)\npveversion\n\n# Step 2.1 — Hyper-converged Ceph: must already be on 19.x Squid\nceph --version\n# If older, follow https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid\n\n# Step 3 — Run the official upgrade-readiness check\npve8to9 --full\n# If it warns about systemd-boot meta-package, remove it:\n# apt remove systemd-boot\n\n# Step 4 — Start tmux or screen (so SSH disconnect doesn't kill the upgrade)\ntmux new-session -s upgrade\n# or\nscreen -S upgrade",
"phase2Heading": "Fase 2 — Migração do repositório",
"phase2Intro": "Mude todos os repositórios Debian e Proxmox de Bookworm para Trixie e converta as fontes Proxmox para deb822. <strong>Escolha o passo 7 OU 8</strong> conforme a subscrição Enterprise. Ignore o passo 9 se não utilizar Ceph.",
"phase2Code": "# Step 5 — Debian: bookworm → trixie\nsed -i 's/bookworm/trixie/g' /etc/apt/sources.list\n\n# Step 6 — Same for the legacy enterprise list (only if you use enterprise)\nsed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list\n\n# Step 7 — Add the new PVE 9 enterprise repo (deb822) — Enterprise users only\ncat > /etc/apt/sources.list.d/pve-enterprise.sources << EOF\nTypes: deb\nURIs: https://enterprise.proxmox.com/debian/pve\nSuites: trixie\nComponents: pve-enterprise\nSigned-By: /usr/share/keyrings/proxmox-archive-keyring.gpg\nEOF\n\n# Step 8 — OR add the no-subscription repo (most home / lab users)\ncat > /etc/apt/sources.list.d/proxmox.sources << EOF\nTypes: deb\nURIs: http://download.proxmox.com/debian/pve\nSuites: trixie\nComponents: pve-no-subscription\nSigned-By: /usr/share/keyrings/proxmox-archive-keyring.gpg\nEOF\n\n# Step 8.1 — Refresh and verify proxmox-ve candidate is 9.x\napt update && apt policy | sed -n '1,120p'\n\n# Step 9 — Update Ceph repo (only if you run Ceph)\ncat > /etc/apt/sources.list.d/ceph.sources << EOF\nTypes: deb\nURIs: http://download.proxmox.com/debian/ceph-squid\nSuites: trixie\nComponents: no-subscription\nSigned-By: /usr/share/keyrings/proxmox-archive-keyring.gpg\nEOF\n\n# Step 10 — Remove old .list files now superseded by deb822 .sources\nrm -f /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/ceph.list\n\n# Step 11 — Final apt update\napt update",
"phase3Heading": "Fase 3 — Dist-upgrade",
"phase3Intro": "A atualização propriamente dita. O passo 12 é opcional mas recomendado para reduzir mensagens de auditoria. O 13 demora mais: responda às perguntas do dpkg com a tabela. O 13.1 aplica-se apenas a EFI e segue os problemas conhecidos oficiais.",
"phase3Code": "# Step 12 — Disable kernel audit messages (optional)\nsystemctl disable --now systemd-journald-audit.socket\n\n# Step 13 — The main upgrade (this takes a while)\napt dist-upgrade\n# (answer prompts using the table below)\n\n# Step 13.1 — EFI hosts: install grub for EFI (per known issues)\n[ -d /sys/firmware/efi ] && apt install grub-efi-amd64",
"dpkgHeading": "Respostas recomendadas para as prompts dpkg",
"dpkgIntro": "Respostas recomendadas pelo Proxmox: <strong>Y</strong> instala o novo ficheiro do responsável pelo pacote, substituindo o seu; <strong>N</strong> mantém o ficheiro atual. Em caso de dúvida, veja primeiro as diferenças:",
"dpkgTable": {
"fileHeader": "Ficheiro / prompt",
"answerHeader": "Resposta recomendada",
"whyHeader": "Porquê?",
"rows": [
{
"fileRich": "/etc/issue",
"answerRich": "<strong>N</strong> (manter o ficheiro atual)",
"whyRich": "Banner você está acostumado a ver",
"fileFont": true
},
{
"fileRich": "/etc/lvm/lvm.conf",
"answerRich": "<strong>Y</strong> (versão do responsável pelo pacote)",
"whyRich": "O PVE 9 precisa dos novos valores LVM predefinidos",
"fileFont": true
},
{
"fileRich": "/etc/ssh/sshd_config",
"answerRich": "<strong>Y</strong> para alterações apenas predefinidas; examine primeiro os ficheiros personalizados",
"whyRich": "Reveja as definições SSH locais e preserve o acesso antes de substituir o ficheiro. As alterações padrão incluem opções renomeadas e comentários.",
"fileFont": true
},
{
"fileRich": "/etc/default/grub",
"answerRich": "<strong>N</strong> se personalizado",
"whyRich": "Contém parâmetros de arranque, como IOMMU e passthrough PCI",
"fileFont": true
},
{
"fileRich": "/etc/chrony/chrony.conf",
"answerRich": "<strong>Y</strong> se não foi modificado; preserve primeiro as definições locais",
"whyRich": "O Trixie atualiza os valores de sincronização horária. Mova as definições locais para conf.d / sources.d do chrony antes de aceitar o novo ficheiro.",
"fileFont": true
},
{
"fileRich": "Reinícios de serviços durante a atualização",
"answerRich": "<strong>Sim</strong> (predefinição)",
"whyRich": "Reinicia a maioria dos serviços sem reiniciar o anfitrião",
"fileFont": false
},
{
"fileRich": "<code>apt-listchanges</code>",
"answerRich": "Pressione <kbd>q</kbd>",
"whyRich": "Fecha apenas o pager; as informações apresentadas resumem o registo de alterações",
"fileFont": false
}
]
},
"inspectCalloutTitle": "Inspecionando um conflito dpkg específico",
"inspectCalloutBody": "Numa pergunta do dpkg sobre configuração, <strong>D</strong> mostra as diferenças entre o ficheiro atual e o novo; <strong>Z</strong> abre uma shell para investigar. Assim pode decidir sem adivinhar.",
"phase4Heading": "Fase 4 — Após a atualização",
"phase4Intro": "Confirme que a atualização terminou corretamente, reinicie com o kernel PVE 9 e verifique a versão. Depois pode converter os antigos ficheiros <code>.list</code> restantes para deb822.",
"phase4Code": "# Step 14 — Re-run the readiness check (should be much cleaner now)\npve8to9 --full\n\n# Step 15 — Reboot to load the new kernel and PVE 9 daemons\nreboot\n\n# Step 16 — After reboot, confirm PVE 9.x\npveversion\n# Should show pve-manager/9.x.x\n\n# Step 17 — Optional: modernise the remaining legacy .list files to deb822\napt modernize-sources\n# (keeps .list backups as .bak)"
},
"clusterCeph": {
"heading": "Cluster e Ceph",
"clusterCalloutTitle": "Cluster: atualizar um nó de cada vez",
"clusterCalloutBody": "Detetado por <code>pvecm status</code>. <strong>Não</strong> atualize vários nós ao mesmo tempo. Mova os convidados, atualize o nó, reinicie e confirme a participação no cluster antes de continuar. Durante a atualização, funciona a migração em direto de versões PVE anteriores para posteriores; o sentido inverso geralmente não é suportado. Os grupos HA são convertidos automaticamente em regras HA quando todos os nós utilizam PVE 9.",
"cephCalloutTitle": "Ceph: atualizar Ceph PRIMEIRO, depois Proxmox",
"cephCalloutBody": "O Ceph já deve estar em 19.x Squid antes de atualizar o Proxmox. Siga a sequência oficial Quincy 17 → Reef 18 → Squid 19, atualizando pacotes e reiniciando os daemons Ceph de forma gradual pela ordem documentada. Confirme <code>ceph --version</code> antes de cada nó Proxmox. Procedimento completo: <cephlink>wiki de atualização de Ceph Reef para Squid</cephlink>."
},
"troubleshooting": {
"heading": "Resolução de Problemas",
"items": [
{
"title": "O script interrompe a execução: \"This script cannot be executed from the Proxmox web terminal\"",
"bodyRich": "Abra uma ligação SSH ou utilize consola / IPMI / iKVM e execute novamente. Inicie primeiro <code>tmux new -s pveupgrade</code> para resistir a breves interrupções de rede."
},
{
"title": "pve8to9 indica FAIL e a opção 1 de reparação produz \"command not found\"",
"bodyRich": "Se o erro mencionar <code>configure_repositories</code>, a cópia do script está desatualizada: a reparação atual usa cleanup_duplicate_repos e ensure_repositories. Atualize-a ou consulte os comandos manuais na opção 2. <code>apt-get update</code> atualiza as listas de pacotes, mas não corrige todas as verificações bloqueantes."
},
{
"title": "A simulação apt indica \"proxmox-ve will be REMOVED\"",
"bodyRich": "Os novos repositórios estão inacessíveis ou o nome da distribuição não foi substituído. Verifique <code>cat /etc/apt/sources.list.d/proxmox.sources</code>: a linha <code>Suites:</code> deve indicar <code>trixie</code>, não <code>bookworm</code>. <code>apt-cache policy proxmox-ve</code> deve apresentar um candidato 9.x do novo repositório."
},
{
"title": "dist-upgrade falha a meio",
"bodyRich": "Execute <code>apt-get -f install</code> para resolver dependências quebradas e, em seguida, execute novamente a atualização. Se isso falhar, verifique o log no <code>/var/log/pve8-a-pve9-&lt;timestamp&gt;.log</code> — as últimas linhas geralmente apontam o pacote ofensivo. Não reiniciar até que o <code>dpkg -l | grep ^iU</code> retorne vazio (sem pacotes semi-instalados)."
},
{
"title": "A máquina EFI não inicializa após reiniciar",
"bodyRich": "A instalação posterior de <code>grub-efi-amd64</code> resolve este problema. Se foi omitida ou falhou, arranque com o ISO Proxmox em modo de recuperação, monte o sistema raiz, execute chroot e <code>apt-get install grub-efi-amd64 &amp;&amp; update-grub</code>."
},
{
"title": "GUI não carrega após a atualização",
"bodyRich": "Execute <code>systemctl status pveproxy</code> e <code>systemctl restart pveproxy</code>. Se o problema continuar, procure o erro em <code>journalctl -u pveproxy -b</code>."
},
{
"title": "A rede não funciona após reiniciar",
"bodyRich": "Confirme que <code>/etc/network/interfaces</code> referencia dispositivos existentes e que <code>ifupdown2</code> está instalado: <code>apt install ifupdown2</code>. Se os nomes mudaram, consulte <netlink>Nomes persistentes de interfaces</netlink>."
},
{
"title": "Split-brain no cluster após atualizar um nó",
"bodyRich": "Os clusters mistos PVE 8 / PVE 9 são suportados durante a atualização. Funciona a migração em direto de versões anteriores para posteriores; o sentido inverso geralmente não é suportado. Se o nó aparecer desligado, verifique <code>corosync</code> e a configuração QDevice / rede. Execute <code>pvecm status</code> em cada nó para confirmar o quórum."
}
]
},
"files": {
"heading": "Ficheiros envolvidos",
"code": "scripts/utilities/upgrade_pve8_to_pve9.sh # main upgrade orchestrator\nscripts/utilities/pve8to9_check.sh # pre-check (separate menu option)\nscripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh # 17-step runbook\nscripts/global/update-pve8.sh # PVE 8 worker (final patches)\n/etc/apt/sources.list # bookworm → trixie sed\n/etc/apt/sources.list.d/proxmox.sources # created (deb822 PVE 9)\n/etc/apt/sources.list.d/debian.sources # created (deb822 trixie)\n/etc/apt/sources.list.d/ceph.sources # created if Ceph\n/etc/apt/sources.list.d/*.list # legacy files commented out / removed\n/var/log/pve8-a-pve9-'<'timestamp'>'.log # full upgrade log"
},
"references": {
"heading": "Referências oficiais",
"intro": "O procedimento manual do script segue estas fontes oficiais. Em caso de dúvida numa atualização, siga o wiki oficial: o ProxMenux ajuda na execução, mas a referência é o Proxmox.",
"items": [
{
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
"title": "Atualização de 8 para 9",
"desc": "A página principal do wiki Proxmox para a atualização 8 → 9. Fonte da verdade para cada comando no procedimento manual acima."
},
{
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
"title": "Atualização para Ceph Squid (19.x)",
"desc": "Passo prévio obrigatório para nós Ceph hiperconvergentes. O Ceph deve estar em 19.x Squid antes do PVE 9."
},
{
"href": "https://pve.proxmox.com/wiki/Roadmap",
"title": "Roteiro Proxmox VE",
"desc": "Notas de lançamento do PVE 9 e alterações desde 8.x: leia antes de atualizar."
},
{
"href": "https://www.debian.org/releases/trixie/releasenotes",
"title": "Notas de lançamento do Debian Trixie",
"desc": "O PVE 9 baseia-se no Debian Trixie. As notas Debian descrevem alterações do sistema operativo que também afetam o anfitrião."
},
{
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
"title": "Fórum de instalação Proxmox VE",
"desc": "Se algo correr mal durante a atualização, pesquise primeiro neste fórum: alguém pode já ter encontrado o mesmo problema."
},
{
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
"title": "Backup e Restauração",
"desc": "Uma atualização de versão principal não é reversível. Verifique sua disciplina de backup antes de começar."
}
]
},
"video": {
"heading": "Guia em vídeo",
"intro": "Prefere ver o upgrade correr de ponta a ponta antes de fazê-lo sozinho? Este passeio demonstra o fluxo de atualização ProxMenux em tempo real.",
"title": "ProxMenux — Guia em vídeo para atualizar Proxmox VE 8 para 9",
"caption": "Vídeo externo no YouTube. Reprodução no modo de privacidade avançada, sem cookies até iniciar o vídeo."
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/utils/system-update",
"label": "Atualização do sistema Proxmox",
"tail": " — para atualizações regulares dentro da mesma versão principal (8.4.1 → 8.4.5, etc.)."
},
{
"href": "/docs/utils",
"label": "Visão geral dos utilitários",
"tail": " — voltar à visão geral da secção."
}
]
}
}
@@ -0,0 +1,161 @@
{
"meta": {
"title": "Criador de ISO do UUP Dump | Documentação ProxMenux",
"description": "Crie uma ISO de instalação do Windows atualizada no host Proxmox com o criador de ISO do UUP Dump do ProxMenux. Automatiza a instalação de dependências, a transferência e a conversão dos ficheiros UUP numa ISO de arranque para criar uma VM.",
"ogTitle": "Criador de ISO do UUP Dump | Documentação ProxMenux",
"ogDescription": "Crie uma ISO do Windows atualizada do UUP Dump usando ProxMenux. Dependências, download e conversão são totalmente automatizados.",
"ogImageAlt": "ProxMenux — Criador de ISO do UUP Dump"
},
"header": {
"title": "Criador de ISO do UUP Dump",
"description": "Crie uma ISO de instalação do Windows atualizada no host Proxmox com o UUP Dump. O ProxMenux gere as dependências, transfere os ficheiros UUP em paralelo, executa o conversor UUP Dump e move a ISO para o diretório de saída escolhido, que por predefinição é o armazenamento ISO Proxmox detetado.",
"section": "Utilitários"
},
"intro": {
"title": "O que este script faz",
"body": "Forneça o URL gerado por uupdump.net após escolher a compilação, a língua e a edição. O script instala as dependências em falta, transfere o conversor UUP Dump e os ficheiros UUP, cria uma ISO de arranque do Windows e move-a para o diretório de saída escolhido. O armazenamento ISO Proxmox detetado é proposto como destino predefinido."
},
"hero": {
"imageAlt": "UUP Dump ISO Creator entrada em ProxMenux",
"caption": "UUP Dump ISO Creator entrada em ProxMenux"
},
"what": {
"heading": "O que é UUP Dump?",
"intro": "O UUP Dump é um serviço da comunidade que permite transferir os ficheiros originais Unified Update Platform (UUP) usados pelo Windows Update para distribuir o Windows. Estes ficheiros podem ser reunidos numa ISO de arranque padrão. Permite obter:",
"items": [
"A mais recente compilação do Windows (incluindo canais de visualização do Insider).",
"Uma compilação histórica específica que não está mais listada na página de download da Microsoft.",
"Arquivos limpos e não modificados foram obtidos diretamente dos servidores da Microsoft.",
"A combinação exata de edições e idiomas que você deseja em uma única ISO."
],
"learnMore": "Saiba mais sobre a página de projeto <extlink>UUP Dump</extlink>."
},
"automates": {
"heading": "O que o script automatiza"
},
"dependencies": {
"heading": "Dependências",
"intro": "O script começa por verificar as ferramentas necessárias para transferir os ficheiros UUP e criar a ISO. As que faltam são instaladas com <code>apt-get</code>:",
"headerPackage": "Pacote",
"headerRole": "Papel",
"rows": [
{
"pkg": "curl",
"roleRich": "Transferências HTTP para iniciar o conversor."
},
{
"pkg": "aria2",
"roleRich": "Downloader paralelo usado para cada carga útil UUP."
},
{
"pkg": "cabextract",
"roleRich": "Extrai pacotes do Microsoft CAB."
},
{
"pkg": "wimtools",
"roleRich": "Cria <code>install.wim</code> (wimlib-imagex)."
},
{
"pkg": "genisoimage",
"roleRich": "Escreve a ISO final inicializável (ou <code>mkisofs</code>)."
},
{
"pkg": "chntpw",
"roleRich": "Modifica as estruturas do registo Windows durante a criação."
}
],
"manualIntro": "Equivalente manual – se você precisar instalá-los você mesmo:",
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
},
"flow": {
"heading": "Download e conversão",
"steps": [
"Detecta o armazenamento ISO Proxmox (via <code>pvesm status -content iso</code>) ou volta para <code>/var/lib/vz/template/iso</code>.",
"Pede uma pasta base para arquivos temporários (padrão <code>/root/uup-temp</code>).",
"Transfere o conversor UUP Dump de <code>git.uupdump.net</code>.",
"Extrai <code>id</code>, <code>pack</code> e <code>edition</code> do URL colado.",
"Chama <code>https://uupdump.net/get.php?…&aria2=2</code> para gerar uma lista de download aria2.",
"Transfere todos os ficheiros UUP para <code>UUPs/</code> com aria2, em paralelo e com possibilidade de retoma.",
"Executa <code>convert.sh wim UUPs 1</code> do conversor para produzir a ISO final.",
"Move a ISO para o diretório de saída escolhido e elimina os ficheiros temporários."
]
},
"aria2": {
"heading": "Opções de transferência aria2 utilizadas",
"code": "aria2c --no-conf --console-log-level=warn --log-level=info \\\n --log=aria2_download.log \\\n -x16 -s16 -j5 -c -R \\\n -d\"$destDir\" -i\"$tempScript\"",
"flags": [
"<code>-x16</code> — até 16 ligações por servidor.",
"<code>-s16</code> — divide cada ficheiro em 16 segmentos.",
"<code>-j5</code> — transfere 5 ficheiros em paralelo.",
"<code>-c</code> — retoma os downloads parciais.",
"<code>-R</code> — aplica ao ficheiro transferido a data e a hora do ficheiro remoto, quando disponíveis."
],
"runtime": "A duração típica ronda os 10 minutos e depende sobretudo da velocidade da ligação à Internet e da carga dos servidores de transferência UUP Dump."
},
"step1": {
"heading": "Passo 1 · Obter um URL UUP Dump",
"intro": "Antes de executar o script, você precisa de um URL UUP Dump que inclua os parâmetros de consulta <code>id</code>, <code>pack</code> e <code>edition</code>. Gere-o em <extlink>uupdump.net</extlink>:",
"stepBadge": "Etapa",
"items": [
{
"title": "Escolha uma versão do Windows",
"img": "/iso-creator/step-1-select-version-windows.png",
"caption": "UUP Dump página principal — escolha uma versão do Windows",
"body": "Abra a página inicial do UUP Dump e escolha a versão do Windows que você deseja."
},
{
"title": "Escolha uma compilação específica",
"img": "/iso-creator/step-2-select-version-windows.png",
"caption": "Escolha uma compilação específica",
"body": "Escolha a compilação: a mais recente, um canal Insider Preview ou uma compilação mais antiga ainda disponível."
},
{
"title": "Escolha um idioma",
"img": "/iso-creator/step-3-select-version-windows.png",
"caption": "Escolha um idioma",
"body": "Escolha a língua a incluir na ISO."
},
{
"title": "Escolher edições",
"img": "/iso-creator/step-4-select-version-windows.png",
"caption": "Escolha as edições a incluir",
"body": "Escolha as edições a incluir na ISO (Home, Pro, Enterprise, …). Pode combinar várias."
},
{
"title": "Copiar o URL",
"img": "/iso-creator/step-5-select-version-windows.png",
"caption": "Copiar o URL da barra de endereços",
"bodyRich": "Na página final, copie o URL <em> da barra de endereços do navegador</em>. Deve conter <code>id=…</code>, <code>pack=…</code> e <code>edition=…</code>. Essa é a string que o script analisará."
}
]
},
"step2": {
"heading": "Passo 2 · Execute o criador",
"intro": "Com a URL na mão, abra ProxMenux e inicie o criador:",
"stepBadge": "Etapa",
"items": [
{
"title": "Iniciar UUP Dump ISO Creator",
"img": "/iso-creator/start-uupdump-iso-creator.png",
"caption": "Iniciar UUP Dump ISO Creator de ProxMenux",
"bodyRich": "No ProxMenux, abra <strong>Utilities → UUP Dump ISO Creator</strong>. O script verifica as dependências e o diretório ISO antes de pedir os dados."
},
{
"title": "Colar o URL UUP Dump",
"img": "/iso-creator/add-url-iso-creator.png",
"caption": "Colar o URL que copiou do uupdump.net",
"body": "Colar o URL na janela de entrada. O script valida que os três parâmetros necessários estão presentes; se algum estiver faltando, ele aborta de forma limpa."
},
{
"title": "Aguarde que a construção termine",
"img": "/iso-creator/end-uupdump-iso-creator.png",
"caption": "Compilação terminada — ISO está pronta no armazenamento ISO Proxmox",
"bodyRich": "A consola mostra o progresso do aria2 e depois a saída do conversor. A ISO terminada é movida para o diretório de saída escolhido. Se estiver num armazenamento ISO Proxmox configurado, pode ser selecionada em <strong>Create VM → System Windows → Install with ISO from UUP Dump</strong>."
}
]
},
"tempFiles": {
"title": "Ficheiros temporários",
"body": "A pasta temporária predefinida é <code>/root/uup-temp</code>, com as transferências em <code>UUPs/</code> e o conversor em <code>converter/</code>. Um caminho base personalizado recebe um subdiretório de sessão separado. Os ramos de criação bem-sucedida e de ausência de ISO gerada eliminam a sessão temporária. Falhas ou cancelamentos anteriores podem deixar ficheiros temporários."
}
}