mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
Merge pull request #491 from jcastro/docs/review-utils
docs: review utility documentation in all seven translations
This commit is contained in:
@@ -110,7 +110,7 @@ export default async function UpgradePve8Pve9Page({
|
||||
)
|
||||
const cephlink = (chunks: React.ReactNode) => (
|
||||
<a
|
||||
href="https://pve.proxmox.com/wiki/Ceph_Squid"
|
||||
href="https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-blue-700 hover:underline inline-flex items-center gap-1"
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "VM nach OVA / OVF exportieren | ProxMenux-Dokumentation",
|
||||
"description": "Exportieren Sie eine Proxmox-VM mit dem DMTF-Standardschema in ein portables OVA-Archiv oder OVF-Verzeichnis. VMDK-Festplatten im Format streamOptimized und SHA1-Manifest. Importierbar in VMware ESXi / Workstation / Fusion, VirtualBox und wieder in Proxmox.",
|
||||
"ogTitle": "VM nach OVA / OVF exportieren | ProxMenux-Dokumentation",
|
||||
"ogDescription": "Wandeln Sie eine Proxmox-VM in ein portables OVA- / OVF-Paket um, das mit VMware und VirtualBox kompatibel ist."
|
||||
},
|
||||
"header": {
|
||||
"title": "VM nach OVA / OVF exportieren",
|
||||
"description": "Wandelt eine Proxmox-VM mit dem DMTF-OVF-Standardschema in ein portables OVA-Paket (ein TAR-Archiv) oder OVF-Paket (Deskriptor und VMDK-Dateien) um. Die Festplatten werden mit qemu-img in VMDK im Format streamOptimized konvertiert. Das Ergebnis lässt sich in VMware (ESXi / Workstation / Fusion), VirtualBox und mit dem Importwerkzeug wieder in Proxmox importieren.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Was das macht",
|
||||
"body": "Liest die Konfiguration einer gestoppten VM, konvertiert jede Festplatte in VMDK im Format streamOptimized, erzeugt einen OVF-Deskriptor und ein SHA1-Manifest und verpackt alles als einzelne <code>.ova</code>-Datei oder als <code>-ovf</code>-Verzeichnis. Die Quell-VM wird dabei nicht verändert."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "VM-Auswahl",
|
||||
"body": "Beim Start zeigt das Skript alle VMs aus <code>qm list</code> mit VMID, Name und Status an. Wählen Sie die zu exportierende VM aus:",
|
||||
"imgAlt": "Dialog zur Auswahl der zu exportierenden VM mit einer Liste aller VMs"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "Die VM muss gestoppt sein",
|
||||
"intro": "Für ein konsistentes Festplattenabbild muss die VM gestoppt sein. Falls die ausgewählte VM läuft, bietet ProxMenux an, sie herunterzufahren:",
|
||||
"items": [
|
||||
"Geordnetes Herunterfahren mit <code>qm shutdown $VMID --timeout 120</code> (wartet 2 Minuten auf das Herunterfahren des Gasts über ACPI).",
|
||||
"Nach Ablauf der Wartezeit wird ein erzwungener Stopp angeboten: <code>qm stop $VMID</code> (entspricht dem Abschalten der Stromversorgung).",
|
||||
"Wenn Sie beide ablehnen, wird der Export abgebrochen - es werden keine Daten berührt."
|
||||
],
|
||||
"warnTitle": "Ein erzwungener Stopp entspricht dem Abschalten der Stromversorgung",
|
||||
"warnBody": "<code>qm stop</code> entspricht dem Ziehen des Netzsteckers. Beim nächsten Start kann eine Reparatur des Gastdateisystems nötig sein. Nutzen Sie nach Möglichkeit das geordnete Herunterfahren und erzwingen Sie den Stopp nur bei Gästen, die nicht reagieren."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Formatauswahl: OVA vs. OVF",
|
||||
"headerFormat": "Format",
|
||||
"headerOutput": "Ausgabe",
|
||||
"headerPros": "Vorteile",
|
||||
"headerCons": "Nachteile",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Eine einzelne, in sich geschlossene Datei, die sich einfach verschieben, per sftp übertragen oder an ein Ticket anhängen lässt.",
|
||||
"cons": "Benötigt ~220% der virtuellen Festplattengröße (zusätzlicher Platz für das TAR-Archiv während der Erstellung)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% der virtuellen Festplattengröße. Leichter zu prüfen, da der Deskriptor reines XML ist. Kann vor dem Import bearbeitet werden.",
|
||||
"cons": "Mehrere Dateien, die gemeinsam übertragen werden müssen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Zielverzeichnis",
|
||||
"body": "Wählen Sie ein voreingestelltes Verzeichnis (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) oder geben Sie einen eigenen Pfad ein. Das Skript prüft vor dem Start, ob das Verzeichnis beschreibbar ist, und warnt bei knappem Speicherplatz.",
|
||||
"calloutTitle": "Faustregel für freien Speicherplatz",
|
||||
"calloutBody": "Planen Sie für den OVF-Export einer VM mit insgesamt 100 GB virtueller Festplattengröße ~120 GB freien Platz ein, für OVA ~220 GB. Bei weitgehend leeren Festplatten kann der tatsächliche Bedarf geringer sein. Das OVA-Archiv wird als unkomprimiertes TAR erstellt, während die temporären VMDK-Dateien noch vorhanden sind. Planen Sie daher Platz für beides ein. Geht der Platz während des Exports aus, räumt der EXIT-Handler das temporäre Verzeichnis auf und Sie müssen neu beginnen."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Was im Paket landet",
|
||||
"intro": "Für eine OVA / OVF namens <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": "Was exportiert wird",
|
||||
"items": [
|
||||
"<strong>Festplatten:</strong> Alle Einträge <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> und <code>ide*</code> in der VM-Konfiguration werden in VMDK im Format streamOptimized konvertiert.",
|
||||
"<strong>vCPU-Anzahl</strong> (RASD ResourceType 3) und <strong>Arbeitsspeicher</strong> in MiB (ResourceType 4).",
|
||||
"<strong>Anzahl der Netzwerkkarten</strong> (ResourceType 10, nur die Anzahl, nicht Bridge oder Modell).",
|
||||
"<strong>VM-Name</strong> und ein Hinweis auf den Betriebssystemtyp."
|
||||
],
|
||||
"notTitle": "Was nicht exportiert wird",
|
||||
"notItems": [
|
||||
"CD-ROM- und ISO-Mounts (bewusst ausgeschlossen).",
|
||||
"Cloud-init-Laufwerke (bewusst ausgeschlossen).",
|
||||
"Die konkrete Bridge und das Modell der Netzwerkkarte (nur die Anzahl bleibt erhalten).",
|
||||
"BIOS- / UEFI-Auswahl, die beim Import neu festgelegt werden muss.",
|
||||
"Konfiguration der PCI-Durchreichung.",
|
||||
"Snapshots - nur der aktuelle Zustand wird erfasst.",
|
||||
"Optionen auf VM-Ebene (NUMA, hugepages, hotplug, …)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Plattenumwandlung",
|
||||
"intro": "Jede Festplatte wird konvertiert mit:",
|
||||
"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> ist ein in einem Durchlauf lesbares VMware-Format, das von ESXi 6.7+, VMware Workstation, VirtualBox und Proxmox selbst unterstützt wird. Es ist das am breitesten unterstützte VMDK-Unterformat und eignet sich für portable VMs. Der Nachteil: Es bietet keinen wahlfreien Zugriff und kann deshalb ohne Umwandlung nicht direkt eingebunden werden."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "SHA1-Manifest",
|
||||
"intro": "Jedes Paket enthält eine <code>.mf</code>-Datei mit SHA1-Hashes des OVF-Deskriptors und jedes 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": "In der OVF-Spezifikation ist das Manifest optional; viele Importprogramme ignorieren es. Es hilft jedoch zu prüfen, ob das Paket unbeschädigt übertragen wurde. Prüfen Sie es manuell mit <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importieren des Ergebnisses",
|
||||
"intro": "Das exportierte Paket kann in folgende Systeme importiert werden:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — verwenden Sie das zugehörige Werkzeug ",
|
||||
"linkLabel": "VM von OVA / OVF importieren",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; wählen Sie die .ova- oder .ovf-Datei aus."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — Datei → Öffnen, wählen Sie .ova oder .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — Datei → Appliance importieren, .ova oder .ovf auswählen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"noSpaceTitle": "qemu-img convert bricht während der Umwandlung mit \"No space left on device\" ab",
|
||||
"noSpaceBody": "Am Ziel ist kein Speicherplatz mehr frei. Der EXIT-Handler räumt das temporäre Verzeichnis automatisch auf. Wählen Sie ein Ziel mit mehr freiem Platz (siehe Faustregel oben) und führen Sie den Export erneut aus.",
|
||||
"unsupportedHwTitle": "Der Export ist abgeschlossen, aber VMware verweigert den Import mit \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Einige ESXi-Versionen lehnen OVF-Deskriptoren ab, deren Hardwarefamilie sie nicht erkennen. Öffnen Sie die .ovf-Datei in einem Texteditor oder entpacken Sie zuerst die .ova-Datei. Suchen Sie <code><vssd:VirtualSystemType></code> und ändern Sie den Wert auf einen von ESXi akzeptierten Wert, etwa <code>vmx-13</code> für ESXi 6.5+. Als schnelle Umgehung können Sie VirtualBox ausprobieren, das weniger streng prüft.",
|
||||
"nicTitle": "Die importierte VM verwendet eine andere Netzwerkkarte oder einen anderen SCSI-Controller",
|
||||
"nicBody": "Die OVF-Datei übernimmt die Anzahl der Netzwerkkarten, nicht deren ursprüngliches Modell. Prüfen Sie die Netzwerkeinstellungen der importierten VM im Zielhypervisor. Für die VMware-Kompatibilität deklariert der Export einen lsilogic-SCSI-Controller. Beim Rückimport in Proxmox mit ProxMenux wird die VM mit einem LSI-Controller und e1000-Netzwerkkarten erstellt; wechseln Sie danach zu <code>VirtIO SCSI</code> und VirtIO, wenn der Gast passende Treiber besitzt.",
|
||||
"runningTitle": "Die VM lief und ich habe das Herunterfahren abgelehnt: Export abgebrochen",
|
||||
"runningBody": "Das Skript kann kein konsistentes Abbild erstellen, während auf die Festplatten geschrieben wird. Bestätigen Sie beim nächsten Mal das Herunterfahren oder fahren Sie die VM zuvor manuell herunter (<code>qm shutdown $VMID</code>) und starten Sie den Export erneut.",
|
||||
"slowTitle": "Die Festplattenumwandlung ist langsam",
|
||||
"slowBody": "<code>qemu-img convert</code> arbeitet mit einem Thread und liest die Quelle mit voller Geschwindigkeit. Rechnen Sie bei einer 100-GB-Festplatte auf einer mechanischen Festplatte mit 15–30 Minuten. Von NVMe zu NVMe geht es 5–10-mal schneller. Die Festplatten einer VM werden nacheinander umgewandelt; die Dauer wächst linear mit der gesamten virtuellen Größe."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Verwandte Themen",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "VM aus OVA / OVF importieren",
|
||||
"tail": " — das passende Werkzeug für den Rückimport."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Übersicht der Dienstprogramme",
|
||||
"tail": " — zurück zur Abschnittsübersicht."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "VM aus OVA / OVF importieren | ProxMenux-Dokumentation",
|
||||
"description": "Importieren Sie eine VM aus VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux in Proxmox VE. Entpackt OVA automatisch, liest OVF-Metadaten, erstellt die VM und importiert jede Festplatte in das native Speicherformat (qcow2 / raw).",
|
||||
"ogTitle": "VM aus OVA / OVF importieren | ProxMenux-Dokumentation",
|
||||
"ogDescription": "Importieren Sie VMs aus VMware-, VirtualBox- oder ProxMenux-Exporten in Proxmox. Festplatten werden automatisch in das native Speicherformat umgewandelt."
|
||||
},
|
||||
"header": {
|
||||
"title": "VM von OVA / OVF importieren",
|
||||
"description": "Importiert ein OVA / OVF-Paket in Proxmox VE: extrahiert OVA-Archive, analysiert den OVF-Deskriptor für vCPU / Speicher / NIC Anzahl und Festplattenreferenzen, erstellt dann die VM und importiert jede Festplatte über qm importdisk in den ausgewählten Speicher. Kompatibel mit Exporten von VMware (ESXi / Workstation / Fusion), VirtualBox und ProxMenux selbst.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Was das macht",
|
||||
"body": "Erstellt eine vollständige VM in Proxmox aus einem portablen Paket. Nach dem Import ist die VM startbereit. Für Leistung und Kompatibilität sollten Sie Netzwerkkartenmodell, Firmware und Betriebssystemtyp anschließend prüfen und anpassen."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Dateiauswahl",
|
||||
"intro": "Beim Start bietet das Skript zwei voreingestellte Verzeichnisse oder einen manuellen Pfad:",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> — das Standardverzeichnis Proxmox vzdump Backup.",
|
||||
"<code>/var/lib/vz/template/iso</code> — sinnvoll, wenn Sie die OVA-Datei per sftp dorthin übertragen haben.",
|
||||
"Manueller Pfad - für OVA / OVF-Dateien an anderer Stelle auf dem Host."
|
||||
],
|
||||
"outro": "Es listet dann jede <code>.ova</code>- und <code>.ovf</code>-Datei im ausgewählten Verzeichnis auf.",
|
||||
"imageAlt": "Dateiauswahldialog für den VM-Import"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Wie der Import funktioniert",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "OVA-/OVF-Eingabe",
|
||||
"detail": ".ova → tar xf nach\n /tmp/.proxmenux-import-*\n.ovf → direkt verwenden",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Analyse und Dialoge",
|
||||
"detail": "AWK liest OVF\n(Name, vCPU, RAM, NICs,\nFestplatten). Auswahl von\nVMID / Speicher / Bridge",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → Speicherformat)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "OVF-Analyse",
|
||||
"intro": "Ein <strong>gawk</strong>-Parser liest den OVF-Deskriptor und zieht die VM-Metadaten heraus. Der Parser verwendet die 3-Argumentform von <code>match()</code>, die gawk-spezifisch ist (mawk - die Standard-<code>awk</code> auf Debian / Proxmox - unterstützt sie nicht). Beim ersten Import installiert das Skript automatisch Gawk über das kanonische <code>ensure_repositories</code> + <code>install_single_package</code>-Paar, wenn es fehlt; nachfolgende Importe beginnen sofort. Felder extrahiert:",
|
||||
"headerField": "Feld",
|
||||
"headerSource": "Quelle in OVF",
|
||||
"headerDefault": "Standardwert bei fehlendem Feld",
|
||||
"rows": [
|
||||
{
|
||||
"field": "VM-Name",
|
||||
"source": "<Name> (erster Treffer)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "vCPU Anzahl",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Speicher (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "NIC-Zahl",
|
||||
"source": "Anzahl ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "OS-Typ",
|
||||
"source": "/Linux/ oder /Windows/ in der Beschreibung",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Plattenreferenzen",
|
||||
"source": "href Attribute enden mit .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "Keine (Import wird abgebrochen)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Mehrdeutigkeit der Speichereinheit",
|
||||
"body": "Der Parser rechnet erkannte Speichereinheiten in <strong>MiB</strong> um, darunter Bytes, KiB, MiB, GiB und unterstützte Textbezeichnungen. Fehlende oder unbekannte Einheiten werden <em>als MiB behandelt</em>. Vergleichen Sie nach dem Import <code>qm config $VMID | grep memory</code> mit dem dokumentierten RAM der Quell-VM und korrigieren Sie ihn bei Bedarf mit <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Importdialogfluss",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — vorgeschlagen wird die nächste freie ID (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>VM-Name</strong> — voreingestellt ist der aus OVF gelesene Name; Sie können ihn ändern.",
|
||||
"<strong>Zielspeicher</strong> — Auswahl aller Speicher mit dem Inhaltstyp <code>images</code>, ermittelt mit <code>pvesm status -content images</code>.",
|
||||
"<strong>Netzwerk-Bridge</strong> — Auswahl der Bridges aus <code>ip link show type bridge</code>. Bei nur einer wird sie automatisch gewählt; der Standard ist <code>vmbr0</code>.",
|
||||
"<strong>Bestätigung</strong> — zusammenfassender Dialog mit VMID, Name, vCPU, Speicher, NICs, Speicher, Bridge und der Liste der zu importierenden Festplatten. Abbrechen hier = nichts ändert sich."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "VM Erstellung",
|
||||
"intro": "Nach der Bestätigung läuft das Skript:",
|
||||
"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": "SCSI-Controller ist standardmäßig <code>lsi</code> (LSI Logic) für VMDK-Kompatibilität. NICs standardmäßig <code>e1000</code> (universelle Kompatibilität) auf der gewählten Brücke."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "Ablauf des Festplattenimports",
|
||||
"intro": "Für jede Plattenreferenz im OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importiert die Festplatte in einem vom Zielspeicher unterstützten Format und erstellt einen Eintrag <code>unusedN:</code> in der VM-Konfiguration.",
|
||||
"Das Skript sucht mit grep nach dem gerade erstellten Verweis <code>unusedN</code> in der Konfiguration.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — verbindet die Festplatte als <code>scsi0</code>, <code>scsi1</code>, ...",
|
||||
"<code>qm set $VMID --delete unusedN</code> — löscht den jetzt redundanten unbenutzten Marker."
|
||||
],
|
||||
"outro": "Der Start wird auf die erste SCSI-Festplatte gesetzt: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Empfohlene Anpassungen nach dem Import",
|
||||
"intro": "Der Import verwendet bewusst breit kompatible Einstellungen, damit die VM möglichst beim ersten Versuch startet. Sobald Sie den erfolgreichen Start bestätigt haben, können Sie über die Proxmox-Oberfläche oder CLI bessere Einstellungen wählen:",
|
||||
"headerSetting": "Einstellung",
|
||||
"headerDefault": "Standard nach dem Import",
|
||||
"headerRecommended": "Empfohlen (wenn Gast unterstützt)",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "NIC-Modell",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (deutlich schneller, benötigt Treiber im Gastsystem)"
|
||||
},
|
||||
{
|
||||
"setting": "SCSI-Controller",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (modernes Linux oder Windows mit VirtIO-Treibern)"
|
||||
},
|
||||
{
|
||||
"setting": "Firmware (BIOS / UEFI)",
|
||||
"default": "Proxmox-Standard (BIOS)",
|
||||
"recommended": "Firmware der Quell-VM übernehmen; bei Abweichungen kann der Start scheitern"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU Gastagent",
|
||||
"default": "Ausgeschaltet",
|
||||
"recommendedRich": "Aktivieren und <code>qemu-guest-agent</code> im Gast installieren (bessere Sicherungen und IP-Meldung)"
|
||||
},
|
||||
{
|
||||
"setting": "OS-Typ",
|
||||
"default": "l26 / win10 / other (heuristisch)",
|
||||
"recommended": "Überprüfen Sie das tatsächliche Gast-Betriebssystem"
|
||||
},
|
||||
{
|
||||
"setting": "Anzeige",
|
||||
"default": "Standard",
|
||||
"recommended": "VirtIO-GPU oder SPICE (bessere Konsolenleistung)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Firmware-Mismatch = kein Boot",
|
||||
"body": "Wenn die Quelle VM UEFI war, Proxmox sie jedoch als BIOS erstellt (oder umgekehrt), findet der Gast keine bootfähige Festplatte. Überprüfen Sie die Einstellungen des OVF oder des ursprünglichen VM für <em>FirmwareType / Firmware</em> und stellen Sie dasselbe in Proxmox ein: <code>qm set $VMID --bios ovmf</code> für UEFI; Standard ist <code>seabios</code> für BIOS."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Was nicht importiert wird",
|
||||
"items": [
|
||||
"<strong>Konkrete Netzwerk-Bridges</strong> — nur die Anzahl der Netzwerkkarten. Alle verwenden die beim Import ausgewählte Bridge.",
|
||||
"<strong>Netzwerkkartenmodell</strong> — voreingestellt ist e1000.",
|
||||
"<strong>BIOS / UEFI-Firmware Typ</strong> — Standard auf Proxmox Standard (BIOS).",
|
||||
"<strong>Konfiguration der PCI-Durchreichung</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"<strong>Cloud-init</strong>-Laufwerke.",
|
||||
"<strong>Snapshots</strong> — nur der aktuelle Zustand.",
|
||||
"<strong>USB / serielle / parallele Geräte</strong> deklariert im OVF.",
|
||||
"<strong>VM Tags / Notizen / Start-on-Boot</strong> Optionen."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"orphanTitle": "VM erstellt, aber Festplattenimport fehlgeschlagen: teilweise VM bleibt zurück",
|
||||
"orphanIntro": "Bei fehlgeschlagenem Import bietet das Skript an, die teilweise erstellte VM und ihre importierten Festplatten zu entfernen. Haben Sie abgelehnt oder ist die automatische Löschung fehlgeschlagen, prüfen Sie die VM und entfernen Sie sie manuell mit:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Beheben Sie dann die zugrunde liegende Ursache (wahrscheinlich Speicherplatz auf dem Zielspeicher) und importieren Sie erneut.",
|
||||
"memTitle": "Importierte VM hat 8 MB RAM (oder 8 TB)",
|
||||
"memIntro": "Der Parser rechnet erkannte AllocationUnits in MiB um. Fehlende oder unbekannte Einheiten behandelt er als MiB. Prüfen Sie die OVF-Datei und vergleichen Sie den importierten Wert mit der Quell-VM. Korrigieren Sie den Arbeitsspeicher bei Bedarf:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "Importierte VM startet nicht: \"No bootable device\"",
|
||||
"bootIntro": "Häufige Ursache: BIOS und UEFI passen nicht zusammen. Die Quell-VM verwendete UEFI, wurde in Proxmox aber mit BIOS erstellt. Stellen Sie die passende Firmware ein:",
|
||||
"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": "Eine weitere häufige Ursache: Die Startreihenfolge verweist auf scsi0, das Betriebssystem liegt aber auf scsi1. Ändern Sie die Startreihenfolge unter den VM-Optionen.",
|
||||
"bsodTitle": "Aus VMware exportierte Windows-VM zeigt beim ersten Start einen Bluescreen",
|
||||
"bsodBody": "Windows reagiert empfindlich auf einen Wechsel des Festplattencontrollers. Installieren Sie entweder VirtIO-Treiber <em>vor</em> dem Export aus VMware oder behalten Sie zunächst den Standardcontroller <code>lsi</code>. Wechseln Sie erst nach erfolgreichem Gaststart und Installation der VirtIO-Treiber in Windows zu VirtIO SCSI.",
|
||||
"zeroTitle": "OVF-Parser meldet 0 Festplatten",
|
||||
"zeroBody": "Die OVF-Datei kann Festplattenverweise verwenden, die der Parser nicht erkennt. Öffnen Sie sie und suchen Sie für jede Festplatte einen Eintrag <code><File ovf:href=\"...vmdk\" ...></code>. Ist die Festplatte tatsächlich VMDK, hat aber eine ungewöhnliche Endung wie <code>.dat</code>, benennen Sie sie in <code>.vmdk</code> um und passen Sie den OVF-Verweis an. Umbenennen wandelt das Format nicht um.",
|
||||
"awkTitle": "awk: Syntaxfehler bei oder nahe , — Parser schlägt bei jedem OVA / OVF fehl",
|
||||
"awkIntro": "Der OVF-Parser verwendet gawk-spezifische Syntax: <code>match()</code> mit drei Argumenten. mawk, das standardmäßige <code>awk</code> unter Debian / Proxmox, unterstützt sie nicht. Aktuelle Skriptversionen installieren gawk beim ersten Einsatz automatisch über <code>ensure_repositories</code> + <code>install_single_package</code>. Bei einer älteren Kopie installieren Sie es manuell:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Dann führen Sie den Import erneut durch.",
|
||||
"netTitle": "Netzwerk funktioniert nicht nach dem ersten Booten",
|
||||
"netBody": "Das Netzwerkkartenmodell e1000 in Proxmox passt möglicherweise nicht zu den Gasttreibern, oder die gewählte Bridge ist falsch. Ändern Sie in der Hardwareansicht der VM das Modell unter Network Device → Model. Prüfen Sie außerdem <code>ip a</code> im Gast: Die Schnittstelle kann anders heißen, etwa ens18 statt eth0, während die Netzwerkkonfiguration noch den alten Namen verwendet."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Beteiligte Dateien",
|
||||
"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": "Verwandte Themen",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "VM nach OVA / OVF exportieren",
|
||||
"tail": " — das passende Werkzeug für den Export."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Übersicht der Dienstprogramme",
|
||||
"tail": " — zurück zur Abschnittsübersicht."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox-Dienstprogramme — UUP Dump, Upgrade von PVE 8 auf 9, OVA-Export/-Import | ProxMenux",
|
||||
"description": "Dienstprogramme für den Proxmox-VE-Alltag: Windows-ISOs mit UUP Dump erstellen, ausgewählte CLI-Werkzeuge installieren, das Proxmox-System sicher aktualisieren, das Versionsupgrade von PVE 8 auf PVE 9 durchführen sowie VMs als OVA / OVF exportieren und aus VMware oder VirtualBox importieren.",
|
||||
"ogTitle": "Proxmox-Dienstprogramme — UUP Dump, Upgrade von PVE 8 auf 9, OVA-Export/-Import",
|
||||
"ogDescription": "Erstellen Sie Windows ISOs, installieren Sie CLI-Tools, führen Sie ein sicheres Update aus, aktualisieren Sie PVE 8 auf PVE 9, exportieren / importieren Sie OVA / OVF-VMs.",
|
||||
"twitterTitle": "Proxmox Dienstprogramme | ProxMenux",
|
||||
"twitterDescription": "ISO-Erstellung, CLI-Werkzeuge, Proxmox-Aktualisierung, Upgrade PVE 8→9, portable VMs im OVA- / OVF-Format."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dienstprogramme und Werkzeuge",
|
||||
"description": "Sechs Werkzeuge ergänzen den täglichen Proxmox-VE-Arbeitsablauf: ISO-Erstellung, Systemwartung und portable VMs. Jede Option ist unabhängig. Wählen Sie die benötigte aus; erst auf Ihre Anforderung wird etwas installiert.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Wofür dieses Menü ist",
|
||||
"body": "Drei Gruppen unabhängiger, aber häufig benötigter Werkzeuge: <strong>eine Windows-ISO erstellen</strong> mit UUP Dump, <strong>den Proxmox-Host warten</strong> (CLI-Werkzeuge, Aktualisierungen und Versionsupgrade) und <strong>VMs importieren und exportieren</strong> mit dem Standardformat OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Öffnen des Menüs",
|
||||
"body": "Wählen Sie im Hauptmenü von ProxMenux <strong>Utilities</strong>. Sie werden sehen:",
|
||||
"imageAlt": "Dienstprogrammmenü mit UUP Dump, Systemwerkzeugen, Aktualisierung, Versionsupgrade, Export und Import"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Drei Werkzeuggruppen",
|
||||
"intro": "Die sechs Werkzeuge fallen in drei unabhängige Gruppen. Klicken Sie auf eine Karte unten, um zum passenden Abschnitt zu springen.",
|
||||
"iso": {
|
||||
"title": "ISO-Erstellung",
|
||||
"body": "Erstellen Sie offizielle Windows ISOs von UUP Dump auf dem Proxmox-Host selbst.",
|
||||
"bullets": [
|
||||
"Freigabelink von UUP Dump → bootfähige ISO",
|
||||
"Abhängigkeiten automatisch installiert",
|
||||
"Das Ergebnis wird im ISO-Vorlagenverzeichnis von Proxmox gespeichert"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Systemwartung",
|
||||
"body": "Halten Sie den Host in gutem Zustand: mit CLI-Werkzeugen, regelmäßigen Aktualisierungen und dem Versionsupgrade, wenn es ansteht.",
|
||||
"bullets": [
|
||||
"Installationsprogramm für Systemwerkzeuge (25 CLI-Werkzeuge)",
|
||||
"Proxmox-Systemaktualisierung (apt + dist-upgrade)",
|
||||
"Versionsupgrade PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "VM Portabilität",
|
||||
"body": "Bewegen Sie VMs in und aus Proxmox mit dem Standard-OVA / OVF-Format.",
|
||||
"bullets": [
|
||||
"Proxmox-VM exportieren → OVA / OVF",
|
||||
"OVA / OVF importieren → Proxmox-VM",
|
||||
"Kompatibel mit VMware und VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "Das PVE 8 → 9 Upgrade ist destruktiv und nicht reversibel",
|
||||
"body": "Ein Versionsupgrade ersetzt die Debian-Basis (Bookworm → Trixie) und die Proxmox-Komponenten direkt im bestehenden System. Es gibt keinen Rückweg. Sie benötigen vor dem Start <strong>geprüfte Sicherungen</strong> aller VMs und CTs sowie <strong>Zugriff über Konsole / IPMI / iKVM</strong>. Deshalb verweigert das Upgrade-Werkzeug die Ausführung im Proxmox-Webterminal."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "ISO-Erstellung",
|
||||
"body": "Erstellen Sie direkt auf dem Proxmox-Host eine neue, aktuelle Windows-Installations-ISO. Das Skript automatisiert den gesamten UUP-Dump-Ablauf: Installation der Abhängigkeiten (aria2c, cabextract, wimlib-imagex, …), paralleler Download der Aktualisierungsdateien mit aria2 und Umwandlung in eine bootfähige ISO. Diese wird unter <code>/var/lib/vz/template/iso</code> gespeichert und kann einer VM zugewiesen werden.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP-Dump-ISO-Erstellung",
|
||||
"description": "Erstellen Sie eine aktuelle Windows-Installations-ISO über einen Freigabelink von UUP Dump. Abhängigkeiten, Download und Umwandlung werden vollständig automatisch abgewickelt. Die fertige ISO wird unter /var/lib/vz/template/iso für die VM-Erstellung gespeichert.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Systemwartung",
|
||||
"body": "Drei Werkzeuge decken tägliche und gelegentliche Arbeiten am Host ab. Das <strong>Installationsprogramm für Systemwerkzeuge</strong> richtet die nach einer Neuinstallation benötigten CLI-Werkzeuge ein. Die <strong>Proxmox-Systemaktualisierung</strong> dient der wöchentlichen oder monatlichen Wartung. Das <strong>Upgrade von PVE 8 auf PVE 9</strong> ist der große Wechsel beim nächsten Hauptversionszyklus. Zusätzliche Sicherheitsprüfungen sind vorgesehen, weil er nicht rückgängig gemacht werden kann.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Installationsprogramm für Systemdienstprogramme",
|
||||
"description": "Auswahl von 25 bewährten CLI-Werkzeugen (htop, btop, iperf3, tmux, ...) mit individueller Auswahl oder vordefinierten Gruppen (Basis, Entwicklung, Komprimierung, Multiplexer, Analyse, Netzwerk). Verwendet den standardisierten Ablauf mit Repository und Prüfbefehl.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Proxmox-Systemupdate",
|
||||
"description": "Repository-Prüfung + apt update + apt dist-upgrade mit Rückfrage vor dem Neustart. Erkennt die PVE-Hauptversion (8 oder 9), behält die konfigurierten Repositories bei und fragt nach, bevor ein Host ohne Abonnement auf das no-subscription-Repository umgestellt wird. Anschließend wird autoremove ausgeführt.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Aktualisieren Sie PVE 8 auf PVE 9",
|
||||
"description": "Versionsupgrade (Debian Bookworm → Trixie + PVE 8 → 9). Vorabprüfungen, Repository-Migration, automatischer oder interaktiver Modus, Prüfung nach dem Upgrade und Neustart. Verweigert die Ausführung im Webterminal.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "VM Portabilität (OVA / OVF)",
|
||||
"body": "OVA und OVF sind hypervisorübergreifende Paketformate des DMTF-Standards, die von VMware, VirtualBox und Proxmox unterstützt werden. Die beiden Werkzeuge ermöglichen Export und Rückimport: Eine aus Proxmox exportierte VM lässt sich wieder importieren und umgekehrt. Damit können Sie Arbeitslasten von ESXi migrieren, eine portable VM-Sicherung erstellen oder eine vorbereitete VM mit jemandem teilen, der VirtualBox nutzt.",
|
||||
"options": [
|
||||
{
|
||||
"title": "VM nach OVA / OVF exportieren",
|
||||
"description": "Wandeln Sie eine Proxmox-VM in ein portables OVA-Archiv oder OVF-Verzeichnis um. DMTF-Standardschema, SHA1-Manifest, VMDK-Festplatten im Format streamOptimized. Importierbar in VMware (ESXi / Workstation / Fusion), VirtualBox und wieder in Proxmox.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "VM von OVA / OVF importieren",
|
||||
"description": "Importieren Sie einen Export aus VMware / VirtualBox / ProxMenux in Proxmox. Das Werkzeug entpackt OVA automatisch, liest die OVF-Metadaten, erstellt die VM und importiert jede Festplatte in das native Format des Speichers.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Eine Notiz zum Speicherplatz für den Export / Import",
|
||||
"body": "Beide Werkzeuge wandeln Festplattenformate um: Der Export verwendet <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>, der Import <code>qm importdisk</code> für die Rückwandlung in das native Speicherformat (qcow2 / raw). Planen Sie für den Export <strong>~120% der virtuellen Festplattengröße</strong> für OVF und <strong>~220%</strong> für OVA ein. Das OVA-Archiv wird als unkomprimiertes TAR erstellt, während die temporären VMDK-Dateien noch vorhanden sind. Prüfen Sie vor dem Start, ob im Zielverzeichnis ausreichend Platz frei ist."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Wie das Menü zusammenpasst",
|
||||
"body": "Jedes Werkzeug hat ein eigenes Skript unter <code>scripts/utilities/</code>. Die Proxmox-Systemaktualisierung ruft ein einziges Arbeitsskript unter <code>scripts/global/</code> auf: update-pve-safe.sh erkennt die Hauptversion und verarbeitet PVE 8 und PVE 9. Das Upgrade PVE 8 → 9 bietet im eigenen Menü zwei weitere Aktionen: eine eigenständige <em>Prüfung vor dem Upgrade</em> (führt <code>pve8to9 --full</code> aus) und eine schreibgeschützte <em>Anleitung für das manuelle Upgrade</em> (17 Schritte). Damit können Benutzer den Ablauf prüfen oder von Hand ausführen."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox-Systemaktualisierung | ProxMenux-Dokumentation",
|
||||
"description": "Aktualisiert Pakete innerhalb der aktuellen Proxmox-Hauptversion mit apt-get update und apt full-upgrade -y. Prüft Speicherplatz und konfigurierte Repositories, versucht GPG-Schlüssel wiederherzustellen, prüft und repariert alte LVM-PV-Header, erstellt bei Bedarf verwaltete DKMS-Treiber neu, führt autoremove/autoclean aus und bietet einen nötigen Neustart an.",
|
||||
"ogTitle": "Proxmox-Systemaktualisierung | ProxMenux-Dokumentation",
|
||||
"ogDescription": "apt full-upgrade mit Repository-Prüfung, autoremove/autoclean und Rückfrage bei erforderlichem Neustart."
|
||||
},
|
||||
"header": {
|
||||
"title": "Proxmox-Systemupdate",
|
||||
"description": "Ruft ein einziges Arbeitsskript (<code>update-pve-safe.sh</code>) auf, das die laufende Proxmox-Hauptversion erkennt. Konfigurierte Repositories werden über die Proxmox-API gelesen und beibehalten. Ein Host ohne Abonnement, der nur Enterprise verwendet, wird vor der Umstellung auf no-subscription gefragt. Das Arbeitsskript aktualisiert Pakete und erstellt von ProxMenux verwaltete DKMS-Treiber für einen bereitgestellten Kernel neu. Das Hauptskript bietet einen Neustart an, wenn die Neustartmarkierung existiert oder sich der neueste installierte vom laufenden Kernel unterscheidet. Bei ausstehenden Aktualisierungen lässt sich der Vorgang auch über <em>Update Now</em> im Kopfbereich von ProxMenux Monitor starten.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Was das macht",
|
||||
"body": "Bringt den Host auf den neuesten Aktualisierungsstand seiner aktuellen Hauptversion. Führt <strong>kein</strong> Upgrade auf eine andere Hauptversion durch. Für PVE 8 → PVE 9 siehe <link>Upgrade von PVE 8 auf PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "Die offizielle Proxmox Empfehlung",
|
||||
"intro": "Proxmox empfiehlt für die Aktualisierung eines laufenden Hosts innerhalb derselben Hauptversion diesen Befehl:",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Diese eine Zeile ist der offizielle Befehl für aktuelle Proxmox-Versionen. Entscheidend ist außerdem, dass die Repositories bereinigt und die richtigen aktiviert sind und sich der Host anschließend in einem ordnungsgemäßen Zustand befindet."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Was ProxMenux zusätzlich ausführt: am Skript geprüft",
|
||||
"intro": "Verwendet <strong>denselben Vorgang apt full-upgrade</strong>, ergänzt um Repository-Prüfungen, DKMS-Neubau und anschließende Bereinigung. Die folgenden Schritte entsprechen <code>scripts/utilities/proxmox_update.sh</code> und seinem einzigen Arbeitsskript <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Erkennt die PVE-Hauptversion</strong> im Arbeitsskript (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Ein Skript verarbeitet PVE 8 und PVE 9. Die konfigurierten Repositories bleiben erhalten, sofern ein Host ohne Abonnement der angebotenen Umstellung nicht zustimmt.",
|
||||
"<strong>Behält konfigurierte Repositories bei.</strong> <code>ensure_repositories</code> liest die Repositories und den Abonnementstatus über die Proxmox-Repository-API. Bei aktivem Abonnement oder bereits verwendetem no-subscription- oder Test-Repository wird nichts geändert. Ein Host ohne aktives Abonnement, dessen einziges Proxmox-Repository Enterprise ist, wird vor der Umstellung auf no-subscription gefragt. Bei Ablehnung endet die Aktualisierung, ohne eine Paketquelle zu ändern.",
|
||||
"<strong>Führt die Aktualisierung ohne Interaktion aus</strong> mit <code>DEBIAN_FRONTEND=noninteractive</code> und <code>--force-confdef --force-confold</code>. Bei Entscheidungen zu dpkg-Konfigurationsdateien wird die Standardaktion gewählt, falls vorhanden; andernfalls bleibt die bestehende Datei erhalten.",
|
||||
"<strong>Erzwingt keine optionalen Werkzeuge.</strong> Das Arbeitsskript installiert weder <code>zfsutils-linux</code> noch <code>chrony</code>, <code>ifupdown2</code> oder ähnliche Pakete gegen die bestehende Auswahl. Wurde bei der Proxmox-Installation auf ein Paket verzichtet, bleibt das so. Fehlende Pakete werden in den übergeordneten Installationsabläufen angezeigt, nicht bei der Aktualisierung.",
|
||||
"<strong>LVM-Metadatenprüfung und -reparatur.</strong> Erkennt alte PV-Header und führt vgck --updatemetadata sowie vgchange -ay für die betroffenen Volume-Gruppen aus. Dabei können LVM-Metadaten geändert werden; die Prüfung zeigt nicht nur Warnungen an.",
|
||||
"<strong>Bereinigt anschließend:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>DKMS-Neubau vor der Neustartabfrage.</strong> Das Arbeitsskript ruft <code>pmx_rebuild_dkms_after_kernel</code> auf, wenn ein neuerer installierter Kernel bereitsteht. Das Hauptskript prüft <code>/var/run/reboot-required</code> und vergleicht mit <code>dpkg-query</code> den von <code>uname -r</code> gemeldeten Kernel mit dem neuesten installierten Paket <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code>. Auf Hosts ohne <code>needrestart</code> kann die Markierung fehlen; der Kernelvergleich funktioniert trotzdem."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "In einem Satz",
|
||||
"body": "Aktualisiert Hostpakete, behält konfigurierte Repositories ohne Zustimmung zu einer Umstellung bei, prüft LVM-Metadaten, erstellt verwaltete DKMS-Treiber neu, bereinigt mit autoremove/autoclean und bietet bei Bedarf einen Neustart an."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Bestätigungsdialog",
|
||||
"intro": "Die Auswahl öffnet eine Zusammenfassung der geplanten Schritte und erfordert eine ausdrückliche Bestätigung:",
|
||||
"imageAlt": "Bestätigungsdialog der Proxmox-Systemaktualisierung mit Repository-Prüfung, Paketaktualisierung und Bereinigung"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "So ruft das Hauptskript das Arbeitsskript auf",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Ein einziges Arbeitsskript",
|
||||
"detail": "update-pve-safe.sh\n(erkennt PVE 8 / 9\nintern)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Nach der Aktualisierung",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nNeustartabfrage bei Bedarf"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Was das Arbeitsskript ausführt",
|
||||
"intro": "Ein Arbeitsskript (<code>scripts/global/update-pve-safe.sh</code>) verarbeitet PVE 8 (<code>bookworm</code>) und PVE 9 (<code>trixie</code>). Es erkennt die Hauptversion intern und prüft die bestehende Repository-Konfiguration, ohne die Debian-Basisquellen neu zu schreiben. Die Schritte sind:",
|
||||
"items": [
|
||||
"<strong>Vorabprüfungen.</strong> Prüft, ob mindestens ~1 GB in <code>/var/cache/apt/archives</code> frei ist. Bei zu wenig Platz wird frühzeitig mit einer klaren Meldung abgebrochen, damit der Vorgang nicht mitten in einer apt-Transaktion scheitert.",
|
||||
"<strong>Repository-Prüfung.</strong> <code>ensure_repositories</code> liest Repositories und Abonnementstatus. Bei einem verwendbaren Proxmox-Repository wird nichts geändert. Ein Host ohne aktives Abonnement, der nur Enterprise verwendet, wird vor der Umstellung auf no-subscription gefragt. Bei Ablehnung endet die Aktualisierung.",
|
||||
"<strong>apt update mit automatischer GPG-Wiederherstellung.</strong> Bei <code>NO_PUBKEY</code> für ein Repository, auch eines von Drittanbietern, importiert das Arbeitsskript den fehlenden Schlüssel und versucht es erneut, bevor es abbricht.",
|
||||
"<strong>Ausstehende Aktualisierungen und Sicherheitsaktualisierungen.</strong> Zeigt an, wie viele Pakete geändert werden und wie viele davon aus der Sicherheitssuite stammen. Der Bestätigungsdialog enthält dadurch konkrete Zahlen.",
|
||||
"<strong>Bestätigungsdialog.</strong> Nach dem Aktualisieren der Paketlisten verlangt das Arbeitsskript ein ausdrückliches Ja vor der Paketaktualisierung.",
|
||||
"<strong>apt full-upgrade.</strong> Verwendet <code>DEBIAN_FRONTEND=noninteractive</code> und <code>--force-confdef --force-confold</code>. Dpkg folgt bei Entscheidungen zu Konfigurationsdateien seiner Standardaktion, falls vorhanden, und behält andernfalls die bestehende Datei bei.",
|
||||
"<strong>LVM-Prüfung.</strong> <code>lvm_repair_check</code> aktualisiert VG-Metadaten, wenn an Gast-VMs (DSM, TrueNAS, Speicher-Appliances) durchgereichte Festplatten mit alten PV-Headern zurückkehren.",
|
||||
"<strong>DKMS-Neubau für von ProxMenux verwaltete Treiber.</strong> Steht nach der Aktualisierung ein neuer Kernel bereit, liest <code>pmx_rebuild_dkms_after_kernel</code> die von ProxMenux installierten Treiber aus <code>components_status.json</code> (derzeit <code>nvidia_driver</code> → Modul <code>nvidia</code> und <code>coral_driver</code> → Modul <code>gasket</code>), installiert passende Kernel-Header (<code>proxmox-headers-<newkver></code>, falls verfügbar, sonst <code>pve-headers-<newkver></code>) und führt <code>dkms autoinstall -k <newkver></code> aus. Zeigt <code>dkms status</code> die Module danach nicht für den neuen Kernel an, werden die jeweiligen Installationsprogramme mit <code>--auto-reinstall</code> erneut ausgeführt. Fehler werden protokolliert, brechen die Aktualisierung aber nicht ab; die Neustartabfrage wird dennoch erreicht.",
|
||||
"<strong>Anschließende Bereinigung.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code>, bevor die Steuerung an das Hauptskript zurückgeht."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Bereinigung und Neustart nach dem Update",
|
||||
"intro": "Nach Abschluss des Arbeitsskripts führt das Hauptskript Folgendes aus:",
|
||||
"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": "Das Hauptskript prüft außerdem, ob ein Neustart erforderlich ist. Jedes dieser Signale löst die Abfrage aus:",
|
||||
"items": [
|
||||
"<code>/var/run/reboot-required</code> existiert: Ein Paket oder Systemwerkzeug hat einen nötigen Neustart markiert.",
|
||||
"Das neueste installierte Proxmox-Kernelpaket unterscheidet sich vom laufenden Kernel, ermittelt mit <code>dpkg-query</code> und uname -r."
|
||||
],
|
||||
"outro": "Trifft eines der Signale zu, fragt ein whiptail-Dialog <em>„Einige Änderungen erfordern einen Neustart. Möchten Sie jetzt neu starten?“</em>. Lehnen Sie ab, um mit dem laufenden Kernel weiterzuarbeiten, bis Sie selbst neu starten, etwa in einem geplanten Wartungsfenster."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Was Sie am Ende sehen",
|
||||
"intro": "Nach Abschluss des Arbeitsskripts zeigt das Terminal die Bereinigungsausgabe und bei erforderlichem Neustart die entsprechende Abfrage an:",
|
||||
"imageAlt": "Abschlussübersicht der Proxmox-Systemaktualisierung mit Bereinigungsausgabe und Neustartabfrage"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Neustart nur mit gutem Grund aufschieben",
|
||||
"body": "Die Installation eines neuen Pakets <code>proxmox-kernel-*</code> ersetzt den laufenden Kernel erst beim Neustart. Der neue Kernel und seine passenden Module werden beim nächsten Start aktiv. Planen Sie dafür ein geeignetes Wartungsfenster und prüfen Sie zuvor alle DKMS-Bauwarnungen."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Wie das Arbeitsskript das Enterprise-Repository behandelt",
|
||||
"intro": "Proxmox aktiviert das Enterprise-Repository standardmäßig. Ohne aktives Abonnement liefert es bei <code>apt-get update</code> den Fehler 401. Nur in diesem Fall und nach Rückfrage ändert das Arbeitsskript die Repositories über die Proxmox-Repository-API, die auch hinter <em>Node → Updates → Repositories</em> steht. Die einzelnen Fälle:",
|
||||
"items": [
|
||||
"Mit <strong>aktivem Abonnement</strong> bleiben die Repositories unverändert und Enterprise liefert die Aktualisierungen.",
|
||||
"Ist das <strong>no-subscription- oder Test-Repository bereits aktiviert</strong>, bleiben die Repositories unverändert, unabhängig von weiteren eingerichteten Quellen.",
|
||||
"Bei <strong>fehlendem aktivem Abonnement und ausschließlich Enterprise-Repository</strong> bietet ein Dialog die Umstellung an. Bei Zustimmung wird die Enterprise-Quelle deaktiviert, no-subscription aktiviert und die Paketliste aktualisiert. Die Änderung wird in der Ansicht <em>Changes</em> von Audit & Report erfasst. Bei Ablehnung endet die Aktualisierung ohne Änderung einer Paketquelle.",
|
||||
"Vorhandene <strong>Enterprise-Ceph-Quellen</strong> werden bei derselben Umstellung deaktiviert, ohne einen anderen Ceph-Kanal auszuwählen. Auf Hosts mit Ceph wird dessen Kanal separat konfiguriert.",
|
||||
"Steht <strong>kein Terminal für die Rückfrage</strong> zur Verfügung, wird keine Paketquelle geändert. Die Aktualisierung endet mit einem Hinweis auf <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Debian-Quellen und alle anderen Repository-Dateien werden bei der Aktualisierung nicht bearbeitet. Enthält ein Eintrag Enterprise zusammen mit weiteren Komponenten, wird er nicht umgestellt. Die Aktualisierung stoppt und fordert dazu auf, den Eintrag in der Proxmox-Repository-Ansicht aufzuteilen."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Clusterüberlegungen",
|
||||
"calloutTitle": "Auf Clustern: Aktualisieren Sie jeweils einen Knoten",
|
||||
"calloutBody": "Führen Sie diese Option im Proxmox-Cluster auf <strong>einem Knoten nach dem anderen</strong> aus. Warten Sie jeweils den vollständigen Neustart ab, bevor Sie fortfahren. Migrieren Sie Gäste vorher vom Knoten, um clusterweite Dienstunterbrechungen zu vermeiden. Unterschiedliche Nebenversionen wie 8.4.1 und 8.4.5 können für einige Stunden parallel laufen; unterschiedliche laufende Kernel können bei HA-verwalteten Gästen unerwartetes Verhalten verursachen."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Was es nicht tut",
|
||||
"items": [
|
||||
"<strong>Upgrade der Hauptversion.</strong> 8 → 9 ist ein eigener Vorgang; siehe <link>Upgrade von PVE 8 auf PVE 9</link>.",
|
||||
"<strong>Backup.</strong> Keine Snapshots, kein Rollback. Apt Operationen sind nicht transaktional. Kombinieren Sie mit Ihrer normalen Backup-Disziplin (PBS, vzdump, ZFS Snapshots).",
|
||||
"<strong>Aktualisierung von Containern / VMs.</strong> Nur der Host wird aktualisiert; die Gastsysteme bleiben unverändert.",
|
||||
"<strong>Gezieltes Einspielen von Firmware.</strong> Dies ist kein Werkzeug zum Flashen von BIOS oder Gerätefirmware. Bereits installierte Firmware- oder CPU-Mikrocodepakete können weiterhin über apt aktualisiert werden."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update scheitert mit 401 Unauthorized",
|
||||
"body": "Das Enterprise-Repository ist aktiviert, aber der Host hat kein aktives Abonnement. Das Arbeitsskript bietet vor <code>apt-get update</code> die Umstellung auf no-subscription an. Wurde sie abgelehnt, starten Sie die Aktualisierung erneut und stimmen Sie zu. Alternativ deaktivieren Sie Enterprise unter <em>Node → Updates → Repositories</em> und aktivieren no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade bleibt bei \"Configuring grub-pc\" hängen",
|
||||
"body": "Falls eine interaktive GRUB-Abfrage erscheint, fragt sie nach den Geräten für den Bootloader. <code>--force-confold</code> gilt für Entscheidungen zu Konfigurationsdateien, nicht für diese Geräteauswahl. Wählen Sie mit <kbd>Tab</kbd> + <kbd>Space</kbd> die passenden Startfestplatten und dann OK. Die Auswahl lässt sich vorher mit <code>dpkg-reconfigure grub-pc</code> konfigurieren."
|
||||
},
|
||||
{
|
||||
"title": "Kernel aktualisiert, aber die neuen Module fehlen für einen Out-of-Tree-Treiber",
|
||||
"body": "Für verwaltete Treiber (<code>nvidia_driver</code> und <code>coral_driver</code>) führt die Hilfsfunktion <code>dkms autoinstall -k <newkver></code> aus und kann deren Installationsprogramme mit <code>--auto-reinstall</code> erneut starten. Prüfen Sie das Ergebnis mit <code>dkms status</code>. Der autoinstall-Befehl kann auch andere registrierte DKMS-Module neu erstellen. Der erneute Installer-Aufruf beschränkt sich auf die verwalteten Einträge in <code>components_status.json</code>. Prüfen Sie weiterhin fehlende Drittanbietermodule und erstellen Sie sie bei Bedarf mit <code>dkms autoinstall</code> neu."
|
||||
},
|
||||
{
|
||||
"title": "Die Neustartabfrage erschien nicht, obwohl ein neuer Kernel installiert wurde",
|
||||
"body": "Die Signale gelten alternativ: <code>/var/run/reboot-required</code> oder ein Unterschied zwischen laufendem und neuestem installiertem Proxmox-Kernel. Das Hauptskript wertet keine linux-image-Einträge im apt-Protokoll aus. Prüfen Sie die laufende Version mit <code>uname -r</code> und die installierten Kernelpakete mit <code>dpkg-query</code>. Planen Sie einen nötigen Neustart oder führen Sie zum passenden Zeitpunkt <code>shutdown -r now</code> aus."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Beteiligte Dateien",
|
||||
"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": "Verwandte Themen",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Aktualisieren Sie PVE 8 auf PVE 9",
|
||||
"tail": " — für das Upgrade der Hauptversion mit einem anderen Werkzeug und Sicherheitsmodell."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installationsprogramm für Systemdienstprogramme",
|
||||
"tail": " — zur Installation nützlicher CLI-Werkzeuge für Aktualisierungen (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Übersicht der Dienstprogramme",
|
||||
"tail": " — zurück zur Abschnittsübersicht."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installationsprogramm für Systemwerkzeuge | ProxMenux-Dokumentation",
|
||||
"description": "CLI-Werkzeuginstallation für Proxmox VE mit 25 Paketen in der zentralen Liste (htop, btop, iperf3, tmux, ...). Individuelle Auswahl, Gesamtinstallation und vordefinierte Gruppen (Basis, Entwicklung, Komprimierung, Multiplexer, Analyse, Netzwerk). Gruppen können zusätzliche Pakete enthalten. Verwendet ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Installationsprogramm für Systemwerkzeuge | ProxMenux-Dokumentation",
|
||||
"ogDescription": "Installieren Sie kuratierte CLI-Tools auf Proxmox VE mit einem Klick oder einer benutzerdefinierten Auswahl."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installationsprogramm für Systemdienstprogramme",
|
||||
"description": "Auswahl der 25 CLI-Werkzeuge in der zentralen Liste PROXMENUX_UTILS. Bietet individuelle Auswahl, Gesamtinstallation, sechs vordefinierte Gruppen und eine Installationsprüfung. Gruppen können weitere Werkzeuge enthalten. Gemeinsame Hilfsfunktionen ensure_repositories() + install_single_package() sorgen für einheitliche Repository-Verwaltung und Paketmeldungen.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"info": {
|
||||
"title": "Was das macht",
|
||||
"body": "Installiert CLI-Werkzeuge aus einer Liste mit 25 Paketen. Jede Installation verwendet denselben Ablauf: <code>ensure_repositories</code> prüft ein nutzbares Proxmox-Repository für die laufende PVE-Hauptversion; anschließend installiert <code>install_single_package</code> das Paket und prüft, ob dessen Befehl in PATH liegt."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Installationsprogramm öffnen",
|
||||
"intro": "Wählen Sie im Menü Utilities <strong>System Utilities Installer</strong>. Das Hauptmenü bietet neun Optionen:",
|
||||
"imageAlt": "Menü System Utilities Installer mit benutzerdefinierter Auswahl, ALL, vordefinierten Gruppen und Verifizierung"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Die 9 Menüaktionen",
|
||||
"headerOption": "Option",
|
||||
"headerBehaviour": "Verhalten",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Individuelle Auswahl",
|
||||
"behaviourRich": "Auswahlliste aller 25 Pakete. Mit SPACE umschalten und mit ENTER bestätigen; nur ausgewählte Pakete werden installiert."
|
||||
},
|
||||
{
|
||||
"option": "2. Alle Werkzeuge installieren",
|
||||
"behaviourRich": "Installiert alle Pakete aus <code>PROXMENUX_UTILS</code> in einem Durchgang. Geeignet nach einer neuen Proxmox-Installation."
|
||||
},
|
||||
{
|
||||
"option": "3. Grundlegend",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Entwicklung",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Kompression",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Terminalmultiplexer",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analyse",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Netz",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Installationen prüfen",
|
||||
"behaviourRich": "Prüft für jeden Eintrag in <code>PROXMENUX_UTILS</code>, ob der zugehörige Prüfbefehl in PATH verfügbar ist, und zeigt eine Übersicht mit Verfügbar / Fehlend."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "Die 25 Pakete",
|
||||
"intro": "In der gemeinsamen Datei <code>scripts/global/utils-install-functions.sh</code> als <code>PROXMENUX_UTILS</code> definiert (Format: <code>package:verify_command:description</code>). Andere ProxMenux-Skripte, etwa die Netzwerküberwachungsstarter für iftop / iptraf-ng / iperf3, verwenden diese Einträge ebenfalls, damit Paket und Prüfbefehl zusammenpassen.",
|
||||
"headerPackage": "Paket",
|
||||
"headerVerify": "Prüfbefehl",
|
||||
"headerDescription": "Beschreibung",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Downloadbeschleuniger"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Multisource-Downloader"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Moderner Ressourcenmonitor"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Extrahieren von CAB-Dateien"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Bearbeiten der Windows-Registrierung / Passwörter"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Konvertieren von DOS / Unix Textdateien"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "ISO-Images erstellen"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Allgemeine farbige Hervorhebung von Protokollen"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Interaktiver Prozess-Viewer"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Echtzeit-Netzwerknutzung"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Intel GPU Werkzeuge"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Festplatten-E/A überwachen"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Prüfung der Netzwerkbandbreite"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Verwalten von IP-Sets"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Netzüberwachungsinstrument"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Werkzeuge für VM-Festplatten"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Zugriff auf CPU-MSRs"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Ältere Netzwerkwerkzeuge"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Dateien schnell finden"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Nicht-interaktives SSH-Login"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Terminal-Multiplexer"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "ZIP-Dateien extrahieren"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Verwalten von WIM-Bildern"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "ZIP-Dateien erstellen"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Wie eine einzelne Paketinstallation funktioniert",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> erkennt PVE 8 oder 9 und liest die Repositories über die Proxmox-API. Bei einem nutzbaren Proxmox-Repository wird nichts geändert. Ein Host ohne aktives Abonnement, der nur Enterprise verwendet, wird vor der Umstellung auf no-subscription gefragt. Nach einer bestätigten Umstellung wird <code>apt-get update</code> ausgeführt.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> führt <code>apt-get install -y \"$pkg\"</code> mit Feedback aus (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Nach der Installation wird der Verifizierungsbefehl mit <code>command -v \"$verify_cmd\"</code> überprüft. Drei Ergebnisse:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (Erfolg): </strong> Befehl verfügbar, Paket gezählt als <em>Erfolgreich</em>.",
|
||||
"<strong>1 (fehlgeschlagen):</strong> apt fehlgeschlagen, gezählt als <em>Failed</em>.",
|
||||
"<strong>2 (Warnung):</strong> apt war erfolgreich, aber der erwartete Befehl wurde nicht in PATH gefunden. Das Paket zählt als <em>Mit Warnungen</em>."
|
||||
],
|
||||
"summary": "Nach einer Gruppeninstallation oder individuellen Installation zeigt ein Dialog die Anzahl <em>Erfolgreich / Mit Warnungen / Fehlgeschlagen</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Überprüfen Sie die Installationen",
|
||||
"intro": "Option 9 liest nur: Sie durchläuft <code>PROXMENUX_UTILS</code> und führt für jeden Prüfbefehl <code>command -v</code> aus. Die Ausgabe sieht so aus:",
|
||||
"code": "Total: 25\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": "Nützlich vor Skripten, die diese Werkzeuge benötigen. Beispielsweise braucht <code>uup_dump_iso_creator.sh</code> die Befehle <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>. Fehlt etwas, installieren Sie die passende Gruppe oder wählen Sie die fehlenden Pakete einzeln aus."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"reposTitle": "„Repositories konnten nicht konfiguriert werden. Installation abgebrochen.“",
|
||||
"reposBody": "Der Repository-Check wurde nicht bestanden: Der Wechsel zum No-Subscription-Repository wurde abgelehnt, der Subscription-Status konnte nicht gelesen werden oder ein Repository-Eintrag benötigt Aufmerksamkeit. Die darüber gedruckte Botschaft gibt die Ursache an. Die Repositories sind in <em>Node → Updates → Repositories</em> aufgeführt, und <code>apt-get update</code> von einer Konsole zeigt die Fehlermeldungen an.",
|
||||
"warningsTitle": "Ein Paket wird \"Mit Warnungen\" gemeldet, aber der Befehl funktioniert, nachdem ich das Menü geschlossen habe",
|
||||
"warningsBody": "Nach <code>apt-get install</code> führt die Hilfsfunktion <code>hash -r</code> aus, wartet kurz und prüft den erwarteten Befehl mit <code>command -v</code>. Eine Warnung bedeutet, dass diese Prüfung weiterhin fehlschlug; sie benennt keine Ursache. Versuchen Sie eine neue Shell und prüfen Sie Paketinstallation sowie PATH, falls der Befehl weiterhin fehlt.",
|
||||
"hangsTitle": "Ein apt install hängt",
|
||||
"hangsBody": "Höchstwahrscheinlich wird eine Debconf-Eingabeaufforderung hinter der stummgeschalteten Ausgabe blockiert. Das Skript wickelt alle apt-Aufrufe mit <code>DEBIAN_FRONTEND=noninteractive</code> ab, was normalerweise Aufforderungen unterdrückt, aber einige Pakete erfordern immer noch Benutzereingaben. Abbrechen mit <kbd>Ctrl</kbd> + <kbd>C</kbd>, führen Sie <code>apt-get install -y <pkg></code> manuell aus einer Shell aus, um die Eingabeaufforderung zu sehen und zu entscheiden."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Beteiligte Dateien",
|
||||
"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": "Verwandte Themen",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox-Systemupdate",
|
||||
"tailRich": "— für den eigentlichen <code>apt dist-upgrade</code> auf dem Host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Live-Überwachungswerkzeuge (Netzwerk)",
|
||||
"tailRich": "- verwendet iftop / iptraf-ng / iperf3 aus derselben Liste."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Übersicht der Dienstprogramme",
|
||||
"tailRich": " — zurück zur Abschnittsübersicht."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "PVE 8 auf PVE 9 aktualisieren | ProxMenux-Dokumentation",
|
||||
"description": "Drei Wege von Proxmox VE 8 zu 9 (Debian Bookworm zu Trixie und PVE 8 zu 9): automatisch, interaktiv oder manuell nach der offiziellen Proxmox-Anleitung. Mit pve8to9-Vorabprüfung, Repository-Umstellung, dist-upgrade und abschließender Kontrolle. Start im Webterminal wird verweigert.",
|
||||
"ogTitle": "PVE 8 auf PVE 9 aktualisieren | ProxMenux-Dokumentation",
|
||||
"ogDescription": "Drei Verfahren (automatisch, interaktiv, manuell) für den Wechsel von Proxmox VE 8 auf 9."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aktualisieren Sie PVE 8 auf PVE 9",
|
||||
"description": "Führt das Upgrade von Proxmox VE 8 auf 9 nach der offiziellen Anleitung durch: Debian Bookworm zu Trixie und PVE 8 zu 9. Zur Auswahl stehen automatische, interaktive und manuelle Durchführung sowie eine separate Vorabprüfung. Der Start im Webterminal wird verweigert, da ein Verbindungsabbruch während des Upgrades den Host beschädigen kann.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"dangerCallout": {
|
||||
"title": "Ein Wechsel der Hauptversion lässt sich nicht rückgängig machen",
|
||||
"intro": "Dieser Vorgang ersetzt die Debian-Basis (Bookworm → Trixie) und den Proxmox-Softwarebestand auf dem bestehenden System. Es gibt <strong>keine Rückkehr zur alten Version</strong>. Vor dem Start:",
|
||||
"items": [
|
||||
"<strong>Geprüfte Sicherungen</strong> aller VMs und CTs (PBS, vzdump, ZFS-Snapshots — auch die Wiederherstellung prüfen).",
|
||||
"<strong>Konsolen- / IPMI- / iKVM-Zugang</strong> zum Host, falls SSH während des Upgrades ausfällt.",
|
||||
"Der Host ist bereits auf PVE 8.4.x auf dem neuesten Stand (das Skript erzwingt dies).",
|
||||
"Ceph (falls vorhanden) auf der Version 19.x Squid.",
|
||||
"Mindestens <strong>5 GB freier Speicher</strong> im Root-Dateisystem."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
"heading": "Das Menü zur Modusauswahl",
|
||||
"intro": "Die Option öffnet ein Menü mit vier Einträgen: Automatisch, Interaktiv, Vorabprüfung und Manuelle Anleitung. Drei Optionen <em>führen</em> das Upgrade aus oder erklären es; die separate Prüfung <em>kontrolliert</em> die Voraussetzungen und kann Reparaturen anbieten.",
|
||||
"imageAlt": "Modusauswahl für das PVE-8-auf-9-Upgrade: Automatisch, Interaktiv, Vorabprüfung und Manuelle Anleitung"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Drei Wege zum Upgrade",
|
||||
"intro": "Automatisch und Interaktiv verwenden denselben Ablauf mit Vorabprüfung und abschließender Kontrolle. Sie unterscheiden sich beim Umgang mit dpkg-Rückfragen während <code>dist-upgrade</code>. Die manuelle Anleitung zeigt die Befehle samt Prüfungen; Sie müssen jeden Schritt selbst ausführen.",
|
||||
"auto": {
|
||||
"title": "Automatisch / unbeaufsichtigt",
|
||||
"summary": "Setzt <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. Bei geänderten Konfigurationsdateien verwendet dpkg seine Standardaktion, sofern vorhanden; andernfalls wird <strong>die vorhandene Datei beibehalten</strong> (<code>--force-confold</code>).",
|
||||
"items": [
|
||||
"Am schnellsten — keine dpkg-Rückfragen während des Upgrades",
|
||||
"Geeignet für Standardinstallationen ohne angepasste Konfigurationsdateien",
|
||||
"Risiko: Eine angepasste Datei bleibt ohne Rückfrage erhalten und kann neue Standardwerte überlagern"
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"title": "Interaktiv",
|
||||
"summary": "Derselbe Ablauf, aber Sie beantworten jede dpkg-Rückfrage zu Konflikten bei Konfigurationsdateien. Langsamer, dafür mit voller Einsicht.",
|
||||
"items": [
|
||||
"Sie sehen jeden config Konflikt und entscheiden",
|
||||
"Am besten, wenn Sie <code>/etc/lvm</code>, <code>/etc/ssh</code> usw. angepasst haben.",
|
||||
"Konsultieren Sie die Tabelle der empfohlenen Antworten im manuellen Verfahren unten"
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Handbuch zur Aktualisierung",
|
||||
"summary": "Zeigt das Verfahren in 17 Schritten nach dem offiziellen Proxmox-Wiki an, ohne es auszuführen. Führen Sie die Befehle selbst in einer separaten Shell aus.",
|
||||
"items": [
|
||||
"Maximale Kontrolle - Sie geben jeden Befehl ein",
|
||||
"Am besten, wenn Sie das Verfahren lernen möchten oder nichts vertrauen",
|
||||
"Das Skript zeigt die Schritte an; nichts wird automatisch ausgeführt"
|
||||
]
|
||||
}
|
||||
},
|
||||
"precheckCallout": {
|
||||
"title": "Plus einen separaten Pre-Check",
|
||||
"body": "Option 3 — <strong>PVE-8-auf-9-Prüfung ausführen</strong> — startet die offizielle Prüfung <code>pve8to9 --full</code>, bietet geführte Reparaturen häufiger Probleme an und <strong>endet danach</strong>. Nutzen Sie sie vor dem Upgrade oder nach manuellen Reparaturen. Automatisch und Interaktiv führen sie ebenfalls aus; in der manuellen Anleitung führen Sie die Prüfung selbst aus."
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Warum das Web-Terminal blockiert ist",
|
||||
"body": "Alle drei Upgrade-Modi erkennen <code>termproxy</code> / <code>vncshell</code> in der Kette übergeordneter Prozesse und verweigern den Start. Das Proxmox-Webterminal wird von <code>pveproxy</code> bereitgestellt, einem Dienst, der beim Upgrade aktualisiert wird. Sobald <code>pveproxy</code> neu startet, endet die Terminalsitzung und damit auch das darin laufende Upgrade-Skript. Der Host kann unvollständig aktualisiert zurückbleiben.",
|
||||
"warningTitle": "SSH oder eine physische / IPMI- / iKVM-Konsole verwenden",
|
||||
"warningBody": "SSH ist die übliche Wahl. Starten Sie die Sitzung in <code>tmux</code> oder <code>screen</code>, damit das Upgrade kurze Netzunterbrechungen übersteht. Erkennt das Skript eine einfache SSH-Shell, zeigt es zu Beginn einen Hinweis auf tmux/screen an."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatischer / unbeaufsichtigter Modus",
|
||||
"intro": "Rückfragen zu Paketen und Konfigurationsdateien verwenden die Standardwerte aus der folgenden Tabelle, und ein 401 vom Enterprise-Repository wechselt ohne Rückfrage zu no-subscription. Die Upgrade-Bestätigung, die Zusammenfassung des PVE-8-Updates, Reparaturen der Vorabprüfung und die Neustart-Rückfrage werden weiterhin angezeigt.",
|
||||
"behaviourHeading": "Besonderheiten des automatischen Modus",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Einstellung",
|
||||
"effectHeader": "Wirkung",
|
||||
"rows": [
|
||||
{
|
||||
"settingRich": "<code>ASSUME_YES=1</code>",
|
||||
"effectRich": "Interner Schalter — das Skript beantwortet seine eigenen Ja/Nein-Rückfragen, etwa den Wechsel zu no-subscription nach einem 401"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
|
||||
"effectRich": "apt / dpkg laufen ohne debconf-Rückfragen"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confdef</code>",
|
||||
"effectRich": "Bei unveränderten Konfigurationsdateien: neue Version des Paketbetreuers installieren"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confold</code>",
|
||||
"effectRich": "Bei geänderten Dateien: Standardaktion von dpkg verwenden, sofern vorhanden; andernfalls <strong>Ihre Version beibehalten</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"flowHeading": "Ablauf im automatischen Modus",
|
||||
"flowIntro": "Sechs aufeinanderfolgende Phasen. Phase 2 aktualisiert die PVE-8-Pakete, Phase 3 schreibt die Repository-Konfiguration für PVE 9. Ein Fehler hält den Ablauf an, macht diese Änderungen aber nicht rückgängig; schlägt das PVE-8-Update fehl oder wird es abgebrochen, bleiben die Repositories unverändert. Phase 5 führt <code>dist-upgrade</code> auf PVE 9 aus.",
|
||||
"flowDiagram": "1. PRÜFUNGEN\ntermproxy / vncshell blockieren; Upgrade bestätigen; PVE 9 ablehnen.\n\n2. PVE 8 VORBEREITEN\nscripts/global/update-pve8.sh\nPVE-8-Pakete aktualisieren; Abbruch, wenn das Update fehlschlägt oder abgebrochen wird.\npve8to9 --full (kann Reparaturen anbieten).\nSpeicher und Verbindung prüfen; Ceph 19.x Squid auf hyperkonvergenten Knoten.\n\n3. REPOSITORIES UMSTELLEN\nBookworm → Trixie; deb822-Dateien .sources schreiben.\nAlte .list-Dateien auskommentieren; apt-get update.\n\n4. PVE-9-KANDIDAT PRÜFEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nAbbruch, wenn der Kandidat nicht 9.x ist oder proxmox-ve entfernt würde.\n\n5. UPGRADE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nOhne Subskription: pve-enterprise.sources deaktivieren.\nProtokoll: /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. PRÜFEN UND NEU STARTEN\nEFI: apt install grub-efi-amd64\npve8to9 --full; Ergebnis und Neustart-Rückfrage prüfen.",
|
||||
"preflightHeading": "Vor dem Upgrade: diese Punkte werden geprüft",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Prüfung",
|
||||
"whyHeader": "Warum es wichtig ist",
|
||||
"rows": [
|
||||
{
|
||||
"checkRich": "<strong>Webterminal-Sperre</strong>",
|
||||
"whyRich": "Verhindert, dass das Upgrade seine eigene Shell beendet"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Bereits auf 9.x</strong>",
|
||||
"whyRich": "Abbruch, wenn der Host bereits PVE 9 ausführt (nichts zu tun)"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Neueste PVE-8.4.x-Version</strong>",
|
||||
"whyRich": "Aktualisiert PVE 8 zunächst mit dem PVE-8-Aktualisierungsskript auf den neuesten Stand; für ältere 8.x-Versionen gelten andere Voraussetzungen"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>pve8to9 --full</strong>",
|
||||
"whyRich": "Proxmox-Prüfung der Upgrade-Voraussetzungen; FAIL-Meldungen blockieren das Upgrade bis zur Reparatur"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Speicherplatz</strong>",
|
||||
"whyRich": "≥ 1024 MB frei in <code>/var/cache/apt/archives</code> für heruntergeladene .deb-Dateien"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Verbindungen</strong>",
|
||||
"whyRich": "Ping auf <code>download.proxmox.com</code> — schlägt er fehl, wird nicht begonnen"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ceph 19.x Squid</strong>",
|
||||
"whyRich": "Installiertes Ceph muss bereits 19.x verwenden. PVE 9 kann nicht mit Ceph 17/18 betrieben werden. Die Optionen <code>--ignore-ceph-check</code> und <code>--warn-ceph-check</code> umgehen die Prüfung; nutzen Sie sie nur mit entsprechendem Fachwissen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"distUpgradeHeading": "Der Befehl dist-upgrade (Auto-Modus)",
|
||||
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
|
||||
"distUpgradeOutro": "Die Ausgabe erscheint in Echtzeit auf stdout und wird zugleich in <code>/var/log/pve8-a-pve9-<timestamp>.log</code> gespeichert. Sie sehen alles; nur die Rückfragen entfallen.",
|
||||
"postHeading": "Post-Upgrade-Aufgaben (Automodus)",
|
||||
"postItems": [
|
||||
"<strong>EFI-Hosts:</strong> installiert <code>grub-efi-amd64</code> gemäß dem bekannten Problem in der Proxmox-Dokumentation. Das Paket wird beim Upgrade nicht automatisch installiert und kann für den nächsten Start erforderlich sein.",
|
||||
"<strong>Enterprise-Repository ohne Subskription.</strong> pve-manager 9 legt beim Upgrade <code>pve-enterprise.sources</code> an; im no-subscription-Modus setzt das Skript es auf <code>Enabled: false</code>.",
|
||||
"<strong><code>pve8to9 --full</code> erneut ausführen.</strong> Zeigt verbliebene Probleme. Bei FAIL-Meldungen erscheint das gleiche Reparaturmenü wie bei der Vorabprüfung.",
|
||||
"<strong>Neustart-Rückfrage.</strong> Ein Neustart wird empfohlen, um den neuen Kernel und die Dienste zu laden. Lehnen Sie ihn nur aus einem konkreten Grund ab; der alte Kernel nach einem Hauptversionswechsel birgt Risiken."
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"heading": "Interaktiver Modus",
|
||||
"intro": "Derselbe Ablauf wie im <autolink>automatischen Modus</autolink>: gleiche Vorabprüfungen, Repository-Umstellung und Abschlussprüfung. Der Unterschied liegt bei <code>dist-upgrade</code>: <strong>Sie beantworten jede dpkg-Rückfrage zu Konfigurationskonflikten selbst</strong>. ProxMenux verwendet <code>apt-get dist-upgrade</code> ohne die Optionen <code>--force-conf*</code>.",
|
||||
"distUpgradeHeading": "Der Befehl dist-upgrade (interaktiver Modus)",
|
||||
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
|
||||
"whenHeading": "Wenn interaktiv die richtige Wahl ist",
|
||||
"whenItems": [
|
||||
"Sie haben <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> oder eine andere Konfigurationsdatei angepasst, die vom Upgrade berührt wird.",
|
||||
"Sie möchten sehen, welche Pakete Konfigurationskonflikte verursachen, und für jede Datei einzeln entscheiden.",
|
||||
"Sie aktualisieren einen Produktionshost, bei dem versteckte Änderungen inakzeptabel sind."
|
||||
],
|
||||
"promptCalloutTitle": "Was bei jeder Aufforderung zu antworten",
|
||||
"promptCalloutBody": "Hier gelten die gleichen Empfehlungen wie im manuellen Verfahren: siehe <dpkglink>Empfohlene Antworten auf dpkg-Rückfragen</dpkglink> weiter unten. Mit <strong>D</strong> zeigen Sie die Unterschiede an; mit <strong>Z</strong> öffnen Sie eine Shell."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Manuelles Upgrade-Verfahren",
|
||||
"intro": "Dies zeigt die Menüoption <strong>Manuelle Upgrade-Anleitung</strong>: die <wikilink>offizielle Proxmox-Anleitung für das Upgrade von 8 auf 9</wikilink>, in vier Phasen gegliedert. Das Skript <em>zeigt</em> die Befehle; Sie führen sie selbst in einer separaten Root-Shell aus. Volle Einsicht in jeden Schritt.",
|
||||
"rootCalloutTitle": "Alle Befehle brauchen root",
|
||||
"rootCalloutBody": "Verwenden Sie eine Root-Shell, auch für Umleitungen und Here-Dokumente. Bei <code>sudo</code> muss der gesamte Befehl mit Root-Rechten ausgeführt werden.",
|
||||
"phase1Heading": "Phase 1 — Vorbereitung",
|
||||
"phase1Intro": "PVE auf den neuesten Stand von 8.4.x bringen, Version und gegebenenfalls Ceph prüfen, die Proxmox-Vorabprüfung ausführen und einen Terminal-Multiplexer gegen Verbindungsabbrüche starten.",
|
||||
"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": "Phase 2 — Repository-Umstellung",
|
||||
"phase2Intro": "Alle Debian- und Proxmox-Repositories von Bookworm auf Trixie umstellen und Proxmox-Quellen ins deb822-Format überführen. <strong>Schritt 7 ODER 8 wählen</strong>, je nachdem, ob Sie ein Enterprise-Abonnement haben. Ohne Ceph Schritt 9 überspringen.",
|
||||
"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": "Phase 3 — Das dist-upgrade",
|
||||
"phase3Intro": "Das eigentliche Upgrade. Schritt 12 ist optional, aber empfohlen, um zahlreiche Audit-Meldungen zu unterdrücken. Schritt 13 dauert länger; beantworten Sie die dpkg-Rückfragen anhand der Tabelle. Schritt 13.1 betrifft nur EFI und folgt den offiziell bekannten Problemen.",
|
||||
"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": "Empfohlene Antworten für die dpkg prompts",
|
||||
"dpkgIntro": "Empfehlungen der offiziellen Proxmox-Anleitung: <strong>Y</strong> installiert die neue Datei des Paketbetreuers und überschreibt Ihre Datei; <strong>N</strong> behält Ihre Datei. Prüfen Sie bei Zweifeln zuerst die Unterschiede:",
|
||||
"dpkgTable": {
|
||||
"fileHeader": "Datei / prompt",
|
||||
"answerHeader": "Empfohlene Antwort",
|
||||
"whyHeader": "Warum",
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "/etc/issue",
|
||||
"answerRich": "<strong>N</strong> (vorhandene Datei behalten)",
|
||||
"whyRich": "Die gewohnte Anmeldeinformation bleibt erhalten",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/lvm/lvm.conf",
|
||||
"answerRich": "<strong>Y</strong> (Version des Paketbetreuers)",
|
||||
"whyRich": "PVE 9 benötigt die neuen LVM-Standardwerte",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/ssh/sshd_config",
|
||||
"answerRich": "<strong>Y</strong> bei reinen Standardänderungen; angepasste Dateien zuerst prüfen",
|
||||
"whyRich": "Lokale SSH-Einstellungen prüfen und den Zugang sichern, bevor die Datei ersetzt wird. Standardänderungen betreffen umbenannte Optionen und Kommentare.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/default/grub",
|
||||
"answerRich": "<strong>N</strong>, falls angepasst",
|
||||
"whyRich": "Hier stehen Startparameter, etwa für IOMMU und PCI-Passthrough",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/chrony/chrony.conf",
|
||||
"answerRich": "<strong>Y</strong>, falls unverändert; lokale Einstellungen zuvor sichern",
|
||||
"whyRich": "Trixie aktualisiert die Zeitsynchronisation. Lokale Einstellungen vor Übernahme der neuen Datei in chronys Verzeichnisse conf.d / sources.d verschieben.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "Dienstneustarts während des Upgrades",
|
||||
"answerRich": "<strong>Ja</strong> (Standard)",
|
||||
"whyRich": "Die meisten Dienste werden ohne Neustart des Hosts neu geladen",
|
||||
"fileFont": false
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>apt-listchanges</code>",
|
||||
"answerRich": "<kbd>q</kbd> drücken",
|
||||
"whyRich": "Beendet nur den Pager; angezeigt wird die Zusammenfassung des Änderungsprotokolls",
|
||||
"fileFont": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"inspectCalloutTitle": "Prüfung eines spezifischen dpkg-Konflikts",
|
||||
"inspectCalloutBody": "Bei einer dpkg-Rückfrage zu Konfigurationsdateien zeigt <strong>D</strong> die Unterschiede zwischen Ihrer Datei und der neuen Version; <strong>Z</strong> öffnet eine Shell für weitere Prüfungen. Beides hilft, eine fundierte Entscheidung zu treffen.",
|
||||
"phase4Heading": "Phase 4 — Post-Upgrade",
|
||||
"phase4Intro": "Erfolgreiches Upgrade prüfen, zum Laden des PVE-9-Kernels neu starten und die neue Version bestätigen. Verbliebene alte <code>.list</code>-Dateien können anschließend ins deb822-Format umgewandelt werden.",
|
||||
"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 & Ceph",
|
||||
"clusterCalloutTitle": "Cluster: Upgrade-Knoten nacheinander",
|
||||
"clusterCalloutBody": "Erkannt über <code>pvecm status</code>. <strong>Nicht</strong> mehrere Knoten gleichzeitig aktualisieren. Gäste zuerst verschieben, den Knoten aktualisieren, neu starten und die Cluster-Mitgliedschaft prüfen. Erst dann fortfahren. Während des Upgrades funktioniert Live-Migration von älteren zu neueren PVE-Versionen; die Gegenrichtung wird grundsätzlich nicht unterstützt. HA-Gruppen werden automatisch in HA-Regeln umgewandelt, sobald alle Knoten PVE 9 verwenden.",
|
||||
"cephCalloutTitle": "Ceph: ZUERST Ceph, danach Proxmox aktualisieren",
|
||||
"cephCalloutBody": "Ceph muss vor dem Proxmox-Upgrade bereits 19.x Squid verwenden. Folgen Sie der offiziellen Reihenfolge Quincy 17 → Reef 18 → Squid 19: Pakete aktualisieren und Ceph-Daemons schrittweise in der dokumentierten Reihenfolge neu starten. Vor dem Upgrade jedes Proxmox-Knotens <code>ceph --version</code> prüfen. Vollständiges Verfahren: <cephlink>Wiki zum Upgrade von Ceph Reef auf Squid</cephlink>."
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"items": [
|
||||
{
|
||||
"title": "Skript bricht ab: \"This script cannot be executed from the Proxmox web terminal\"",
|
||||
"bodyRich": "Eine SSH-Verbindung oder Konsole / IPMI / iKVM verwenden und dort erneut starten. Mit <code>tmux new -s pveupgrade</code> übersteht die Sitzung kurze Netzunterbrechungen."
|
||||
},
|
||||
{
|
||||
"title": "pve8to9 meldet FAIL, automatische Reparatur mit Option 1 meldet \"command not found\"",
|
||||
"bodyRich": "Erwähnt der Fehler <code>configure_repositories</code>, ist die Skriptkopie veraltet. Die aktuelle Reparatur verwendet cleanup_duplicate_repos und ensure_repositories. Kopie aktualisieren oder die manuellen Befehle mit Option 2 prüfen. <code>apt-get update</code> aktualisiert Paketlisten, behebt aber nicht jede blockierende Prüfung."
|
||||
},
|
||||
{
|
||||
"title": "apt-Simulation meldet \"proxmox-ve will be REMOVED\"",
|
||||
"bodyRich": "Die neuen Repositories sind nicht erreichbar oder die Umstellung des Codenamens fehlt. <code>cat /etc/apt/sources.list.d/proxmox.sources</code> prüfen: Bei <code>Suites:</code> muss <code>trixie</code> statt <code>bookworm</code> stehen. <code>apt-cache policy proxmox-ve</code> muss einen 9.x-Kandidaten aus dem neuen Repository anzeigen."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade scheitert teilweise",
|
||||
"bodyRich": "Mit <code>apt-get -f install</code> beschädigte Abhängigkeiten beheben und das Upgrade erneut starten. Bei weiteren Fehlern die letzten Zeilen von <code>/var/log/pve8-a-pve9-<timestamp>.log</code> prüfen. Nicht neu starten, bevor <code>dpkg -l | grep ^iU</code> keine Ausgabe mehr liefert."
|
||||
},
|
||||
{
|
||||
"title": "EFI-Host startet nicht nach dem Neustart",
|
||||
"bodyRich": "Nach dem Upgrade wird <code>grub-efi-amd64</code> installiert. Falls dieser Schritt fehlte oder scheiterte, das Proxmox-Installations-ISO im Rettungsmodus starten, das Root-Dateisystem einhängen, chroot aufrufen und <code>apt-get install grub-efi-amd64 && update-grub</code> ausführen."
|
||||
},
|
||||
{
|
||||
"title": "GUI wird nach dem Upgrade nicht geladen",
|
||||
"bodyRich": "<code>systemctl status pveproxy</code> und <code>systemctl restart pveproxy</code> ausführen. Besteht das Problem weiter, den Fehler mit <code>journalctl -u pveproxy -b</code> untersuchen."
|
||||
},
|
||||
{
|
||||
"title": "Netzwerk funktioniert nicht nach dem Neustart",
|
||||
"bodyRich": "Prüfen, ob <code>/etc/network/interfaces</code> vorhandene Geräte nennt und <code>ifupdown2</code> installiert ist: <code>apt install ifupdown2</code>. Bei geänderten Gerätenamen siehe <netlink>Persistente Schnittstellennamen</netlink>."
|
||||
},
|
||||
{
|
||||
"title": "Split-Brain im Cluster nach dem Upgrade eines Knotens",
|
||||
"bodyRich": "Gemischte Cluster mit PVE 8 und PVE 9 werden während des Upgrades unterstützt. Live-Migration von älteren zu neueren Versionen funktioniert; die Gegenrichtung wird grundsätzlich nicht unterstützt. Bei einem offline angezeigten Knoten <code>corosync</code> und die QDevice-/Netzkonfiguration prüfen. Mit <code>pvecm status</code> auf jedem Knoten das Quorum bestätigen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Beteiligte Dateien",
|
||||
"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": "Offizielle Quellen",
|
||||
"intro": "Das manuelle Verfahren des Skripts folgt diesen offiziellen Quellen. Bei Zweifeln während eines Upgrades gilt das offizielle Wiki; ProxMenux unterstützt die Durchführung, maßgeblich ist Proxmox.",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
|
||||
"title": "Upgrade von 8 auf 9",
|
||||
"desc": "Die Haupt-Proxmox-Wikiseite für das 8 → 9 Upgrade. Quelle der Wahrheit für jeden Befehl im manuellen Verfahren oben."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
|
||||
"title": "Upgrade auf Ceph Squid (19.x)",
|
||||
"desc": "Erforderlicher Vorbereitungsschritt für hyperkonvergente Ceph-Knoten. Vor PVE 9 muss Ceph 19.x Squid laufen."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Roadmap",
|
||||
"title": "Proxmox VE Fahrplan",
|
||||
"desc": "Neuerungen von PVE 9 gegenüber 8.x. Vor dem Upgrade lesen, um die Änderungen zu kennen."
|
||||
},
|
||||
{
|
||||
"href": "https://www.debian.org/releases/trixie/releasenotes",
|
||||
"title": "Versionshinweise zu Debian Trixie",
|
||||
"desc": "PVE 9 basiert auf Debian Trixie. Die Debian-Versionshinweise erläutern Änderungen am Betriebssystem, die auch Ihren Host betreffen."
|
||||
},
|
||||
{
|
||||
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
|
||||
"title": "Proxmox VE Installationsforum",
|
||||
"desc": "Bei Problemen während des Upgrades zuerst dieses Forum durchsuchen. Möglicherweise ist das gleiche Problem bereits beschrieben."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
|
||||
"title": "Backup und Restore",
|
||||
"desc": "Ein Major-Version-Upgrade ist nicht reversibel. Überprüfen Sie Ihre Backup-Disziplin vor dem Start."
|
||||
}
|
||||
]
|
||||
},
|
||||
"video": {
|
||||
"heading": "Videoanleitung",
|
||||
"intro": "Bevor Sie das Upgrade Ende-zu-Ende laufen sehen, bevor Sie es selbst tun? Dieser Walkthrough zeigt den ProxMenux Upgrade-Flow in Echtzeit.",
|
||||
"title": "ProxMenux — Videoanleitung zum Upgrade von Proxmox VE 8 auf 9",
|
||||
"caption": "Externes YouTube-Video. Wiedergabe im erweiterten Datenschutzmodus; Cookies erst nach dem Start der Wiedergabe."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Verwandte Themen",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox-Systemupdate",
|
||||
"tail": " — für reguläre Aktualisierungen innerhalb einer Hauptversion (8.4.1 → 8.4.5 usw.)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Übersicht der Dienstprogramme",
|
||||
"tail": " — zurück zur Abschnittsübersicht."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "UUP-Dump-ISO-Erstellung | ProxMenux-Dokumentation",
|
||||
"description": "Erstellen Sie mit der ProxMenux-UUP-Dump-ISO-Erstellung eine aktuelle Windows-Installations-ISO auf Ihrem Proxmox-Host. Installation der Abhängigkeiten, Download und Umwandlung der UUP-Dateien in eine bootfähige ISO für die VM-Erstellung werden automatisiert.",
|
||||
"ogTitle": "UUP-Dump-ISO-Erstellung | ProxMenux-Dokumentation",
|
||||
"ogDescription": "Erstellen Sie mit ProxMenux eine aktuelle Windows-ISO aus UUP Dump. Abhängigkeiten, Download und Umwandlung werden vollständig automatisiert.",
|
||||
"ogImageAlt": "ProxMenux — UUP-Dump-ISO-Erstellung"
|
||||
},
|
||||
"header": {
|
||||
"title": "UUP-Dump-ISO-Erstellung",
|
||||
"description": "Erstellen Sie mit UUP Dump eine aktuelle Windows-Installations-ISO auf Ihrem Proxmox-Host. ProxMenux verwaltet die Abhängigkeiten, lädt UUP-Dateien parallel herunter, führt den UUP-Dump-Konverter aus und verschiebt die ISO in das gewählte Ausgabeverzeichnis. Voreingestellt ist der erkannte Proxmox-ISO-Speicher.",
|
||||
"section": "Dienstprogramme"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Was dieses Skript macht",
|
||||
"body": "Geben Sie eine von uupdump.net nach Auswahl von Build, Sprache und Edition erzeugte URL an. Das Skript installiert fehlende Abhängigkeiten, lädt den UUP-Dump-Konverter und die UUP-Dateien herunter, erstellt eine bootfähige Windows-ISO und verschiebt sie in das gewählte Ausgabeverzeichnis. Als Standardziel wird der erkannte Proxmox-ISO-Speicher angeboten."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "UUP Dump ISO Creator Eintrag in ProxMenux",
|
||||
"caption": "UUP Dump ISO Creator Eintrag in ProxMenux"
|
||||
},
|
||||
"what": {
|
||||
"heading": "Was ist UUP Dump?",
|
||||
"intro": "UUP Dump ist ein Community-Dienst zum Herunterladen der ursprünglichen Unified-Update-Platform-Dateien (UUP), mit denen Windows Update Windows bereitstellt. Daraus lässt sich eine normale bootfähige ISO erstellen. So erhalten Sie:",
|
||||
"items": [
|
||||
"Der neueste Windows-Build (einschließlich Insider Preview-Kanäle).",
|
||||
"Ein spezifischer historischer Build, der nicht mehr auf der Download-Seite von Microsoft aufgeführt ist.",
|
||||
"Saubere, unveränderte Dateien, die direkt von den Servern von Microsoft stammen.",
|
||||
"Die genaue Kombination von Editionen und Sprachen, die Sie in einer einzigen ISO wünschen."
|
||||
],
|
||||
"learnMore": "Erfahren Sie mehr auf der <extlink>UUP Dump Projektseite</extlink>."
|
||||
},
|
||||
"automates": {
|
||||
"heading": "Was das Skript automatisiert"
|
||||
},
|
||||
"dependencies": {
|
||||
"heading": "Abhängigkeiten",
|
||||
"intro": "Das erste, was das Skript tut, ist die Suche nach den Tools, die zum Herunterladen von UUP-Nutzlasten und zum Zusammenbauen der ISO erforderlich sind. Alle, die fehlen, werden mit <code>apt-get</code> installiert:",
|
||||
"headerPackage": "Paket",
|
||||
"headerRole": "Rolle",
|
||||
"rows": [
|
||||
{
|
||||
"pkg": "curl",
|
||||
"roleRich": "HTTP-Downloads für den Start des Konverters."
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"roleRich": "Paralleler Downloader für alle UUP-Dateien."
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"roleRich": "Extrahiert Microsoft CAB-Pakete."
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"roleRich": "Erstellt <code>install.wim</code> (wimlib-imagex)."
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"roleRich": "Schreibt die endgültige bootfähige ISO (oder <code>mkisofs</code>)."
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Passt Windows-Registrierungsstrukturen während der Erstellung an."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Manuelles Äquivalent - wenn Sie sie jemals selbst installieren müssen:",
|
||||
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Download und Konvertierung",
|
||||
"steps": [
|
||||
"Erkennt den Proxmox ISO-Speicher (über <code>pvesm status -content iso</code>) oder fällt auf <code>/var/lib/vz/template/iso</code> zurück.",
|
||||
"Bittet um einen Basisordner für temporäre Dateien (Standard <code>/root/uup-temp</code>).",
|
||||
"Lädt den UUP-Dump-Konverter von <code>git.uupdump.net</code> herunter.",
|
||||
"Liest <code>id</code>, <code>pack</code> und <code>edition</code> aus der eingefügten URL.",
|
||||
"Ruft <code>https://uupdump.net/get.php?…&aria2=2</code> auf, um eine aria2-Downloadliste zu erstellen.",
|
||||
"Lädt alle UUP-Dateien mit aria2 nach <code>UUPs/</code> herunter, parallel und fortsetzbar.",
|
||||
"Führt <code>convert.sh wim UUPs 1</code> aus dem Konverter aus, um die fertige ISO zu erstellen.",
|
||||
"Verschiebt die ISO in das gewählte Ausgabeverzeichnis und entfernt temporäre Dateien."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "Verwendete aria2-Downloadoptionen",
|
||||
"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> — bis zu 16 Verbindungen pro Server.",
|
||||
"<code>-s16</code> — teilt jede Datei in 16 Segmente.",
|
||||
"<code>-j5</code> — 5 Dateien, die parallel heruntergeladen wurden.",
|
||||
"<code>-c</code> — nimmt teilweise Downloads wieder auf.",
|
||||
"<code>-R</code> — übernimmt den Zeitstempel der entfernten Datei für die heruntergeladene Datei, falls verfügbar."
|
||||
],
|
||||
"runtime": "Die typische Laufzeit beträgt etwa 10 Minuten und hängt vor allem von der Internetgeschwindigkeit und der Auslastung der UUP-Dump-Downloadserver ab."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Schritt 1 · Erhalten Sie eine UUP Dump URL",
|
||||
"intro": "Bevor Sie das Skript ausführen, benötigen Sie eine UUP-Dump-URL, die die Abfrageparameter <code>id</code>, <code>pack</code> und <code>edition</code> enthält. Generieren Sie es auf <extlink>uupdump.net</extlink>:",
|
||||
"stepBadge": "Schritt",
|
||||
"items": [
|
||||
{
|
||||
"title": "Wählen Sie eine Windows-Version",
|
||||
"img": "/iso-creator/step-1-select-version-windows.png",
|
||||
"caption": "UUP Dump Hauptseite - Wählen Sie eine Windows-Version",
|
||||
"body": "Öffnen Sie die UUP Dump-Homepage und wählen Sie die gewünschte Windows-Version aus."
|
||||
},
|
||||
{
|
||||
"title": "Wählen Sie einen bestimmten Build",
|
||||
"img": "/iso-creator/step-2-select-version-windows.png",
|
||||
"caption": "Wählen Sie einen bestimmten Build",
|
||||
"body": "Wählen Sie den gewünschten Build: den neuesten, einen aus einem Insider-Preview-Kanal oder einen noch aufgeführten älteren Build."
|
||||
},
|
||||
{
|
||||
"title": "Wählen Sie eine Sprache",
|
||||
"img": "/iso-creator/step-3-select-version-windows.png",
|
||||
"caption": "Wählen Sie eine Sprache",
|
||||
"body": "Wählen Sie die Sprache für die ISO."
|
||||
},
|
||||
{
|
||||
"title": "Editionen auswählen",
|
||||
"img": "/iso-creator/step-4-select-version-windows.png",
|
||||
"caption": "Wählen Sie die aufzunehmenden Editionen",
|
||||
"body": "Wählen Sie die Editionen aus, um sie in die ISO zu bündeln (Home, Pro, Enterprise, ...). Sie können mehrere kombinieren."
|
||||
},
|
||||
{
|
||||
"title": "Kopieren der URL",
|
||||
"img": "/iso-creator/step-5-select-version-windows.png",
|
||||
"caption": "Kopieren der URL aus der Adressleiste",
|
||||
"bodyRich": "Kopieren Sie auf der letzten Seite die URL <em>aus der Adressleiste des Browsers</em>. Sie muss <code>id=…</code>, <code>pack=…</code> und <code>edition=…</code> enthalten. Das Skript liest diese Zeichenfolge aus."
|
||||
}
|
||||
]
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Schritt 2 · ISO-Erstellung starten",
|
||||
"intro": "Mit der URL in der Hand, öffnen Sie ProxMenux und starten Sie den Creator:",
|
||||
"stepBadge": "Schritt",
|
||||
"items": [
|
||||
{
|
||||
"title": "Starten Sie UUP Dump ISO Creator",
|
||||
"img": "/iso-creator/start-uupdump-iso-creator.png",
|
||||
"caption": "Starten Sie UUP Dump ISO Creator von ProxMenux",
|
||||
"bodyRich": "Öffnen Sie in ProxMenux <strong>Utilities → UUP Dump ISO Creator</strong>. Das Skript prüft vor der Eingabeaufforderung die Abhängigkeiten und das ISO-Speicherverzeichnis."
|
||||
},
|
||||
{
|
||||
"title": "Fügen Sie die UUP Dump URL ein",
|
||||
"img": "/iso-creator/add-url-iso-creator.png",
|
||||
"caption": "Fügen Sie die von uupdump.net kopierte URL ein",
|
||||
"body": "Fügen Sie die URL in den Eingabedialog ein. Das Skript bestätigt, dass die drei erforderlichen Parameter vorhanden sind; wenn eines fehlt, wird es sauber abgebrochen."
|
||||
},
|
||||
{
|
||||
"title": "Warten Sie, bis der Build fertig ist",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Build fertig - ISO ist bereit im Proxmox ISO-Speicher",
|
||||
"bodyRich": "Die Konsole zeigt den aria2-Fortschritt und anschließend die Ausgabe des Konverters. Die fertige ISO wird in das gewählte Ausgabeverzeichnis verschoben. Liegt sie in einem konfigurierten Proxmox-ISO-Speicher, lässt sie sich unter <strong>Windows-VM erstellen → Mit persönlicher ISO installieren</strong> auswählen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Temporäre Dateien",
|
||||
"body": "Der temporäre Standardordner ist <code>/root/uup-temp</code>. Downloads liegen in <code>UUPs/</code>, der Konverter in <code>converter/</code>. Bei einem eigenen Basispfad wird ein separates Sitzungsunterverzeichnis angelegt. Nach erfolgreicher Erstellung oder im Zweig ohne erzeugte ISO wird die temporäre Sitzung entfernt. Bei früheren Fehlern oder einem Abbruch können temporäre Dateien zurückbleiben."
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% disk overhead. Easier to inspect (descriptor is plain XML). Can edit before importing.",
|
||||
"pros": "~120% of virtual disk size. Easier to inspect (descriptor is plain XML). Can edit before importing.",
|
||||
"cons": "Multiple files — must transfer all of them together."
|
||||
}
|
||||
]
|
||||
@@ -55,7 +55,7 @@
|
||||
"heading": "Destination directory",
|
||||
"body": "Pick from presets (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) or enter a manual path. The script validates the directory is writeable and warns if free space looks tight before starting.",
|
||||
"calloutTitle": "Free space rule of thumb",
|
||||
"calloutBody": "For an OVF export of a VM with disks totalling 100 GB virtual: budget ~120 GB free. For an OVA: budget ~220 GB. Sparse / mostly-empty disks may use less, but the conversion writes them out fully before the OVA TAR step compresses anything. If you run out of space mid-export, the temp directory is cleaned up by the EXIT trap and you start over."
|
||||
"calloutBody": "For an OVF export of a VM with disks totalling 100 GB virtual: budget ~120 GB free. For an OVA: budget ~220 GB. Actual usage may be lower for mostly-empty disks. The OVA archive is created with uncompressed TAR while the temporary VMDK files still exist, so allow space for both. If you run out of space mid-export, the temp directory is cleaned up by the EXIT trap and you start over."
|
||||
},
|
||||
"package": {
|
||||
"heading": "What ends up in the package",
|
||||
@@ -120,8 +120,8 @@
|
||||
"noSpaceBody": "Destination ran out of space. The temp directory is auto-cleaned by the EXIT trap. Pick a destination with more headroom (rule of thumb above) and re-run.",
|
||||
"unsupportedHwTitle": "Export completes but VMware refuses to import: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Some ESXi versions reject OVF descriptors that declare a hardware family they don't recognise. Open the .ovf in a text editor (or extract the .ova first), find <code><vssd:VirtualSystemType></code> and edit it to a value ESXi accepts (e.g. <code>vmx-13</code> for ESXi 6.5+). For a quick workaround, try VirtualBox — it's more permissive.",
|
||||
"nicTitle": "Imported VM in VMware has e1000 NIC but I want VirtIO",
|
||||
"nicBody": "Expected — the OVF only stores the NIC count, not the model. Edit the imported VM's NIC settings in VMware after import. Same applies for SCSI controller (export uses lsilogic for VMware compatibility; change to <code>VirtIO SCSI</code> if your guest supports it).",
|
||||
"nicTitle": "Imported VM uses a different NIC or SCSI controller",
|
||||
"nicBody": "The OVF preserves the NIC count, not the original model. Review the imported VM’s network settings in the destination hypervisor. The export declares an lsilogic SCSI controller for VMware compatibility. When importing back into Proxmox with ProxMenux, the VM is created with an LSI controller and e1000 NICs; switch to <code>VirtIO SCSI</code> and VirtIO afterwards if the guest has suitable drivers.",
|
||||
"runningTitle": "VM was running and I declined to stop it — export aborted",
|
||||
"runningBody": "The script can't produce a consistent image while disks are being written. Either accept the shutdown prompt next time, or stop the VM manually first (<code>qm shutdown $VMID</code>) and re-run.",
|
||||
"slowTitle": "Disk conversion is slow",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → qcow2)\nqm set --scsiN",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → storage format)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
@@ -86,7 +86,7 @@
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Memory unit ambiguity",
|
||||
"body": "The parser <strong>assumes MiB</strong>. If the OVF declares memory in <em>GB</em> (e.g. some VMware exports do), the imported VM will have 1/1024th of the intended RAM. After import, double-check <code>qm config $VMID | grep memory</code> against the source VM's documented RAM and adjust with <code>qm set $VMID --memory <MiB></code> if it's off by a factor of 1024 or 1024²."
|
||||
"body": "The parser normalizes recognized memory units to <strong>MiB</strong>, including bytes, KiB, MiB, GiB and supported textual labels. Missing or unrecognized units are <em>treated as MiB</em>. After import, compare <code>qm config $VMID | grep memory</code> with the source VM’s documented RAM and, if needed, correct it using <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Import dialog flow",
|
||||
@@ -108,7 +108,7 @@
|
||||
"heading": "Disk import loop",
|
||||
"intro": "For each disk reference in the OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — converts the VMDK to the storage-native format (e.g. qcow2 on local-lvm, raw on ZFS) and creates an <code>unusedN:</code> entry in the VM config.",
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — imports the disk in a format supported by the target storage and creates an <code>unusedN:</code> entry in the VM configuration.",
|
||||
"The script greps the config for the just-created <code>unusedN</code> reference.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — attaches the disk as <code>scsi0</code>, <code>scsi1</code>, …",
|
||||
"<code>qm set $VMID --delete unusedN</code> — clears the now-redundant unused marker."
|
||||
@@ -175,11 +175,11 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Troubleshooting",
|
||||
"orphanTitle": "VM was created but disk import failed — orphan VM left behind",
|
||||
"orphanIntro": "Known limitation. The script doesn't auto-clean a partial import. Destroy the orphan with:",
|
||||
"orphanIntro": "When an import fails, the script offers to remove the partial VM and its imported disks. If you declined, or automatic deletion failed, inspect the VM and remove it manually with:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Then fix the underlying cause (likely disk space on the target storage) and re-import.",
|
||||
"memTitle": "Imported VM has 8 MB of RAM (or 8 TB)",
|
||||
"memIntro": "Memory unit ambiguity in the OVF parser. Off by a factor of 1024 → OVF used GB instead of MiB. Fix:",
|
||||
"memIntro": "The parser converts recognized AllocationUnits to MiB. Missing or unsupported units are treated as MiB, so inspect the OVF and compare the imported setting with the source VM. Correct the memory if necessary:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "Imported VM doesn't boot — \"No bootable device\"",
|
||||
"bootIntro": "Most common cause: BIOS / UEFI mismatch. The VM was UEFI but Proxmox created it as BIOS. Set the matching firmware:",
|
||||
@@ -188,7 +188,7 @@
|
||||
"bsodTitle": "VMware-exported Windows VM imports but BSODs on first boot",
|
||||
"bsodBody": "Windows is sensitive to disk controller changes. Either: (a) install VirtIO drivers <em>before</em> exporting from VMware, or (b) keep the SCSI controller as <code>lsi</code> (the default) and only switch to VirtIO SCSI after the guest boots and you can install the VirtIO drivers in Windows.",
|
||||
"zeroTitle": "OVF parser reports 0 disks",
|
||||
"zeroBody": "The OVF descriptor uses an unusual disk reference style. Open the .ovf in a text editor and confirm each disk has a <code><File ovf:href=\"...vmdk\" ...></code> entry. If the file extension is unusual (e.g. just <code>.dat</code>), rename it to <code>.vmdk</code> and update the OVF reference, then re-run.",
|
||||
"zeroBody": "The OVF descriptor may use a disk reference style the parser does not recognize. Open the .ovf and look for each disk’s <code><File ovf:href=\"...vmdk\" ...></code> entry. If a disk really is VMDK but has an unusual extension such as <code>.dat</code>, rename it to <code>.vmdk</code> and update the OVF reference. Renaming does not convert a disk’s format.",
|
||||
"awkTitle": "awk: syntax error at or near , — parser fails on every OVA / OVF",
|
||||
"awkIntro": "The OVF parser uses gawk-specific syntax (3-argument <code>match()</code>) which mawk — the default <code>awk</code> on Debian / Proxmox — does not support. Recent versions of the script auto-install gawk on first use via the canonical <code>ensure_repositories</code> + <code>install_single_package</code> pair; if you're running an older copy, install it manually:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"title": "System maintenance",
|
||||
"body": "Keep the host healthy: CLI tooling, regular updates, and the major-version upgrade when it's time.",
|
||||
"bullets": [
|
||||
"System Utilities Installer (26 CLI tools)",
|
||||
"System Utilities Installer (25 CLI tools)",
|
||||
"Proxmox System Update (apt + dist-upgrade)",
|
||||
"PVE 8 → PVE 9 major upgrade"
|
||||
]
|
||||
@@ -73,7 +73,7 @@
|
||||
"options": [
|
||||
{
|
||||
"title": "System Utilities Installer",
|
||||
"description": "Curated picker for 26 CLI tools (htop, btop, iperf3, jq, tmux, ncdu, ...) with custom selection or predefined groups (basic, dev, compression, multiplexers, analysis, network). Uses the canonical repo + verify-command flow.",
|
||||
"description": "Curated picker for 25 CLI tools (htop, btop, iperf3, tmux, ...) with custom selection or predefined groups (basic, dev, compression, multiplexers, analysis, network). Uses the canonical repo + verify-command flow.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
@@ -106,10 +106,10 @@
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "A note on disk space for export / import",
|
||||
"body": "Both tools convert disk formats: export uses <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; import uses <code>qm importdisk</code> to convert back to the storage-native format (qcow2 / raw). Plan for <strong>~120% of virtual disk size</strong> for OVF and <strong>~220%</strong> for OVA — the conversion writes the full disk before any compression. Check the destination directory has the headroom before you start."
|
||||
"body": "Both tools convert disk formats: export uses <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; import uses <code>qm importdisk</code> to convert back to the storage-native format (qcow2 / raw). For export, plan for <strong>~120% of virtual disk size</strong> for OVF and <strong>~220%</strong> for OVA. The OVA archive uses uncompressed TAR and is created while the temporary VMDK files still exist. Check the destination directory has the headroom before you start."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "How the menu fits together",
|
||||
"body": "Each tool has a dedicated script under <code>scripts/utilities/</code>. The Proxmox System Update is a wrapper that delegates to one of two worker scripts in <code>scripts/global/</code> depending on the detected major version (PVE 8 or PVE 9). The PVE 8 → 9 upgrade exposes two extra menu actions inside its own flow — a stand-alone <em>Pre-upgrade check</em> (runs <code>pve8to9 --full</code>) and a read-only <em>Manual upgrade guide</em> (17-step runbook) — for users who want to inspect or operate by hand instead of the automated path."
|
||||
"body": "Each tool has a dedicated script under <code>scripts/utilities/</code>. Proxmox System Update calls one safe worker in <code>scripts/global/</code>, update-pve-safe.sh, which detects the major version and handles both PVE 8 and PVE 9. The PVE 8 → 9 upgrade offers two extra actions in its own menu: a stand-alone <em>Pre-upgrade check</em> (runs <code>pve8to9 --full</code>) and a read-only <em>Manual upgrade guide</em> (17-step runbook), for users who want to inspect the process or carry it out by hand."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox System Update | ProxMenux Documentation",
|
||||
"description": "Runs the official Proxmox upgrade sequence (apt update + apt full-upgrade -y) and adds the repo hygiene, essential-package check, LVM sanity scan, autoremove/autoclean and reboot prompt that the upgrade guide also recommends. Detects the running major version automatically.",
|
||||
"description": "Updates packages within the current Proxmox major version with apt-get update and apt full-upgrade -y. Checks disk space and configured repositories, attempts GPG key recovery, checks and repairs old LVM PV headers, rebuilds managed DKMS drivers when needed, runs autoremove/autoclean and offers a reboot when required.",
|
||||
"ogTitle": "Proxmox System Update | ProxMenux Documentation",
|
||||
"ogDescription": "Official apt full-upgrade / dist-upgrade wrapped with repo hygiene, autoremove and a smart reboot prompt."
|
||||
"ogDescription": "apt full-upgrade with repository checks, autoremove/autoclean and a reboot prompt when required."
|
||||
},
|
||||
"header": {
|
||||
"title": "Proxmox System Update",
|
||||
"description": "Wrapper that delegates to a single safe worker (<code>update-pve-safe.sh</code>) which detects the running Proxmox major version by itself. The configured repositories are read through the Proxmox API and kept as they are; a host with no active subscription whose only Proxmox repository is Enterprise is asked before switching to no-subscription. All packages are upgraded, ProxMenux-managed DKMS drivers are rebuilt if a new kernel landed, and the reboot prompt fires only when the kernel actually changed. Also launchable from the <em>Update Now</em> button in the ProxMenux Monitor dashboard header when pending updates are detected.",
|
||||
"description": "Delegates to a single worker (<code>update-pve-safe.sh</code>) that detects the running Proxmox major version. Configured repositories are read through the Proxmox API and preserved; an unsubscribed host with only Enterprise is asked before switching to no-subscription. The worker upgrades packages and rebuilds ProxMenux-managed DKMS drivers for a staged kernel. The wrapper offers a reboot when the system reboot marker exists or the newest installed kernel differs from the running kernel. Also available from <em>Update Now</em> in the ProxMenux Monitor header when pending updates are detected.",
|
||||
"section": "Utilities"
|
||||
},
|
||||
"calloutWhat": {
|
||||
@@ -22,25 +22,25 @@
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "What ProxMenux runs on top — verified against the script",
|
||||
"intro": "This option runs <strong>exactly</strong> the apt command above, wrapped with the repo hygiene, DKMS rebuild for ProxMenux-managed drivers and post-upgrade cleanup the official upgrade guide also recommends. Everything below maps 1:1 to <code>scripts/utilities/proxmox_update.sh</code> and the single safe worker <code>scripts/global/update-pve-safe.sh</code> — nothing implied, every step is in the code:",
|
||||
"intro": "Uses <strong>the same apt full-upgrade operation</strong>, with repository checks, DKMS rebuilding and post-update cleanup. The steps below correspond to <code>scripts/utilities/proxmox_update.sh</code> and its single worker <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Detects the PVE major version</strong> from inside the worker (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>) and adapts the base Proxmox / Debian repo URLs (bookworm on PVE 8, trixie on PVE 9). There is no fan-out to per-version worker scripts — a single safe worker handles both.",
|
||||
"<strong>Detects the PVE major version</strong> inside the worker (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). A single worker handles PVE 8 and PVE 9; configured repositories are preserved unless an unsubscribed host accepts the offered switch.",
|
||||
"<strong>Keeps the configured repositories.</strong> <code>ensure_repositories</code> reads the repositories through the Proxmox repository API, together with the subscription status. A host with an active subscription, or one that already uses the no-subscription or test repository, is left unchanged. A host with no active subscription whose only Proxmox repository is Enterprise is asked whether to switch to no-subscription; declining stops the update with no source changed.",
|
||||
"<strong>Runs the upgrade non-interactively</strong> with <code>DEBIAN_FRONTEND=noninteractive</code> and <code>--force-confdef --force-confold</code> — if a configuration file you already modified also changed upstream, your version stays in place. No silent overwrites of custom configs.",
|
||||
"<strong>Runs the upgrade non-interactively</strong> with <code>DEBIAN_FRONTEND=noninteractive</code> and <code>--force-confdef --force-confold</code>. For dpkg conffile decisions, it accepts the default action when one exists; otherwise it keeps the existing configuration file.",
|
||||
"<strong>Skips forcing optional utilities.</strong> The safe worker does not push <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> or similar packages onto the host — a Proxmox install that opted out of any of them keeps its choice. Missing packages are surfaced by the higher-level installer flows, not by the update path.",
|
||||
"<strong>LVM metadata sanity check</strong> against stray PV headers from passthrough disks (warn-only, no automatic fix).",
|
||||
"<strong>LVM metadata check and repair.</strong> Detects old PV headers and runs vgck --updatemetadata and vgchange -ay for the affected volume groups. This can change LVM metadata; it is not a warning-only scan.",
|
||||
"<strong>Cleans up afterwards:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>DKMS rebuild before the reboot prompt.</strong> When the upgrade staged a new kernel, the wrapper calls <code>pmx_rebuild_dkms_after_kernel</code> to rebuild every driver that ProxMenux installed via DKMS against the incoming kernel version — so the modules are ready before the box comes back up. Reboot detection uses <code>/var/run/reboot-required</code> when <code>needrestart</code> is present, and falls back to a <code>dpkg-query</code> comparison between the running kernel and the newest installed <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> package when it isn't — a signal that survives the many Proxmox hosts that ship without <code>needrestart</code>."
|
||||
"<strong>DKMS rebuild before the reboot prompt.</strong> The worker calls <code>pmx_rebuild_dkms_after_kernel</code> when a newer installed kernel is staged. The wrapper checks <code>/var/run/reboot-required</code> and also uses <code>dpkg-query</code> to compare the kernel reported by <code>uname -r</code> with the newest installed <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> package. The marker may be absent on hosts without <code>needrestart</code>; the kernel comparison still works in that case."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "In one sentence",
|
||||
"body": "Same upgrade Proxmox tells you to run, plus the repo cleanup, the essential-package check, the LVM sanity scan, the autoremove/autoclean afterwards, and a reboot prompt only when it matters."
|
||||
"body": "Updates host packages, preserves configured repositories unless you accept a switch, checks LVM metadata, rebuilds managed DKMS drivers, cleans up with autoremove/autoclean and offers a reboot when needed."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Confirmation dialog",
|
||||
"intro": "Selecting the option opens a summary of what the worker will do, requiring an explicit confirmation:",
|
||||
"imageAlt": "Proxmox System Update confirmation dialog listing repo hygiene, package updates, cleanup"
|
||||
"imageAlt": "Proxmox System Update confirmation dialog with repository checks, package updates and cleanup"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "How the wrapper routes",
|
||||
@@ -61,14 +61,14 @@
|
||||
},
|
||||
"worker": {
|
||||
"heading": "What the worker does",
|
||||
"intro": "A single worker (<code>scripts/global/update-pve-safe.sh</code>) handles both PVE 8 and PVE 9. It detects the major version internally and uses the version-appropriate codename (<code>bookworm</code> or <code>trixie</code>) for its base sources. The stages are:",
|
||||
"intro": "One worker (<code>scripts/global/update-pve-safe.sh</code>) handles PVE 8 (<code>bookworm</code>) and PVE 9 (<code>trixie</code>). It detects the major version internally and checks the existing repository configuration without rewriting the Debian base sources. The stages are:",
|
||||
"items": [
|
||||
"<strong>Sanity checks.</strong> Verifies at least ~1 GB free in <code>/var/cache/apt/archives</code>. Aborts early with a clear message when it fails, so the run doesn't die in the middle of an apt transaction.",
|
||||
"<strong>Repository check.</strong> <code>ensure_repositories</code> reads the repositories and the subscription status. On a host with a usable Proxmox repository it changes nothing; on a host with no active subscription and only the Enterprise repository it asks before switching to no-subscription, and stops the update when the answer is no.",
|
||||
"<strong>Apt update with GPG auto-recovery.</strong> On <code>NO_PUBKEY</code> for any repo (yours or a third-party one) the worker imports the missing key and retries automatically before failing.",
|
||||
"<strong>Pending upgrades + security count.</strong> Reports how many packages will change and how many of those come from the security suite, so the confirmation dialog has real numbers to show.",
|
||||
"<strong>Confirmation dialog.</strong> The wrapper asks for an explicit yes before touching apt.",
|
||||
"<strong>apt full-upgrade.</strong> Runs with <code>DEBIAN_FRONTEND=noninteractive</code> and <code>--force-confdef --force-confold</code> so any configuration file you customised keeps its current contents when upstream also changed it. Never overwrites operator-edited configs silently.",
|
||||
"<strong>Confirmation dialog.</strong> After refreshing package lists, the worker asks for an explicit yes before running the package upgrade.",
|
||||
"<strong>apt full-upgrade.</strong> Uses <code>DEBIAN_FRONTEND=noninteractive</code> and <code>--force-confdef --force-confold</code>. Dpkg follows its default action for conffile decisions when available and otherwise retains the existing file.",
|
||||
"<strong>LVM sanity check.</strong> <code>lvm_repair_check</code> refreshes VG metadata when disks passed through to guest VMs (DSM, TrueNAS, storage appliances) come back with old PV headers.",
|
||||
"<strong>DKMS rebuild for ProxMenux-managed drivers.</strong> When the upgrade staged a new kernel, <code>pmx_rebuild_dkms_after_kernel</code> reads <code>components_status.json</code> for the drivers ProxMenux installed (currently <code>nvidia_driver</code> → module <code>nvidia</code>, <code>coral_driver</code> → module <code>gasket</code>), installs the matching kernel headers (<code>proxmox-headers-<newkver></code> when available, else <code>pve-headers-<newkver></code>) and runs <code>dkms autoinstall -k <newkver></code>. If <code>dkms status</code> then doesn't show the modules built against the new kernel, the worker falls back to re-running each installer with <code>--auto-reinstall</code>. Any failure is logged but does not abort the update — you land on the reboot prompt in every case.",
|
||||
"<strong>Post-cleanup.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> before returning control to the wrapper."
|
||||
@@ -78,21 +78,21 @@
|
||||
"heading": "Post-update cleanup & reboot",
|
||||
"intro": "After the worker exits, the wrapper runs:",
|
||||
"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": "Then it checks whether a reboot is needed. Two signals trigger the prompt:",
|
||||
"afterCode": "The wrapper also checks whether a reboot is needed. Either of these signals triggers the prompt:",
|
||||
"items": [
|
||||
"<code>/var/run/reboot-required</code> exists (created by the kernel package post-install hook)",
|
||||
"The update log contains <code>linux-image</code> entries (kernel was actually upgraded)"
|
||||
"<code>/var/run/reboot-required</code> exists: a package or system tool has marked the host as needing a reboot.",
|
||||
"The newest installed Proxmox kernel package differs from the running kernel, as determined by <code>dpkg-query</code> and uname -r."
|
||||
],
|
||||
"outro": "If either is true, a whiptail dialog asks <em>\"Some changes require a reboot to take effect. Do you want to restart now?\"</em>. Decline to keep running on the old kernel until you choose to reboot manually (e.g. during a planned maintenance window)."
|
||||
},
|
||||
"end": {
|
||||
"heading": "What you see at the end",
|
||||
"intro": "When the worker finishes, the terminal shows the cleanup output and (if the kernel changed) the reboot prompt:",
|
||||
"intro": "When the worker finishes, the terminal shows the cleanup output and, if a reboot is required, the reboot prompt:",
|
||||
"imageAlt": "Proxmox System Update completion summary with cleanup output and reboot prompt"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Decline reboot only if you know why",
|
||||
"body": "Running on an old kernel after upgrading <code>linux-image-*</code> means you're on a half-upgraded system: userspace is new, kernel is old. Most of the time things work, but ZFS modules, IOMMU groups, KSMBD and any out-of-tree drivers will only match the kernel they were built for — a mismatch produces obscure failures. Reboot at the earliest sensible moment."
|
||||
"body": "Installing a new <code>proxmox-kernel-*</code> package does not replace the running kernel until you reboot. The new kernel and its matching modules become active on the next boot. Plan the reboot for a suitable maintenance window, and review any DKMS build warnings beforehand."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "How the safe worker treats the Enterprise repository",
|
||||
@@ -117,7 +117,7 @@
|
||||
"<strong>Major-version upgrade.</strong> 8 → 9 is a separate operation — see <link>Upgrade PVE 8 to PVE 9</link>.",
|
||||
"<strong>Backup.</strong> No snapshots, no rollback. Apt operations are not transactional. Combine with your normal backup discipline (PBS, vzdump, ZFS snapshots).",
|
||||
"<strong>Container / VM updates.</strong> Only the host is upgraded; guests are left alone.",
|
||||
"<strong>Firmware updates.</strong> CPU microcode, NIC firmware, BIOS — out of scope."
|
||||
"<strong>Dedicated firmware flashing.</strong> This is not a BIOS or device-firmware flashing tool. Installed firmware or CPU-microcode packages can still receive updates through apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
@@ -129,15 +129,15 @@
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade hangs at \"Configuring grub-pc\"",
|
||||
"body": "A dpkg prompt is asking which device(s) to install GRUB to. The wrapper passes <code>--force-confold</code> for config files but boot-loader install is a separate prompt. Use <kbd>Tab</kbd> + <kbd>Space</kbd> to select all your boot disks, then OK. Best avoided by selecting the boot disks once with <code>dpkg-reconfigure grub-pc</code> beforehand."
|
||||
"body": "If an interactive GRUB prompt is visible, it asks which devices should receive the boot loader. The <code>--force-confold</code> option applies to configuration-file decisions, not to this device selection. Use <kbd>Tab</kbd> + <kbd>Space</kbd> to select the appropriate boot disks, then OK. You can configure this selection beforehand with <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Kernel upgraded but the new modules are missing for an out-of-tree driver",
|
||||
"body": "The drivers ProxMenux installed via DKMS (currently <code>nvidia_driver</code> and <code>coral_driver</code>) are rebuilt automatically at the end of the upgrade against the incoming kernel version, using <code>dkms autoinstall -k <newkver></code> and, when needed, a fallback to each installer with <code>--auto-reinstall</code>. Confirm with <code>dkms status</code>. Third-party out-of-tree modules that aren't in ProxMenux's <code>components_status.json</code> registry (custom NIC drivers, hand-installed DKMS packages, …) still need a manual <code>dkms autoinstall</code> — the safe worker only touches what it originally installed."
|
||||
"body": "For managed drivers (<code>nvidia_driver</code> and <code>coral_driver</code>), the helper runs <code>dkms autoinstall -k <newkver></code> and can retry their installers with <code>--auto-reinstall</code>. Check the result with <code>dkms status</code>. The autoinstall command can also rebuild other registered DKMS modules; the installer fallback is limited to the managed entries in <code>components_status.json</code>. Inspect any third-party module that remains missing and rebuild it as needed with <code>dkms autoinstall</code>."
|
||||
},
|
||||
{
|
||||
"title": "The reboot prompt didn't appear but I'm sure the kernel changed",
|
||||
"body": "Two signals must agree (<code>/var/run/reboot-required</code> and <code>linux-image</code> in the upgrade log). If the marker file was cleared but the log is being parsed wrong, reboot manually with <code>shutdown -r now</code>. To confirm a kernel upgrade happened: <code>grep linux-image /var/log/apt/history.log</code>."
|
||||
"body": "The signals are alternatives: <code>/var/run/reboot-required</code> or a difference between the running and newest installed Proxmox kernel. The wrapper does not parse linux-image entries in the apt log. Check the running version with <code>uname -r</code> and the installed kernel packages with <code>dpkg-query</code>. If a reboot is needed, schedule it or run <code>shutdown -r now</code> when ready."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "System Utilities Installer | ProxMenux Documentation",
|
||||
"description": "Curated installer for 26 CLI utilities (htop, btop, iperf3, jq, tmux, ncdu, ...) on Proxmox VE. Custom selection or predefined groups (basic, dev, compression, multiplexers, analysis, network). Uses the canonical ensure_repositories + install_single_package flow.",
|
||||
"description": "CLI utility installer for Proxmox VE, with 25 packages in the canonical list (htop, btop, iperf3, tmux, ...). Custom selection, install-all and predefined groups (basic, development, compression, multiplexers, analysis, network). Groups can include additional packages. Uses ensure_repositories + install_single_package.",
|
||||
"ogTitle": "System Utilities Installer | ProxMenux Documentation",
|
||||
"ogDescription": "Install curated CLI tools on Proxmox VE with one click or custom selection."
|
||||
},
|
||||
"header": {
|
||||
"title": "System Utilities Installer",
|
||||
"description": "Curated picker for 26 CLI utilities defined in the canonical PROXMENUX_UTILS list. Offers custom selection, install-all, six predefined groups and a verify-installations check. Uses the shared ensure_repositories() + install_single_package() pair so repo configuration and per-package feedback stay consistent across the project.",
|
||||
"description": "Picker for 25 CLI utilities in the canonical PROXMENUX_UTILS list. Offers custom selection, install-all, six predefined groups and an installation check. Groups can include tools outside the canonical list. Uses shared ensure_repositories() + install_single_package() helpers for consistent repository handling and per-package feedback.",
|
||||
"section": "Utilities"
|
||||
},
|
||||
"info": {
|
||||
"title": "What this does",
|
||||
"body": "Installs CLI tools from a curated list of 26 packages. Every installation goes through the same canonical flow: <code>ensure_repositories</code> checks that the host has a usable Proxmox repository for the running PVE major version, then <code>install_single_package</code> runs the install and verifies the resulting command is in PATH."
|
||||
"body": "Installs CLI tools from a list of 25 packages. Every installation uses the same flow: <code>ensure_repositories</code> checks that the host has a usable Proxmox repository for the running PVE major version, then <code>install_single_package</code> installs the package and checks that its command is in PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Opening the installer",
|
||||
@@ -26,7 +26,7 @@
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Custom selection",
|
||||
"behaviourRich": "Dialog checklist of all 26 packages. Use SPACE to toggle, ENTER to confirm; only the selected ones are installed."
|
||||
"behaviourRich": "Checklist of all 25 packages. Use SPACE to toggle and ENTER to confirm; only the selected packages are installed."
|
||||
},
|
||||
{
|
||||
"option": "2. Install ALL utilities",
|
||||
@@ -63,7 +63,7 @@
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "The 26 packages",
|
||||
"heading": "The 25 packages",
|
||||
"intro": "Defined in the shared <code>scripts/global/utils-install-functions.sh</code> as <code>PROXMENUX_UTILS</code> (format: <code>package:verify_command:description</code>). Other ProxMenux scripts (e.g. the network monitoring launchers for iftop / iptraf-ng / iperf3) reuse entries from this list so package + verify command stay in sync.",
|
||||
"headerPackage": "Package",
|
||||
"headerVerify": "Verify command",
|
||||
@@ -193,11 +193,6 @@
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Create ZIP files"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "VM disk utilities"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -211,14 +206,14 @@
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (success):</strong> command available, package counted as <em>Successful</em>.",
|
||||
"<strong>1 (failed):</strong> apt failed, counted as <em>Failed</em>.",
|
||||
"<strong>2 (warning):</strong> apt succeeded but command not yet in PATH (hash refresh pending) — counted as <em>With warnings</em>."
|
||||
"<strong>2 (warning):</strong> apt succeeded but the expected command was not found in PATH — counted as <em>With warnings</em>."
|
||||
],
|
||||
"summary": "At the end of a group / custom install, a summary dialog shows <em>Successful / With warnings / Failed</em> counts."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verify installations",
|
||||
"intro": "Option 9 is read-only: it walks <code>PROXMENUX_UTILS</code> and runs <code>command -v</code> for each verify command. Output looks like this:",
|
||||
"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...",
|
||||
"code": "Total: 25\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": "Useful before running scripts that depend on these tools (e.g. <code>uup_dump_iso_creator.sh</code> needs <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). If anything is missing, run the matching group install or pick the missing packages via custom selection."
|
||||
},
|
||||
"troubleshoot": {
|
||||
@@ -226,7 +221,7 @@
|
||||
"reposTitle": "\"Failed to configure repositories. Installation aborted.\"",
|
||||
"reposBody": "The repository check did not pass: the switch to the no-subscription repository was declined, the subscription status could not be read, or a repository entry needs attention. The message printed above it states the cause. The repositories are listed in <em>Node → Updates → Repositories</em>, and <code>apt-get update</code> from a console shows the error apt reports.",
|
||||
"warningsTitle": "A package is reported \"With warnings\" but the command works after I close the menu",
|
||||
"warningsBody": "Expected. After <code>apt-get install</code>, the new binary is on disk but the current shell's PATH cache (<code>hash -t</code>) doesn't know yet. ProxMenux runs <code>hash -r</code> after each install, but in some shells the refresh only takes effect on the next prompt. Open a new shell and the command will work.",
|
||||
"warningsBody": "After <code>apt-get install</code>, the helper runs <code>hash -r</code>, waits briefly and checks the expected command with <code>command -v</code>. A warning means that check still failed; it does not identify the cause. Try a new shell, then check the package installation and PATH if the command is still missing.",
|
||||
"hangsTitle": "An apt install hangs",
|
||||
"hangsBody": "Most likely a debconf prompt is blocked behind the silenced output. The script wraps all apt calls with <code>DEBIAN_FRONTEND=noninteractive</code>, which usually suppresses prompts, but a few packages still require user input. Cancel with <kbd>Ctrl</kbd>+<kbd>C</kbd>, run <code>apt-get install -y <pkg></code> manually from a shell to see the prompt and decide."
|
||||
},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -8,12 +8,12 @@
|
||||
},
|
||||
"header": {
|
||||
"title": "UUP Dump ISO Creator",
|
||||
"description": "Build an up-to-date Windows installation ISO on your Proxmox host using UUP Dump. ProxMenux handles the dependencies, downloads the UUP files in parallel, runs the official converter and drops the final ISO into the Proxmox ISO storage — ready to attach to a new Windows VM.",
|
||||
"description": "Build an up-to-date Windows installation ISO on your Proxmox host using UUP Dump. ProxMenux handles dependencies, downloads UUP files in parallel, runs the UUP Dump converter and moves the ISO to your chosen output directory, which defaults to the detected Proxmox ISO storage.",
|
||||
"section": "Utilities"
|
||||
},
|
||||
"intro": {
|
||||
"title": "What this script does",
|
||||
"body": "You provide a UUP Dump URL (the one uupdump.net generates after you pick the build, language and edition) and the script does the rest: installs any missing dependencies, downloads the UUP Dump converter, downloads every UUP payload file with aria2, assembles a bootable Windows ISO and moves it into the Proxmox ISO storage so the VM creator can mount it on first boot."
|
||||
"body": "Provide a UUP Dump URL generated by uupdump.net after choosing a build, language and edition. The script installs missing dependencies, downloads the UUP Dump converter and UUP payloads, assembles a bootable Windows ISO and moves it to the output directory you selected. The detected Proxmox ISO storage is offered as the default destination."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "UUP Dump ISO Creator entry in ProxMenux",
|
||||
@@ -77,7 +77,7 @@
|
||||
"Calls <code>https://uupdump.net/get.php?…&aria2=2</code> to generate an aria2 download list.",
|
||||
"Downloads every UUP payload into <code>UUPs/</code> with aria2 (parallel, resumable).",
|
||||
"Runs <code>convert.sh wim UUPs 1</code> from the converter to produce the final ISO.",
|
||||
"Moves the ISO into the Proxmox ISO storage and cleans up temporary files."
|
||||
"Moves the ISO to the chosen output directory and cleans up temporary files."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
@@ -88,7 +88,7 @@
|
||||
"<code>-s16</code> — splits each file into 16 segments.",
|
||||
"<code>-j5</code> — 5 files downloaded in parallel.",
|
||||
"<code>-c</code> — resumes partial downloads.",
|
||||
"<code>-R</code> — retries on failure."
|
||||
"<code>-R</code> — applies the remote file’s timestamp to the downloaded file when available."
|
||||
],
|
||||
"runtime": "Typical runtime is around 10 minutes, dominated by your internet link speed and UUP Dump's mirror load."
|
||||
},
|
||||
@@ -150,12 +150,12 @@
|
||||
"title": "Wait for the build to finish",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Build finished — ISO is ready in Proxmox ISO storage",
|
||||
"bodyRich": "The console shows aria2 progress and then the converter output. When it finishes, the ISO lands in the detected Proxmox ISO storage and is ready to pick from <strong>Create VM → System Windows → Install with ISO from UUP Dump</strong>."
|
||||
"bodyRich": "The console shows aria2 progress and then converter output. The finished ISO is moved to your chosen output directory. If it is in configured Proxmox ISO storage, it can be selected from <strong>Create VM → System Windows → Install with personal ISO</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Temporary files",
|
||||
"body": "By default, temporary files live under <code>/root/uup-temp</code> (<code>uup-temp/</code> for downloads and <code>uup-converter/</code> for the converter script). The creator cleans both after a successful run. On failure it still cleans up and returns you to the menu so a retry starts from scratch."
|
||||
"body": "The default temporary folder is <code>/root/uup-temp</code>, with downloads in <code>UUPs/</code> and the converter in <code>converter/</code>. A custom temporary base path gets a separate session subdirectory. The successful-build and no-ISO-generated branches remove the temporary session. Earlier failures or cancellation can leave temporary files behind."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Exportar VM a OVA / OVF | ProxMenux Documentation",
|
||||
"title": "Exportar VM a OVA / OVF | Documentación de ProxMenux",
|
||||
"description": "Exporta una VM de Proxmox a un archivo OVA portable o un directorio OVF usando el esquema estándar DMTF. Discos VMDK en formato streamOptimized, manifiesto SHA1. Importable en VMware ESXi / Workstation / Fusion, VirtualBox y de vuelta a Proxmox.",
|
||||
"ogTitle": "Exportar VM a OVA / OVF | ProxMenux Documentation",
|
||||
"ogTitle": "Exportar VM a OVA / OVF | Documentación de ProxMenux",
|
||||
"ogDescription": "Convierte una VM de Proxmox en un paquete portable OVA / OVF compatible con VMware y VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
@@ -40,13 +40,13 @@
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Un único archivo — fácil de mover, sftp, adjuntar a un ticket. Autocontenido.",
|
||||
"pros": "Un único archivo, fácil de mover, transferir por sftp o adjuntar a una incidencia. Contiene todo lo necesario.",
|
||||
"cons": "Necesita ~220% del tamaño virtual del disco (overhead de TAR durante la creación)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% de overhead de disco. Más fácil de inspeccionar (el descriptor es XML plano). Editable antes de importar.",
|
||||
"pros": "~120% del tamaño virtual del disco. Más fácil de inspeccionar (el descriptor es XML de texto). Se puede editar antes de importar.",
|
||||
"cons": "Varios archivos — hay que transferirlos todos juntos."
|
||||
}
|
||||
]
|
||||
@@ -54,8 +54,8 @@
|
||||
"destination": {
|
||||
"heading": "Directorio de destino",
|
||||
"body": "Elige entre presets (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) o introduce una ruta manual. El script valida que el directorio es escribible y avisa si el espacio libre va justo antes de empezar.",
|
||||
"calloutTitle": "Regla del pulgar de espacio libre",
|
||||
"calloutBody": "Para una exportación OVF de una VM con discos que suman 100 GB virtuales: presupuesta ~120 GB libres. Para OVA: presupuesta ~220 GB. Los discos sparse / mayormente vacíos pueden usar menos, pero la conversión los escribe enteros antes de que el paso TAR de OVA comprima nada. Si te quedas sin espacio a mitad de la exportación, el directorio temporal se limpia con el trap de EXIT y vuelves a empezar."
|
||||
"calloutTitle": "Estimación orientativa del espacio libre",
|
||||
"calloutBody": "Para exportar a OVF una VM cuyos discos suman 100 GB virtuales, reserva ~120 GB libres; para OVA, ~220 GB. El uso real puede ser menor si los discos están casi vacíos. El archivo OVA se crea con TAR sin compresión mientras aún existen los archivos VMDK temporales, por lo que hay que reservar espacio para ambos. Si te quedas sin espacio durante la exportación, el manejador de EXIT limpia el directorio temporal y tendrás que empezar de nuevo."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Qué acaba en el paquete",
|
||||
@@ -73,7 +73,7 @@
|
||||
"notTitle": "Qué NO se exporta",
|
||||
"notItems": [
|
||||
"Montajes de CD-ROM / ISO (excluidos por diseño).",
|
||||
"Drives de cloud-init (excluidos por diseño).",
|
||||
"Unidades de cloud-init (excluidas por diseño).",
|
||||
"Bridge / modelo específico de NIC (solo se preserva el recuento).",
|
||||
"Elección de BIOS / UEFI — hay que volver a configurarla al importar.",
|
||||
"Configuración de passthrough PCI.",
|
||||
@@ -95,7 +95,7 @@
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importar el resultado",
|
||||
"intro": "El paquete exportado lo pueden consumir:",
|
||||
"intro": "El paquete exportado se puede importar en:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
@@ -117,12 +117,12 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"noSpaceTitle": "qemu-img convert falla a mitad con \"No space left on device\"",
|
||||
"noSpaceBody": "El destino se quedó sin espacio. El directorio temporal se limpia automáticamente con el trap de EXIT. Elige un destino con más margen (regla del pulgar más arriba) y vuelve a ejecutar.",
|
||||
"noSpaceBody": "El destino se ha quedado sin espacio. El manejador de EXIT limpia automáticamente el directorio temporal. Elige un destino con más espacio libre (consulta la estimación anterior) y vuelve a ejecutar la herramienta.",
|
||||
"unsupportedHwTitle": "La exportación termina pero VMware se niega a importar: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Algunas versiones de ESXi rechazan descriptores OVF que declaran una hardware family que no reconocen. Abre el .ovf en un editor de texto (o extrae primero el .ova), busca <code><vssd:VirtualSystemType></code> y edítalo a un valor que ESXi acepte (p. ej. <code>vmx-13</code> para ESXi 6.5+). Como solución rápida, prueba con VirtualBox — es más permisivo.",
|
||||
"nicTitle": "La VM importada en VMware tiene NIC e1000 pero quiero VirtIO",
|
||||
"nicBody": "Esperado — el OVF solo almacena el recuento de NICs, no el modelo. Edita la configuración de NIC de la VM importada en VMware después de importar. Lo mismo aplica para el controlador SCSI (la exportación usa lsilogic por compatibilidad con VMware; cámbialo a <code>VirtIO SCSI</code> si tu guest lo soporta).",
|
||||
"runningTitle": "La VM estaba corriendo y decliné pararla — exportación abortada",
|
||||
"unsupportedHwBody": "Algunas versiones de ESXi rechazan los descriptores OVF que declaran una familia de hardware que no reconocen. Abre el .ovf en un editor de texto (o extrae primero el .ova), busca <code><vssd:VirtualSystemType></code> y cambia su valor por uno que ESXi acepte (por ejemplo, <code>vmx-13</code> para ESXi 6.5+). Como solución rápida, prueba con VirtualBox, que es más permisivo.",
|
||||
"nicTitle": "La VM importada usa una NIC o un controlador SCSI diferente",
|
||||
"nicBody": "El OVF conserva el número de NIC, pero no el modelo original. Revisa la configuración de red de la VM importada en el hipervisor de destino. La exportación declara un controlador SCSI lsilogic por compatibilidad con VMware. Al importarla de vuelta a Proxmox con ProxMenux, la VM se crea con un controlador LSI y tarjetas e1000; cambia después a <code>VirtIO SCSI</code> y VirtIO si el sistema invitado tiene los controladores adecuados.",
|
||||
"runningTitle": "La VM estaba en ejecución y rechacé detenerla: exportación cancelada",
|
||||
"runningBody": "El script no puede producir una imagen consistente mientras se escribe en los discos. O bien aceptas el prompt de apagado la próxima vez, o paras la VM manualmente primero (<code>qm shutdown $VMID</code>) y vuelves a ejecutar.",
|
||||
"slowTitle": "La conversión de discos es lenta",
|
||||
"slowBody": "<code>qemu-img convert</code> es de un solo hilo y lee el origen a velocidad máxima. Para un disco de 100 GB en disco mecánico, espera 15-30 minutos. NVMe a NVMe es 5-10x más rápido. Las VMs multi-disco se convierten secuencialmente — el tiempo escala linealmente con el tamaño virtual total."
|
||||
@@ -133,11 +133,11 @@
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importar VM desde OVA / OVF",
|
||||
"tail": " — el compañero del viaje de ida y vuelta."
|
||||
"tail": " — la herramienta complementaria para volver a importar."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Resumen de Utilidades",
|
||||
"label": "Resumen de utilidades",
|
||||
"tail": " — volver al resumen de la sección."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importar VM desde OVA / OVF | ProxMenux Documentation",
|
||||
"title": "Importar VM desde OVA / OVF | Documentación de ProxMenux",
|
||||
"description": "Importa una VM de VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux en Proxmox VE. Extrae OVA automáticamente, parsea los metadatos OVF, crea la VM e importa cada disco al formato nativo del almacenamiento (qcow2 / raw).",
|
||||
"ogTitle": "Importar VM desde OVA / OVF | ProxMenux Documentation",
|
||||
"ogTitle": "Importar VM desde OVA / OVF | Documentación de ProxMenux",
|
||||
"ogDescription": "Trae VMs de exportaciones de VMware, VirtualBox o ProxMenux a Proxmox. Los discos se convierten automáticamente al formato nativo del almacenamiento."
|
||||
},
|
||||
"header": {
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → qcow2)\nqm set --scsiN",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formato del almacenamiento)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
@@ -86,7 +86,7 @@
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Ambigüedad de unidad de memoria",
|
||||
"body": "El parser <strong>asume MiB</strong>. Si el OVF declara la memoria en <em>GB</em> (p. ej. algunas exportaciones de VMware lo hacen), la VM importada tendrá 1/1024 de la RAM prevista. Tras la importación, contrasta <code>qm config $VMID | grep memory</code> contra la RAM documentada de la VM origen y ajusta con <code>qm set $VMID --memory <MiB></code> si está desviada por un factor de 1024 o 1024²."
|
||||
"body": "El analizador convierte las unidades de memoria reconocidas a <strong>MiB</strong>, incluidos bytes, KiB, MiB, GiB y las etiquetas de texto compatibles. Las unidades ausentes o no reconocidas se <em>interpretan como MiB</em>. Después de importar, compara <code>qm config $VMID | grep memory</code> con la RAM documentada de la VM de origen y, si hace falta, corrígela con <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Flujo de diálogos de importación",
|
||||
@@ -108,7 +108,7 @@
|
||||
"heading": "Bucle de importación de discos",
|
||||
"intro": "Para cada referencia de disco en el OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — convierte el VMDK al formato nativo del almacenamiento (p. ej. qcow2 en local-lvm, raw en ZFS) y crea una entrada <code>unusedN:</code> en la configuración de la VM.",
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importa el disco en un formato compatible con el almacenamiento de destino y crea una entrada <code>unusedN:</code> en la configuración de la VM.",
|
||||
"El script busca con grep en la configuración la referencia <code>unusedN</code> recién creada.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — asocia el disco como <code>scsi0</code>, <code>scsi1</code>, …",
|
||||
"<code>qm set $VMID --delete unusedN</code> — elimina el marcador unused ya redundante."
|
||||
@@ -130,7 +130,7 @@
|
||||
{
|
||||
"setting": "Controlador SCSI",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (Linux moderno + Windows con drivers VirtIO)"
|
||||
"recommended": "VirtIO SCSI single (Linux moderno o Windows con controladores VirtIO)"
|
||||
},
|
||||
{
|
||||
"setting": "Firmware (BIOS / UEFI)",
|
||||
@@ -138,8 +138,8 @@
|
||||
"recommended": "Igualar al firmware de la VM origen (desigualados = no arranca)"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU guest agent",
|
||||
"default": "Off",
|
||||
"setting": "QEMU Agente invitado",
|
||||
"default": "Desactivado",
|
||||
"recommendedRich": "On + instalar <code>qemu-guest-agent</code> en el guest (mejores backups, reporte de IP)"
|
||||
},
|
||||
{
|
||||
@@ -148,8 +148,8 @@
|
||||
"recommended": "Verificar contra el SO real del guest"
|
||||
},
|
||||
{
|
||||
"setting": "Display",
|
||||
"default": "Default",
|
||||
"setting": "Pantalla",
|
||||
"default": "Por defecto",
|
||||
"recommended": "VirtIO-GPU o SPICE (mejor rendimiento de consola)"
|
||||
}
|
||||
]
|
||||
@@ -166,7 +166,7 @@
|
||||
"<strong>Tipo de firmware BIOS / UEFI</strong> — por defecto el de Proxmox (BIOS).",
|
||||
"<strong>Configuración de passthrough PCI</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"<strong>Drives de cloud-init</strong>.",
|
||||
"Unidades <strong>cloud-init</strong>.",
|
||||
"<strong>Snapshots</strong> — solo el estado actual.",
|
||||
"<strong>Dispositivos USB / serie / paralelo</strong> declarados en el OVF.",
|
||||
"<strong>Tags de VM / notas / arranque al inicio</strong>."
|
||||
@@ -175,20 +175,20 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"orphanTitle": "La VM se creó pero la importación de discos falló — VM huérfana en el sistema",
|
||||
"orphanIntro": "Limitación conocida. El script no limpia automáticamente una importación parcial. Destruye la huérfana con:",
|
||||
"orphanIntro": "Si la importación falla, el script ofrece eliminar la VM parcial y sus discos importados. Si lo rechazaste o la eliminación automática falló, revisa la VM y elimínala manualmente con:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Después corrige la causa raíz (probablemente espacio en disco en el almacenamiento de destino) y vuelve a importar.",
|
||||
"memTitle": "La VM importada tiene 8 MB de RAM (o 8 TB)",
|
||||
"memIntro": "Ambigüedad de unidad de memoria en el parser de OVF. Desviado por un factor de 1024 → el OVF usó GB en lugar de MiB. Arreglo:",
|
||||
"memIntro": "El analizador convierte las AllocationUnits reconocidas a MiB. Si las unidades faltan o no son compatibles, las interpreta como MiB. Revisa el OVF, compara la memoria importada con la VM de origen y corrígela si hace falta:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "La VM importada no arranca — \"No bootable device\"",
|
||||
"bootIntro": "Causa más común: desigualdad BIOS / UEFI. La VM era UEFI pero Proxmox la creó como BIOS. Configura el firmware coincidente:",
|
||||
"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": "Segunda más común: el orden de arranque apunta a scsi0 pero el disco real del SO es scsi1. Edita el orden de arranque en la pestaña VM Options.",
|
||||
"bsodTitle": "Una VM Windows exportada desde VMware se importa pero hace BSOD al primer arranque",
|
||||
"bsodBody": "Windows es sensible a cambios de controlador de disco. Bien: (a) instala los drivers VirtIO <em>antes</em> de exportar desde VMware, o (b) mantén el controlador SCSI como <code>lsi</code> (el valor por defecto) y solo cambia a VirtIO SCSI tras que el guest arranque y puedas instalar los drivers VirtIO en Windows.",
|
||||
"bsodBody": "Windows es sensible a los cambios de controlador de disco. Puedes (a) instalar los controladores VirtIO <em>antes</em> de exportar desde VMware o (b) mantener el controlador SCSI <code>lsi</code> predeterminado y cambiar a VirtIO SCSI después de arrancar el sistema invitado e instalar sus controladores VirtIO en Windows.",
|
||||
"zeroTitle": "El parser de OVF reporta 0 discos",
|
||||
"zeroBody": "El descriptor OVF usa un estilo inusual de referencia a disco. Abre el .ovf en un editor de texto y confirma que cada disco tiene una entrada <code><File ovf:href=\"...vmdk\" ...></code>. Si la extensión del archivo es inusual (p. ej. solo <code>.dat</code>), renómbralo a <code>.vmdk</code> y actualiza la referencia en el OVF, después vuelve a ejecutar.",
|
||||
"zeroBody": "El descriptor OVF puede usar referencias a discos que el analizador no reconoce. Abre el .ovf y busca la entrada <code><File ovf:href=\"...vmdk\" ...></code> de cada disco. Si el disco es realmente VMDK, pero tiene una extensión inusual como <code>.dat</code>, renómbralo a <code>.vmdk</code> y actualiza la referencia en el OVF. Renombrarlo no convierte su formato.",
|
||||
"awkTitle": "awk: syntax error at or near , — el parser falla en cada OVA / OVF",
|
||||
"awkIntro": "El parser de OVF usa sintaxis específica de gawk (<code>match()</code> con 3 argumentos) que mawk — el <code>awk</code> por defecto en Debian / Proxmox — no soporta. Versiones recientes del script instalan automáticamente gawk en el primer uso vía el par canónico <code>ensure_repositories</code> + <code>install_single_package</code>; si estás ejecutando una copia más antigua, instálalo manualmente:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
@@ -206,11 +206,11 @@
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Exportar VM a OVA / OVF",
|
||||
"tail": " — el compañero del viaje de ida y vuelta."
|
||||
"tail": " — la herramienta complementaria para exportar."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Resumen de Utilidades",
|
||||
"label": "Resumen de utilidades",
|
||||
"tail": " — volver al resumen de la sección."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
"twitterDescription": "Creación de ISOs, herramientas CLI, actualización de Proxmox, salto PVE 8→9, portabilidad de VMs OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Utilidades",
|
||||
"title": "Utilidades y herramientas",
|
||||
"description": "Seis herramientas que completan el flujo de trabajo del día a día en Proxmox VE: creación de ISOs, mantenimiento del sistema y portabilidad de VMs. Cada opción es independiente — elige la que necesites; nada se instala hasta que lo pidas.",
|
||||
"section": "Utilidades"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Para qué sirve este menú",
|
||||
"body": "Tres grupos de herramientas no relacionadas pero habitualmente necesarias: <strong>crear una ISO de Windows</strong> desde UUP Dump, <strong>mantener el host Proxmox</strong> (utilidades CLI, actualizaciones, el salto de versión mayor) y <strong>mover VMs dentro y fuera</strong> de Proxmox usando el formato estándar OVA / OVF."
|
||||
"body": "Tres grupos de herramientas independientes pero de uso habitual: <strong>crear una ISO de Windows</strong> desde UUP Dump, <strong>mantener el host Proxmox</strong> (utilidades CLI, actualizaciones y el salto de versión mayor) e <strong>importar y exportar máquinas virtuales</strong> en Proxmox mediante el formato estándar OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Abrir el menú",
|
||||
@@ -30,14 +30,14 @@
|
||||
"bullets": [
|
||||
"Enlace compartido de UUP Dump → ISO arrancable",
|
||||
"Dependencias instaladas automáticamente",
|
||||
"El resultado aterriza en la ruta de plantillas ISO de Proxmox"
|
||||
"El resultado se guarda en la ruta de plantillas ISO de Proxmox"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Mantenimiento del sistema",
|
||||
"body": "Mantén el host sano: herramientas CLI, actualizaciones periódicas y el salto de versión mayor cuando toca.",
|
||||
"bullets": [
|
||||
"Instalador de utilidades del sistema (26 herramientas CLI)",
|
||||
"Instalador de utilidades del sistema (25 herramientas CLI)",
|
||||
"Actualización del sistema Proxmox (apt + dist-upgrade)",
|
||||
"Salto de versión mayor PVE 8 → PVE 9"
|
||||
]
|
||||
@@ -61,7 +61,7 @@
|
||||
"body": "Crea una ISO de instalación de Windows actualizada directamente en el host Proxmox. El script automatiza todo el flujo de UUP Dump: instalación de dependencias (aria2c, cabextract, wimlib-imagex, …), descarga paralelizada de los archivos de actualización vía aria2 y conversión en una única ISO arrancable que aterriza en <code>/var/lib/vz/template/iso</code> lista para asociar a una VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP Dump ISO Creator",
|
||||
"title": "Creador de ISO UUP Dump",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada desde un enlace compartido de UUP Dump. Dependencias, descarga y conversión totalmente automatizadas; la ISO resultante aterriza en /var/lib/vz/template/iso lista para crear una VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
@@ -69,16 +69,16 @@
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Mantenimiento del sistema",
|
||||
"body": "Tres herramientas cubren el trabajo del host del día a día y el ocasional. <strong>Instalador de utilidades del sistema</strong> configura las herramientas CLI que realmente usas tras una instalación recién hecha. <strong>Actualización del sistema Proxmox</strong> es la rutina semanal / mensual de higiene. <strong>Actualizar PVE 8 a PVE 9</strong> es la gran mudanza una vez por ciclo mayor — se trata con compuertas de seguridad adicionales porque no es reversible.",
|
||||
"body": "Tres herramientas cubren las tareas diarias y ocasionales del host. El <strong>Instalador de utilidades del sistema</strong> configura las herramientas CLI que usas tras una instalación nueva. La <strong>Actualización del sistema Proxmox</strong> sirve para el mantenimiento semanal o mensual. <strong>Actualizar PVE 8 a PVE 9</strong> es el gran cambio de cada ciclo de versión mayor y cuenta con comprobaciones de seguridad adicionales porque no es reversible.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Instalador de utilidades del sistema",
|
||||
"description": "Selector curado para 26 herramientas CLI (htop, btop, iperf3, jq, tmux, ncdu, ...) con selección personalizada o grupos predefinidos (básico, dev, compresión, multiplexores, análisis, red). Usa el flujo canónico de repo + comando de verificación.",
|
||||
"description": "Selector de 25 herramientas CLI escogidas (htop, btop, iperf3, tmux, ...) con selección personalizada o grupos predefinidos (básico, desarrollo, compresión, multiplexores, análisis y red). Usa el flujo estándar de repositorio y comando de verificación.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Actualización del sistema Proxmox",
|
||||
"description": "Comprobación de repositorios + apt update + apt dist-upgrade con preguntar antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), mantiene los repositorios configurados y pregunta antes de cambiar a sin suscripción un host que no la tiene, y después ejecuta autoremove.",
|
||||
"description": "Comprobación de repositorios + apt update + apt dist-upgrade, con confirmación antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), conserva los repositorios configurados y solicita confirmación antes de cambiar al repositorio no-subscription un host sin suscripción; después ejecuta autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
@@ -99,17 +99,17 @@
|
||||
},
|
||||
{
|
||||
"title": "Importar VM desde OVA / OVF",
|
||||
"description": "Trae una exportación de VMware / VirtualBox / ProxMenux de vuelta a Proxmox. Extrae OVA automáticamente, parsea los metadatos OVF, crea la VM e importa cada disco al formato nativo del almacenamiento.",
|
||||
"description": "Importa en Proxmox una exportación de VMware / VirtualBox / ProxMenux. Extrae OVA automáticamente, analiza los metadatos OVF, crea la VM e importa cada disco en el formato nativo del almacenamiento.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Nota sobre espacio en disco para exportar / importar",
|
||||
"body": "Ambas herramientas convierten formatos de disco: la exportación usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; la importación usa <code>qm importdisk</code> para convertir de vuelta al formato nativo del almacenamiento (qcow2 / raw). Planea <strong>~120% del tamaño virtual del disco</strong> para OVF y <strong>~220%</strong> para OVA — la conversión escribe el disco completo antes de cualquier compresión. Comprueba que el directorio de destino tiene margen antes de empezar."
|
||||
"body": "Ambas herramientas convierten formatos de disco: la exportación usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; la importación usa <code>qm importdisk</code> para volver al formato nativo del almacenamiento (qcow2 / raw). Para exportar, reserva <strong>~120% del tamaño virtual del disco</strong> para OVF y <strong>~220%</strong> para OVA. El archivo OVA usa TAR sin compresión y se crea mientras aún existen los archivos VMDK temporales. Comprueba que el directorio de destino tiene espacio suficiente antes de empezar."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Cómo encaja el menú",
|
||||
"body": "Cada herramienta tiene un script dedicado bajo <code>scripts/utilities/</code>. La Actualización del sistema Proxmox es un wrapper que delega en uno de dos scripts worker en <code>scripts/global/</code> según la versión mayor detectada (PVE 8 o PVE 9). El salto PVE 8 → 9 expone dos acciones extra de menú dentro de su propio flujo — una <em>Comprobación previa al upgrade</em> independiente (ejecuta <code>pve8to9 --full</code>) y una <em>Guía manual de upgrade</em> de solo lectura (runbook de 17 pasos) — para los usuarios que quieren inspeccionar u operar a mano en lugar de la ruta automatizada."
|
||||
"body": "Cada herramienta tiene un script dedicado en <code>scripts/utilities/</code>. La actualización del sistema Proxmox llama a un único script seguro de <code>scripts/global/</code>, update-pve-safe.sh, que detecta la versión mayor y gestiona tanto PVE 8 como PVE 9. La actualización PVE 8 → 9 ofrece dos acciones adicionales en su propio menú: una <em>Comprobación previa a la actualización</em> independiente (ejecuta <code>pve8to9 --full</code>) y una <em>Guía de actualización manual</em> de solo lectura (procedimiento de 17 pasos), para quienes quieran inspeccionar el proceso o realizarlo manualmente."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Actualización del sistema Proxmox | ProxMenux Documentation",
|
||||
"description": "Ejecuta la secuencia oficial de upgrade de Proxmox (apt update + apt full-upgrade -y) y añade la higiene de repos, comprobación de paquetes esenciales, escaneo de sanity de LVM, autoremove/autoclean y preguntar antes de reiniciar que la guía de upgrade también recomienda. Detecta la versión mayor en ejecución automáticamente.",
|
||||
"ogTitle": "Actualización del sistema Proxmox | ProxMenux Documentation",
|
||||
"ogDescription": "apt full-upgrade / dist-upgrade oficial envuelto con higiene de repos, autoremove y un preguntar antes de reiniciar inteligente."
|
||||
"title": "Actualización del sistema Proxmox | Documentación de ProxMenux",
|
||||
"description": "Actualiza los paquetes dentro de la versión mayor actual de Proxmox con apt-get update y apt full-upgrade -y. Comprueba el espacio en disco y los repositorios configurados, intenta recuperar las claves GPG, comprueba y repara cabeceras PV antiguas de LVM, recompila los controladores DKMS gestionados cuando hace falta, ejecuta autoremove/autoclean y ofrece reiniciar cuando es necesario.",
|
||||
"ogTitle": "Actualización del sistema Proxmox | Documentación de ProxMenux",
|
||||
"ogDescription": "apt full-upgrade con comprobación de repositorios, autoremove/autoclean y confirmación de reinicio cuando es necesario."
|
||||
},
|
||||
"header": {
|
||||
"title": "Actualización del sistema Proxmox",
|
||||
"description": "Wrapper que delega en un único worker seguro (<code>update-pve-safe.sh</code>) que detecta la versión mayor de Proxmox por sí mismo. Los repositorios configurados se leen a través de la API de Proxmox y se mantienen como están; en un host sin suscripción activa cuyo único repositorio de Proxmox es Enterprise se pregunta antes de cambiar a sin suscripción. Se actualizan todos los paquetes, se recompilan los drivers DKMS gestionados por ProxMenux si aterriza un kernel nuevo y el prompt de reinicio solo se dispara cuando el kernel realmente cambió. También lanzable desde el botón <em>Update Now</em> de la cabecera del dashboard de ProxMenux Monitor cuando se detectan actualizaciones pendientes.",
|
||||
"description": "Delega en un único script (<code>update-pve-safe.sh</code>) que detecta la versión mayor de Proxmox en ejecución. Los repositorios configurados se leen mediante la API de Proxmox y se conservan; si un host sin suscripción solo tiene Enterprise, se pide confirmación antes de cambiar a no-subscription. El script actualiza los paquetes y recompila los controladores DKMS gestionados por ProxMenux para un kernel pendiente de arrancar. El script principal ofrece reiniciar si existe la marca de reinicio del sistema o si el kernel más reciente instalado difiere del que está en ejecución. También se puede iniciar desde <em>Update Now</em> en la cabecera de ProxMenux Monitor cuando se detectan actualizaciones pendientes.",
|
||||
"section": "Utilidades"
|
||||
},
|
||||
"calloutWhat": {
|
||||
@@ -21,81 +21,81 @@
|
||||
"outro": "Esa única línea es el comando oficial en cualquier release actual de Proxmox. La parte difícil no es el upgrade en sí; es asegurar que los repositorios están limpios, que están habilitados los correctos y que el host queda en un estado razonable después."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Qué hace ProxMenux encima — verificado contra el script",
|
||||
"intro": "Esta opción ejecuta <strong>exactamente</strong> el comando apt de arriba, envuelto con la higiene de repos, la recompilación DKMS de los drivers gestionados por ProxMenux y la limpieza post-upgrade que la guía oficial de upgrade también recomienda. Todo lo de abajo mapea 1:1 a <code>scripts/utilities/proxmox_update.sh</code> y al único worker seguro <code>scripts/global/update-pve-safe.sh</code> — nada implícito, cada paso está en el código:",
|
||||
"heading": "Qué añade ProxMenux: verificado en el código",
|
||||
"intro": "Usa <strong>la misma operación apt full-upgrade</strong>, con comprobación de repositorios, recompilación DKMS y limpieza posterior. Los pasos siguientes corresponden a <code>scripts/utilities/proxmox_update.sh</code> y a su único script de ejecución, <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Detecta la versión mayor de PVE</strong> desde dentro del worker (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>) y adapta las URLs base de repo Proxmox / Debian (bookworm en PVE 8, trixie en PVE 9). No hay reparto a scripts worker por versión — un único worker seguro maneja ambas.",
|
||||
"<strong>Detecta la versión mayor de PVE</strong> dentro del script (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Un único script gestiona PVE 8 y PVE 9; los repositorios configurados se conservan salvo que un host sin suscripción acepte el cambio ofrecido.",
|
||||
"<strong>Mantiene los repositorios configurados.</strong> <code>ensure_repositories</code> lee los repositorios a través de la API de repositorios de Proxmox, junto con el estado de la suscripción. Un host con suscripción activa, o que ya usa el repositorio sin suscripción o el de test, se deja sin cambios. En un host sin suscripción activa cuyo único repositorio de Proxmox es Enterprise se pregunta si se cambia a sin suscripción; al rechazarlo, la actualización se detiene sin modificar ninguna fuente.",
|
||||
"<strong>Ejecuta el upgrade no interactivamente</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code> — si un archivo de configuración que ya modificaste también cambió upstream, tu versión se queda en su sitio. Sin sobrescrituras silenciosas de configuraciones propias.",
|
||||
"<strong>No fuerza utilidades opcionales.</strong> El worker seguro no empuja <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ni paquetes similares al host — una instalación de Proxmox que optó por no tener alguno de ellos conserva su elección. La ausencia de paquetes la surface los flujos de instalación de alto nivel, no la ruta de actualización.",
|
||||
"<strong>Comprobación de sanity de metadatos LVM</strong> contra cabeceras PV sueltas de discos en passthrough (solo aviso, sin arreglo automático).",
|
||||
"<strong>Ejecuta la actualización sin interacción</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code>. Para las decisiones sobre archivos de configuración de dpkg, acepta la acción predeterminada si existe; en caso contrario conserva el archivo actual.",
|
||||
"<strong>No fuerza la instalación de utilidades opcionales.</strong> El script no instala por la fuerza <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ni paquetes similares. Una instalación de Proxmox que haya prescindido de alguno mantiene esa elección. Los paquetes que faltan se señalan en los procesos de instalación superiores, no en el de actualización.",
|
||||
"<strong>Comprobación y reparación de metadatos LVM.</strong> Detecta cabeceras PV antiguas y ejecuta vgck --updatemetadata y vgchange -ay para los grupos de volúmenes afectados. Puede cambiar metadatos LVM; no se limita a mostrar avisos.",
|
||||
"<strong>Limpia después:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>Recompilación DKMS antes del prompt de reinicio.</strong> Cuando el upgrade dejó staged un kernel nuevo, el wrapper llama a <code>pmx_rebuild_dkms_after_kernel</code> para recompilar cada driver que ProxMenux instaló vía DKMS contra la versión del kernel entrante — así los módulos están listos antes de que la caja vuelva a arrancar. La detección de reinicio usa <code>/var/run/reboot-required</code> cuando <code>needrestart</code> está presente, y como fallback una comparación por <code>dpkg-query</code> entre el kernel en ejecución y el paquete <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> más nuevo instalado cuando no lo está — señal que sobrevive a los muchos hosts Proxmox que se entregan sin <code>needrestart</code>."
|
||||
"<strong>Recompilación DKMS antes de ofrecer el reinicio.</strong> El script de ejecución llama a <code>pmx_rebuild_dkms_after_kernel</code> cuando hay un kernel instalado más reciente pendiente de arrancar. El script principal comprueba <code>/var/run/reboot-required</code> y usa también <code>dpkg-query</code> para comparar el kernel que indica <code>uname -r</code> con el paquete <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> más reciente instalado. La marca puede faltar en hosts sin <code>needrestart</code>; la comparación de kernels sigue funcionando en ese caso."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "En una frase",
|
||||
"body": "El mismo upgrade que Proxmox te dice que ejecutes, más la limpieza de repos, la comprobación de paquetes esenciales, el escaneo de sanity de LVM, el autoremove/autoclean después y un preguntar antes de reiniciar solo cuando toca."
|
||||
"body": "Actualiza los paquetes del host, conserva los repositorios configurados salvo que aceptes un cambio, comprueba los metadatos LVM, recompila los controladores DKMS gestionados, limpia con autoremove/autoclean y ofrece reiniciar cuando es necesario."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Diálogo de confirmación",
|
||||
"intro": "Seleccionar la opción abre un resumen de lo que va a hacer el worker, requiriendo una confirmación explícita:",
|
||||
"imageAlt": "Diálogo de confirmación de Actualización del sistema Proxmox listando higiene de repos, actualizaciones de paquetes, limpieza"
|
||||
"intro": "Al seleccionar la opción se abre un resumen de lo que hará el script y se solicita confirmación explícita:",
|
||||
"imageAlt": "Diálogo de confirmación de la actualización del sistema Proxmox con comprobación de repositorios, actualización de paquetes y limpieza"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Cómo enruta el wrapper",
|
||||
"heading": "Cómo se delega la ejecución",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Único worker seguro",
|
||||
"label": "Único script de ejecución",
|
||||
"detail": "update-pve-safe.sh\n(detecta PVE 8 / 9\ninternamente)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Post-actualización",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nPreguntar antes de reiniciar si toca"
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nConfirmación de reinicio si es necesario"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Qué hace el worker",
|
||||
"intro": "Un único worker (<code>scripts/global/update-pve-safe.sh</code>) maneja tanto PVE 8 como PVE 9. Detecta la versión mayor internamente y usa el codename propio de cada versión (<code>bookworm</code> o <code>trixie</code>) para sus fuentes base. Las etapas son:",
|
||||
"heading": "Qué hace el script de ejecución",
|
||||
"intro": "Un único script (<code>scripts/global/update-pve-safe.sh</code>) gestiona PVE 8 (<code>bookworm</code>) y PVE 9 (<code>trixie</code>). Detecta la versión mayor y comprueba la configuración actual de repositorios sin reescribir las fuentes base de Debian. Las etapas son:",
|
||||
"items": [
|
||||
"<strong>Comprobaciones previas.</strong> Verifica al menos ~1 GB libres en <code>/var/cache/apt/archives</code>. Aborta pronto con un mensaje claro cuando falla, para que la ejecución no muera a mitad de una transacción apt.",
|
||||
"<strong>Comprobación de repositorios.</strong> <code>ensure_repositories</code> lee los repositorios y el estado de la suscripción. En un host con un repositorio de Proxmox utilizable no cambia nada; en un host sin suscripción activa y solo con el repositorio Enterprise pregunta antes de cambiar a sin suscripción, y detiene la actualización cuando la respuesta es no.",
|
||||
"<strong>Apt update con auto-recuperación de GPG.</strong> Ante un <code>NO_PUBKEY</code> de cualquier repo (los propios o uno de terceros), el worker importa la clave que falta y vuelve a intentar automáticamente antes de fallar.",
|
||||
"<strong>Actualizaciones pendientes + conteo de seguridad.</strong> Reporta cuántos paquetes van a cambiar y cuántos de esos vienen de la suite de seguridad, para que el diálogo de confirmación tenga números reales que mostrar.",
|
||||
"<strong>Diálogo de confirmación.</strong> El wrapper pide un sí explícito antes de tocar apt.",
|
||||
"<strong>apt full-upgrade.</strong> Se ejecuta con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code> para que cualquier archivo de configuración que personalizaste mantenga su contenido actual cuando upstream también lo cambió. Nunca sobrescribe silenciosamente configs editados por el usuario.",
|
||||
"<strong>Comprobación de sanity LVM.</strong> <code>lvm_repair_check</code> refresca los metadatos de VG cuando discos en passthrough a VMs guest (DSM, TrueNAS, appliances de almacenamiento) vuelven con cabeceras PV antiguas.",
|
||||
"<strong>Recompilación DKMS de los drivers gestionados por ProxMenux.</strong> Cuando el upgrade dejó staged un kernel nuevo, <code>pmx_rebuild_dkms_after_kernel</code> lee <code>components_status.json</code> para los drivers que ProxMenux instaló (actualmente <code>nvidia_driver</code> → módulo <code>nvidia</code>, <code>coral_driver</code> → módulo <code>gasket</code>), instala los headers de kernel correspondientes (<code>proxmox-headers-<newkver></code> cuando está disponible, si no <code>pve-headers-<newkver></code>) y ejecuta <code>dkms autoinstall -k <newkver></code>. Si <code>dkms status</code> no muestra los módulos construidos contra el kernel nuevo, el worker cae a reejecutar cada instalador con <code>--auto-reinstall</code>. Cualquier fallo se registra pero no aborta la actualización — llegas al prompt de reinicio en todos los casos.",
|
||||
"<strong>Post-limpieza.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> antes de devolver el control al wrapper."
|
||||
"<strong>Diálogo de confirmación.</strong> Tras refrescar las listas de paquetes, el script solicita un sí explícito antes de ejecutar la actualización de paquetes.",
|
||||
"<strong>apt full-upgrade.</strong> Usa <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code>. Dpkg aplica su acción predeterminada a las decisiones sobre archivos de configuración cuando existe; en caso contrario conserva el archivo actual.",
|
||||
"<strong>Comprobación de LVM.</strong> <code>lvm_repair_check</code> actualiza los metadatos de los grupos de volúmenes cuando los discos cedidos directamente a máquinas virtuales (DSM, TrueNAS o dispositivos de almacenamiento) vuelven con cabeceras PV antiguas.",
|
||||
"<strong>Recompilación DKMS de los controladores gestionados por ProxMenux.</strong> Cuando hay un kernel nuevo pendiente de arrancar, <code>pmx_rebuild_dkms_after_kernel</code> consulta en <code>components_status.json</code> los controladores instalados por ProxMenux (actualmente <code>nvidia_driver</code> → módulo <code>nvidia</code> y <code>coral_driver</code> → módulo <code>gasket</code>), instala las cabeceras correspondientes (<code>proxmox-headers-<newkver></code> si está disponible; si no, <code>pve-headers-<newkver></code>) y ejecuta <code>dkms autoinstall -k <newkver></code>. Si <code>dkms status</code> no muestra los módulos compilados para el kernel nuevo, vuelve a ejecutar cada instalador con <code>--auto-reinstall</code>. Los fallos se registran sin cancelar la actualización, que continúa hasta la confirmación de reinicio.",
|
||||
"<strong>Limpieza posterior.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> antes de devolver el control al script principal."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Limpieza post-actualización y reinicio",
|
||||
"intro": "Tras salir el worker, el wrapper ejecuta:",
|
||||
"intro": "Cuando finaliza el script de ejecución, el script principal ejecuta:",
|
||||
"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": "Después comprueba si hace falta un reinicio. Dos señales disparan el prompt:",
|
||||
"afterCode": "El script principal también comprueba si hace falta reiniciar. Cualquiera de estas señales activa la pregunta:",
|
||||
"items": [
|
||||
"<code>/var/run/reboot-required</code> existe (creado por el hook post-install del paquete del kernel)",
|
||||
"El log del upgrade contiene entradas de <code>linux-image</code> (el kernel se actualizó de verdad)"
|
||||
"Existe <code>/var/run/reboot-required</code>: un paquete o una herramienta del sistema ha marcado que el host necesita reiniciarse.",
|
||||
"El paquete de kernel Proxmox más reciente instalado difiere del kernel en ejecución, según <code>dpkg-query</code> y uname -r."
|
||||
],
|
||||
"outro": "Si alguna es cierta, un diálogo whiptail pregunta <em>\"Some changes require a reboot to take effect. Do you want to restart now?\"</em>. Decline para seguir corriendo en el kernel antiguo hasta que elijas reiniciar manualmente (p. ej. durante una ventana de mantenimiento planificada)."
|
||||
"outro": "Si se cumple alguna condición, un diálogo de whiptail pregunta <em>«Algunos cambios requieren reiniciar para aplicarse. ¿Quieres reiniciar ahora?»</em>. Recházalo para seguir con el kernel actual hasta que decidas reiniciar manualmente, por ejemplo durante una ventana de mantenimiento."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Qué ves al final",
|
||||
"intro": "Cuando el worker termina, el terminal muestra la salida de la limpieza y (si el kernel cambió) el preguntar antes de reiniciar:",
|
||||
"imageAlt": "Resumen de finalización de Actualización del sistema Proxmox con salida de limpieza y preguntar antes de reiniciar"
|
||||
"intro": "Cuando termina el script de ejecución, el terminal muestra el resultado de la limpieza y, si hace falta reiniciar, la pregunta correspondiente:",
|
||||
"imageAlt": "Resumen final de la actualización del sistema Proxmox con el resultado de la limpieza y la confirmación de reinicio"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Decline el reinicio solo si sabes por qué",
|
||||
"body": "Correr en un kernel antiguo tras actualizar <code>linux-image-*</code> significa que estás en un sistema medio actualizado: userspace nuevo, kernel viejo. La mayoría del tiempo las cosas funcionan, pero los módulos ZFS, grupos IOMMU, KSMBD y cualquier driver fuera del árbol solo cuadran con el kernel para el que fueron construidos — un desajuste produce fallos oscuros. Reinicia en el primer momento razonable."
|
||||
"title": "Pospón el reinicio solo si sabes por qué",
|
||||
"body": "Instalar un paquete <code>proxmox-kernel-*</code> nuevo no sustituye al kernel en ejecución hasta que reinicies. El nuevo kernel y sus módulos correspondientes se activan en el siguiente arranque. Planifica el reinicio para una ventana de mantenimiento adecuada y revisa antes los avisos de compilación DKMS."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Cómo trata el worker seguro al repositorio Enterprise",
|
||||
"heading": "Cómo trata el script al repositorio Enterprise",
|
||||
"intro": "Proxmox entrega los hosts con el repositorio Enterprise habilitado por defecto. Sin una suscripción activa, ese repositorio devuelve 401 en <code>apt-get update</code>. El worker seguro cambia los repositorios solo en ese caso, solo tras preguntar, y a través de la API de repositorios de Proxmox — la misma que hay detrás de <em>Nodo → Actualizaciones → Repositorios</em>. Lo que ocurre en cada caso:",
|
||||
"items": [
|
||||
"Con una <strong>suscripción activa</strong>, los repositorios se dejan sin cambios y Enterprise dirige la actualización.",
|
||||
@@ -117,7 +117,7 @@
|
||||
"<strong>Salto de versión mayor.</strong> 8 → 9 es una operación aparte — mira <link>Actualizar PVE 8 a PVE 9</link>.",
|
||||
"<strong>Backup.</strong> Sin snapshots, sin rollback. Las operaciones de apt no son transaccionales. Combínalo con tu disciplina normal de backups (PBS, vzdump, snapshots ZFS).",
|
||||
"<strong>Actualizaciones de contenedores / VMs.</strong> Solo se actualiza el host; los guests se quedan en paz.",
|
||||
"<strong>Actualizaciones de firmware.</strong> Microcódigo de CPU, firmware de NIC, BIOS — fuera de alcance."
|
||||
"<strong>Instalación específica de firmware.</strong> Esta herramienta no sirve para flashear BIOS ni firmware de dispositivos. Los paquetes de firmware o microcódigo de CPU ya instalados pueden recibir actualizaciones mediante apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
@@ -129,21 +129,21 @@
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade se queda colgado en \"Configuring grub-pc\"",
|
||||
"body": "Un prompt de dpkg está preguntando en qué dispositivo(s) instalar GRUB. El wrapper pasa <code>--force-confold</code> para archivos de configuración pero la instalación del cargador de arranque es un prompt aparte. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> para seleccionar todos tus discos de arranque, después OK. Mejor evitarlo seleccionando los discos de arranque una vez con <code>dpkg-reconfigure grub-pc</code> de antemano."
|
||||
"body": "Si aparece una pregunta interactiva de GRUB, solicita los dispositivos donde instalar el cargador de arranque. La opción <code>--force-confold</code> se aplica a decisiones sobre archivos de configuración, no a esta selección de dispositivos. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> para seleccionar los discos de arranque adecuados y después OK. Puedes configurar esta selección de antemano con <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "El kernel se actualizó pero los nuevos módulos faltan para un driver fuera del árbol",
|
||||
"body": "Los drivers que ProxMenux instaló vía DKMS (actualmente <code>nvidia_driver</code> y <code>coral_driver</code>) se recompilan automáticamente al final del upgrade contra la versión del kernel entrante, usando <code>dkms autoinstall -k <newkver></code> y, si hace falta, un fallback a cada instalador con <code>--auto-reinstall</code>. Confirma con <code>dkms status</code>. Los módulos fuera del árbol de terceros que no están en el registro <code>components_status.json</code> de ProxMenux (drivers de NIC propios, paquetes DKMS instalados a mano, …) siguen necesitando un <code>dkms autoinstall</code> manual — el worker seguro solo toca lo que instaló originalmente."
|
||||
"body": "Para los controladores gestionados (<code>nvidia_driver</code> y <code>coral_driver</code>), la función ejecuta <code>dkms autoinstall -k <newkver></code> y puede volver a ejecutar sus instaladores con <code>--auto-reinstall</code>. Comprueba el resultado con <code>dkms status</code>. El comando autoinstall también puede recompilar otros módulos DKMS registrados; la ejecución alternativa de instaladores se limita a las entradas gestionadas de <code>components_status.json</code>. Revisa cualquier módulo de terceros que siga faltando y recompílalo con <code>dkms autoinstall</code> si hace falta."
|
||||
},
|
||||
{
|
||||
"title": "El preguntar antes de reiniciar no apareció pero estoy seguro de que el kernel cambió",
|
||||
"body": "Tienen que coincidir dos señales (<code>/var/run/reboot-required</code> y <code>linux-image</code> en el log del upgrade). Si el archivo marcador se borró pero el log se está parseando mal, reinicia manualmente con <code>shutdown -r now</code>. Para confirmar que hubo una actualización de kernel: <code>grep linux-image /var/log/apt/history.log</code>."
|
||||
"title": "No apareció la pregunta de reinicio, pero creo que se instaló un kernel nuevo",
|
||||
"body": "Las señales son alternativas: <code>/var/run/reboot-required</code> o una diferencia entre el kernel en ejecución y el Proxmox más reciente instalado. El script principal no analiza entradas linux-image del registro de apt. Comprueba la versión en ejecución con <code>uname -r</code> y los paquetes de kernel instalados con <code>dpkg-query</code>. Si hace falta reiniciar, prográmalo o ejecuta <code>shutdown -r now</code> cuando estés listo."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Archivos implicados",
|
||||
"code": "scripts/utilities/proxmox_update.sh # este script (wrapper)\nscripts/global/update-pve-safe.sh # único worker seguro (PVE 8 + PVE 9)\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # lee y cambia los repositorios a través de la API de Proxmox\nscripts/global/utils-install-functions.sh # pmx_rebuild_dkms_after_kernel\n/usr/local/share/proxmenux/components_status.json # registro de drivers DKMS gestionados por ProxMenux\n/etc/apt/sources.list.d/proxmox.sources # fuente sin suscripción, escrita por Proxmox al aceptar el cambio\n/var/run/reboot-required # se lee para decidir el prompt de reinicio\n# Fallback de reinicio cuando needrestart no está instalado:\n# dpkg-query -W 'proxmox-kernel-*-pve-signed' 'pve-kernel-*-pve' vs. uname -r"
|
||||
"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",
|
||||
@@ -156,11 +156,11 @@
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Instalador de utilidades del sistema",
|
||||
"tail": " — para instalar las herramientas CLI que quieras alrededor de las actualizaciones (htop / btop / ncdu)."
|
||||
"tail": " — para instalar herramientas CLI útiles durante las actualizaciones (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Resumen de Utilidades",
|
||||
"label": "Resumen de utilidades",
|
||||
"tail": " — volver al resumen de la sección."
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Instalador de utilidades del sistema | ProxMenux Documentation",
|
||||
"description": "Instalador curado para 26 utilidades CLI (htop, btop, iperf3, jq, tmux, ncdu, ...) en Proxmox VE. Selección personalizada o grupos predefinidos (básico, dev, compresión, multiplexores, análisis, red). Usa el flujo canónico ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Instalador de utilidades del sistema | ProxMenux Documentation",
|
||||
"ogDescription": "Instala herramientas CLI curadas en Proxmox VE con un clic o con selección personalizada."
|
||||
"title": "Instalador de utilidades del sistema | Documentación de ProxMenux",
|
||||
"description": "Instalador de utilidades CLI para Proxmox VE, con 25 paquetes en la lista canónica (htop, btop, iperf3, tmux, ...). Selección personalizada, instalación completa y grupos predefinidos (básico, desarrollo, compresión, multiplexores, análisis y red). Los grupos pueden incluir paquetes adicionales. Usa ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Instalador de utilidades del sistema | Documentación de ProxMenux",
|
||||
"ogDescription": "Instala una selección de herramientas CLI en Proxmox VE con un clic o mediante selección personalizada."
|
||||
},
|
||||
"header": {
|
||||
"title": "Instalador de utilidades del sistema",
|
||||
"description": "Selector curado para 26 utilidades CLI definidas en la lista canónica PROXMENUX_UTILS. Ofrece selección personalizada, instalar todo, seis grupos predefinidos y una comprobación de verificación de instalaciones. Usa el par compartido ensure_repositories() + install_single_package() para que la configuración de repos y el feedback por paquete se mantengan consistentes en todo el proyecto.",
|
||||
"description": "Selector de las 25 utilidades CLI de la lista canónica PROXMENUX_UTILS. Ofrece selección personalizada, instalación completa, seis grupos predefinidos y comprobación de instalaciones. Los grupos pueden incluir herramientas ajenas a la lista canónica. Usa las funciones compartidas ensure_repositories() + install_single_package() para gestionar los repositorios y los mensajes de cada paquete de forma coherente.",
|
||||
"section": "Utilidades"
|
||||
},
|
||||
"info": {
|
||||
"title": "Qué hace",
|
||||
"body": "Instala herramientas CLI de una lista curada de 26 paquetes. Cada instalación pasa por el mismo flujo canónico: <code>ensure_repositories</code> comprueba que el host tiene un repositorio de Proxmox utilizable para la versión mayor de PVE en ejecución, después <code>install_single_package</code> ejecuta la instalación y verifica que el comando resultante esté en PATH."
|
||||
"body": "Instala herramientas CLI de una lista de 25 paquetes. Cada instalación usa el mismo proceso: <code>ensure_repositories</code> comprueba que el host tenga un repositorio Proxmox utilizable para la versión mayor de PVE en ejecución; después <code>install_single_package</code> instala el paquete y comprueba que su comando esté en PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Abrir el instalador",
|
||||
@@ -26,7 +26,7 @@
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Selección personalizada",
|
||||
"behaviourRich": "Checklist de diálogo con los 26 paquetes. Usa SPACE para alternar, ENTER para confirmar; solo se instalan los seleccionados."
|
||||
"behaviourRich": "Lista de selección de los 25 paquetes. Usa SPACE para marcar y ENTER para confirmar; solo se instalan los paquetes seleccionados."
|
||||
},
|
||||
{
|
||||
"option": "2. Instalar TODAS las utilidades",
|
||||
@@ -63,7 +63,7 @@
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "Los 26 paquetes",
|
||||
"heading": "Los 25 paquetes",
|
||||
"intro": "Definidos en el compartido <code>scripts/global/utils-install-functions.sh</code> como <code>PROXMENUX_UTILS</code> (formato: <code>package:verify_command:description</code>). Otros scripts de ProxMenux (p. ej. los lanzadores de monitorización de red para iftop / iptraf-ng / iperf3) reutilizan entradas de esta lista para que paquete + comando de verificación se mantengan sincronizados.",
|
||||
"headerPackage": "Paquete",
|
||||
"headerVerify": "Comando de verificación",
|
||||
@@ -193,11 +193,6 @@
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Crear archivos ZIP"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Utilidades de disco de VM"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -209,30 +204,30 @@
|
||||
],
|
||||
"verifyIntro": "Tras instalar, el comando de verificación se comprueba con <code>command -v \"$verify_cmd\"</code>. Tres desenlaces:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (éxito):</strong> comando disponible, paquete contado como <em>Successful</em>.",
|
||||
"<strong>1 (fallido):</strong> apt falló, contado como <em>Failed</em>.",
|
||||
"<strong>2 (advertencia):</strong> apt tuvo éxito pero el comando aún no está en PATH (refresco de hash pendiente) — contado como <em>With warnings</em>."
|
||||
"<strong>0 (correcto):</strong> comando disponible; el paquete se cuenta como <em>Correcto</em>.",
|
||||
"<strong>1 (fallo):</strong> apt ha fallado; se cuenta como <em>Fallido</em>.",
|
||||
"<strong>2 (advertencia):</strong> apt ha terminado correctamente, pero el comando esperado no se encuentra en PATH; se cuenta como <em>Con advertencias</em>."
|
||||
],
|
||||
"summary": "Al final de una instalación de grupo / personalizada, un diálogo de resumen muestra los conteos de <em>Successful / With warnings / Failed</em>."
|
||||
"summary": "Al terminar una instalación de grupo o personalizada, un diálogo muestra los recuentos de <em>Correctos / Con advertencias / Fallidos</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verificar instalaciones",
|
||||
"intro": "La opción 9 es de solo lectura: recorre <code>PROXMENUX_UTILS</code> y ejecuta <code>command -v</code> para cada comando de verificación. La salida se ve así:",
|
||||
"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...",
|
||||
"code": "Total: 25\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 ejecutar scripts que dependen de estas herramientas (p. ej. <code>uup_dump_iso_creator.sh</code> necesita <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). Si falta algo, ejecuta la instalación del grupo correspondiente o elige los paquetes que faltan mediante selección personalizada."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"reposTitle": "\"Failed to configure repositories. Installation aborted.\"",
|
||||
"reposTitle": "«No se pudieron configurar los repositorios. Instalación cancelada.»",
|
||||
"reposBody": "La comprobación de repositorios no se superó: se rechazó el cambio al repositorio sin suscripción, no se pudo leer el estado de la suscripción o una entrada de repositorio requiere atención. El mensaje impreso justo encima indica la causa. Los repositorios se listan en <em>Nodo → Actualizaciones → Repositorios</em>, y <code>apt-get update</code> desde una consola muestra el error que reporta apt.",
|
||||
"warningsTitle": "Un paquete se reporta como \"With warnings\" pero el comando funciona tras cerrar el menú",
|
||||
"warningsBody": "Esperado. Tras <code>apt-get install</code>, el nuevo binario está en disco pero la caché de PATH del shell actual (<code>hash -t</code>) aún no lo sabe. ProxMenux ejecuta <code>hash -r</code> tras cada instalación, pero en algunos shells el refresco solo surte efecto en el siguiente prompt. Abre un nuevo shell y el comando funcionará.",
|
||||
"warningsBody": "Después de <code>apt-get install</code>, la función ejecuta <code>hash -r</code>, espera brevemente y comprueba el comando esperado con <code>command -v</code>. Una advertencia indica que esa comprobación sigue fallando, pero no identifica la causa. Prueba con una sesión de shell nueva y comprueba la instalación del paquete y PATH si el comando sigue faltando.",
|
||||
"hangsTitle": "Un apt install se queda colgado",
|
||||
"hangsBody": "Lo más probable es que un prompt de debconf esté bloqueado detrás de la salida silenciada. El script envuelve todas las llamadas de apt con <code>DEBIAN_FRONTEND=noninteractive</code>, que normalmente suprime los prompts, pero algunos paquetes aún requieren entrada del usuario. Cancela con <kbd>Ctrl</kbd>+<kbd>C</kbd>, ejecuta <code>apt-get install -y <pkg></code> manualmente desde un shell para ver el prompt y decidir."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Archivos implicados",
|
||||
"code": "scripts/utilities/system_utils.sh # este script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # lee y cambia los repositorios a través de la API de Proxmox\n/etc/apt/sources.list.d/proxmox.sources # fuente sin suscripción, escrita por Proxmox al aceptar el cambio"
|
||||
"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",
|
||||
@@ -249,7 +244,7 @@
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Resumen de Utilidades",
|
||||
"label": "Resumen de utilidades",
|
||||
"tailRich": " — volver al resumen de la sección."
|
||||
}
|
||||
]
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "UUP Dump ISO Creator | ProxMenux Documentation",
|
||||
"title": "Creador de ISO UUP Dump | Documentación de ProxMenux",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox usando el UUP Dump ISO Creator de ProxMenux. Automatiza la instalación de dependencias, descarga y conversión de archivos UUP en una ISO arrancable lista para crear una VM.",
|
||||
"ogTitle": "UUP Dump ISO Creator | ProxMenux Documentation",
|
||||
"ogTitle": "Creador de ISO UUP Dump | Documentación de ProxMenux",
|
||||
"ogDescription": "Crea una ISO de Windows actualizada desde UUP Dump usando ProxMenux. Dependencias, descarga y conversión totalmente automatizadas.",
|
||||
"ogImageAlt": "UUP Dump ISO Creator de ProxMenux"
|
||||
},
|
||||
"header": {
|
||||
"title": "UUP Dump ISO Creator",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox usando UUP Dump. ProxMenux se encarga de las dependencias, descarga los archivos UUP en paralelo, ejecuta el conversor oficial y deja la ISO final en el almacenamiento de ISOs de Proxmox — lista para asociar a una nueva VM Windows.",
|
||||
"title": "Creador de ISO UUP Dump",
|
||||
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox con UUP Dump. ProxMenux gestiona las dependencias, descarga los archivos UUP en paralelo, ejecuta el conversor de UUP Dump y mueve la ISO al directorio de salida elegido, que por defecto es el almacenamiento de ISOs de Proxmox detectado.",
|
||||
"section": "Utilidades"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Qué hace este script",
|
||||
"body": "Tú aportas una URL de UUP Dump (la que uupdump.net genera tras elegir build, idioma y edición) y el script hace el resto: instala las dependencias que falten, descarga el conversor de UUP Dump, descarga cada archivo de payload UUP con aria2, ensambla una ISO arrancable de Windows y la mueve al almacenamiento de ISOs de Proxmox para que el creador de VM pueda montarla en el primer arranque."
|
||||
"body": "Proporciona una URL generada por uupdump.net tras elegir una compilación, un idioma y una edición. El script instala las dependencias que falten, descarga el conversor de UUP Dump y los archivos UUP, crea una ISO arrancable de Windows y la mueve al directorio de salida elegido. Como destino predeterminado ofrece el almacenamiento de ISOs de Proxmox detectado."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "Entrada UUP Dump ISO Creator en ProxMenux",
|
||||
@@ -61,7 +61,7 @@
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Ajusta hives del registro de Windows durante la construcción."
|
||||
"roleRich": "Modifica las secciones del registro de Windows durante la creación."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Equivalente manual — si alguna vez necesitas instalarlas tú mismo:",
|
||||
@@ -73,22 +73,22 @@
|
||||
"Detecta el almacenamiento de ISOs de Proxmox (vía <code>pvesm status -content iso</code>) o recae en <code>/var/lib/vz/template/iso</code>.",
|
||||
"Pregunta por una carpeta base para archivos temporales (por defecto <code>/root/uup-temp</code>).",
|
||||
"Descarga el conversor de UUP Dump desde <code>git.uupdump.net</code>.",
|
||||
"Parsea <code>id</code>, <code>pack</code> y <code>edition</code> de la URL que pegas.",
|
||||
"Extrae <code>id</code>, <code>pack</code> y <code>edition</code> de la URL pegada.",
|
||||
"Llama a <code>https://uupdump.net/get.php?…&aria2=2</code> para generar una lista de descargas de aria2.",
|
||||
"Descarga cada payload UUP en <code>UUPs/</code> con aria2 (paralelo, reanudable).",
|
||||
"Ejecuta <code>convert.sh wim UUPs 1</code> del conversor para producir la ISO final.",
|
||||
"Mueve la ISO al almacenamiento de ISOs de Proxmox y limpia los archivos temporales."
|
||||
"Mueve la ISO al directorio de salida elegido y limpia los archivos temporales."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "Flags de descarga de Aria2 usados",
|
||||
"heading": "Opciones de descarga de 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> — hasta 16 conexiones por servidor.",
|
||||
"<code>-s16</code> — divide cada archivo en 16 segmentos.",
|
||||
"<code>-j5</code> — 5 archivos descargados en paralelo.",
|
||||
"<code>-c</code> — reanuda descargas parciales.",
|
||||
"<code>-R</code> — reintenta tras fallos."
|
||||
"<code>-R</code> — aplica al archivo descargado la fecha y hora del archivo remoto, si están disponibles."
|
||||
],
|
||||
"runtime": "El tiempo típico ronda los 10 minutos, dominado por la velocidad de tu enlace de internet y la carga del mirror de UUP Dump."
|
||||
},
|
||||
@@ -147,15 +147,15 @@
|
||||
"body": "Pega la URL en el diálogo de entrada. El script valida que los tres parámetros requeridos están presentes; si falta alguno, aborta limpiamente."
|
||||
},
|
||||
{
|
||||
"title": "Espera a que termine la construcción",
|
||||
"title": "Espera a que termine la creación",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Construcción terminada — la ISO está lista en el almacenamiento de ISOs de Proxmox",
|
||||
"bodyRich": "La consola muestra el progreso de aria2 y luego la salida del conversor. Cuando termina, la ISO aterriza en el almacenamiento de ISOs de Proxmox detectado y está lista para elegirse desde <strong>Create VM → System Windows → Install with ISO from UUP Dump</strong>."
|
||||
"caption": "Creación terminada: la ISO está lista en el almacenamiento de ISOs de Proxmox",
|
||||
"bodyRich": "La consola muestra el progreso de aria2 y después la salida del conversor. La ISO terminada se mueve al directorio de salida elegido. Si está en un almacenamiento de ISOs configurado en Proxmox, se puede seleccionar desde <strong>Crear VM con Windows → Instalar con ISO personal</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Archivos temporales",
|
||||
"body": "Por defecto, los archivos temporales viven bajo <code>/root/uup-temp</code> (<code>uup-temp/</code> para descargas y <code>uup-converter/</code> para el script conversor). El creador limpia ambos tras una ejecución exitosa. En caso de fallo igual limpia y te devuelve al menú para que un reintento empiece desde cero."
|
||||
"body": "La carpeta temporal predeterminada es <code>/root/uup-temp</code>, con las descargas en <code>UUPs/</code> y el conversor en <code>converter/</code>. Si eliges otra ruta base, se crea un subdirectorio de sesión independiente. Las ramas de creación correcta y de ausencia de ISO eliminan la sesión temporal. Los fallos o las cancelaciones anteriores pueden dejar archivos temporales."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Exporter une VM en OVA / OVF | Documentation ProxMenux",
|
||||
"description": "Exportez une VM Proxmox vers une archive OVA portable ou un répertoire OVF avec le schéma DMTF standard. Disques VMDK au format streamOptimized et manifeste SHA1. Importable dans VMware ESXi / Workstation / Fusion, VirtualBox et à nouveau dans Proxmox.",
|
||||
"ogTitle": "Exporter une VM en OVA / OVF | Documentation ProxMenux",
|
||||
"ogDescription": "Convertissez une VM Proxmox en paquet OVA / OVF portable compatible avec VMware et VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Exportation de VM vers OVA / OVF",
|
||||
"description": "Convertit une VM Proxmox en paquet OVA portable (archive TAR unique) ou OVF (descripteur et fichiers VMDK) avec le schéma OVF standard de DMTF. Les disques sont convertis avec qemu-img en VMDK au format streamOptimized. Le résultat peut être importé dans VMware (ESXi / Workstation / Fusion), VirtualBox et à nouveau dans Proxmox avec l’outil d’importation.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ce que ça fait",
|
||||
"body": "Lit la configuration d’une VM arrêtée, convertit chaque disque en VMDK au format streamOptimized, génère un descripteur OVF et un manifeste SHA1, puis regroupe le tout dans un fichier <code>.ova</code> unique ou un répertoire <code>-ovf</code>. La VM source n’est jamais modifiée."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Sélecteur de VM",
|
||||
"body": "Au lancement, le script affiche toutes les VM de <code>qm list</code> avec leur VMID, leur nom et leur état. Choisissez celle à exporter :",
|
||||
"imgAlt": "Boîte de dialogue de sélection de la VM à exporter, avec la liste de toutes les VM"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "La VM doit être arrêtée",
|
||||
"intro": "Une image disque cohérente nécessite une VM arrêtée. Si la VM sélectionnée est en cours d’exécution, ProxMenux propose de l’arrêter :",
|
||||
"items": [
|
||||
"Arrêt normal via <code>qm shutdown $VMID --timeout 120</code> (attend 2 minutes l’arrêt ACPI du système invité).",
|
||||
"Si le délai expire, propose un arrêt forcé : <code>qm stop $VMID</code> (équivalent à une coupure d’alimentation).",
|
||||
"Si vous refusez les deux, l’export est annulé et aucune donnée n’est modifiée."
|
||||
],
|
||||
"warnTitle": "L’arrêt forcé équivaut à une coupure d’alimentation",
|
||||
"warnBody": "<code>qm stop</code> équivaut à débrancher l’alimentation. Le système invité peut nécessiter une réparation du système de fichiers au prochain démarrage. Privilégiez l’arrêt normal et réservez l’arrêt forcé aux systèmes invités qui ne répondent plus."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Sélecteur de format : OVA vs OVF",
|
||||
"headerFormat": "Format",
|
||||
"headerOutput": "Sortie",
|
||||
"headerPros": "Avantages",
|
||||
"headerCons": "Inconvénients",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Un seul fichier autonome, facile à déplacer, à transférer par sftp ou à joindre à un ticket.",
|
||||
"cons": "Nécessite ~220 % de la taille virtuelle du disque (espace supplémentaire pour l’archive TAR pendant sa création)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120 % de la taille virtuelle du disque. Plus facile à examiner, car le descripteur est en XML texte. Modifiable avant l’import.",
|
||||
"cons": "Plusieurs fichiers, à transférer tous ensemble."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Répertoire de destination",
|
||||
"body": "Choisissez un chemin prédéfini (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) ou saisissez un chemin personnalisé. Le script vérifie que le répertoire est accessible en écriture et avertit si l’espace libre semble insuffisant avant de commencer.",
|
||||
"calloutTitle": "Estimation de l’espace libre nécessaire",
|
||||
"calloutBody": "Pour exporter en OVF une VM dont les disques totalisent 100 Go virtuels, prévoyez ~120 Go libres ; pour OVA, ~220 Go. L’espace réellement utilisé peut être inférieur pour des disques presque vides. L’archive OVA est créée en TAR non compressé alors que les fichiers VMDK temporaires sont encore présents : prévoyez donc de la place pour les deux. Si l’espace manque pendant l’export, le gestionnaire EXIT nettoie le répertoire temporaire et vous devez recommencer."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Ce qui finit dans le paquet",
|
||||
"intro": "Pour une OVA / OVF nommée <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": "Ce qui est exporté",
|
||||
"items": [
|
||||
"<strong>Disques :</strong> toutes les entrées <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> et <code>ide*</code> de la configuration de la VM, converties en VMDK au format streamOptimized.",
|
||||
"<strong>Nombre de vCPU</strong> (RASD ResourceType 3) et <strong>mémoire</strong> en MiB (ResourceType 4).",
|
||||
"<strong>Nombre de cartes réseau</strong> (ResourceType 10 : uniquement le nombre, sans le pont ni le modèle).",
|
||||
"<strong>Nom de la VM</strong> et indication du type de système d’exploitation."
|
||||
],
|
||||
"notTitle": "Ce qui n'est pas exporté",
|
||||
"notItems": [
|
||||
"Montages CD-ROM / ISO (volontairement exclus).",
|
||||
"Lecteurs cloud-init (volontairement exclus).",
|
||||
"Pont et modèle précis de carte réseau (seul le nombre est conservé).",
|
||||
"Choix BIOS / UEFI, à configurer à nouveau lors de l’import.",
|
||||
"Configuration du passthrough PCI.",
|
||||
"Snapshots — seul l'état actuel est capturé.",
|
||||
"Options de niveau VM (NUMA, pages géantes, hotplug, ...)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Conversion du disque",
|
||||
"intro": "Chaque disque est converti avec :",
|
||||
"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> est le format VMware lisible en une seule passe, pris en charge par ESXi 6.7+, VMware Workstation, VirtualBox et Proxmox lui-même. C’est le sous-format VMDK le plus largement compatible, adapté à la portabilité. En contrepartie, il ne permet pas l’accès aléatoire et ne peut donc pas être monté directement sans conversion."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "Manifeste SHA1",
|
||||
"intro": "Chaque paquet contient un fichier <code>.mf</code> avec les empreintes SHA1 du descripteur OVF et de chaque 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": "Facultatif dans la spécification OVF et ignoré par de nombreux outils, le manifeste permet toutefois de vérifier que le paquet a été transféré intact. Vérifiez-le manuellement avec <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importation du résultat",
|
||||
"intro": "Le paquet exporté peut être importé dans :",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — utilisez l’outil correspondant ",
|
||||
"linkLabel": "Importer une VM depuis OVA / OVF",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template ; sélectionnez le fichier .ova ou .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open ; sélectionnez le fichier .ova ou .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance ; sélectionnez le fichier .ova ou .ovf."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Dépannage",
|
||||
"noSpaceTitle": "qemu-img convert échoue en cours de conversion avec \"No space left on device\"",
|
||||
"noSpaceBody": "Le répertoire de destination n’a plus d’espace libre. Le gestionnaire EXIT nettoie automatiquement le répertoire temporaire. Choisissez une destination avec davantage d’espace libre (voir l’estimation ci-dessus) et relancez l’export.",
|
||||
"unsupportedHwTitle": "L’export se termine, mais VMware refuse l’import : \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Certaines versions d’ESXi rejettent les descripteurs OVF qui déclarent une famille matérielle inconnue. Ouvrez le .ovf dans un éditeur de texte, ou extrayez d’abord le .ova, repérez <code><vssd:VirtualSystemType></code> et choisissez une valeur acceptée par ESXi, par exemple <code>vmx-13</code> pour ESXi 6.5+. Pour contourner rapidement le problème, essayez VirtualBox, qui est plus permissif.",
|
||||
"nicTitle": "La VM importée utilise une carte réseau ou un contrôleur SCSI différent",
|
||||
"nicBody": "L’OVF conserve le nombre de cartes réseau, pas leur modèle d’origine. Vérifiez les paramètres réseau de la VM importée dans l’hyperviseur de destination. L’export déclare un contrôleur SCSI lsilogic pour la compatibilité VMware. Lors d’un retour dans Proxmox avec ProxMenux, la VM est créée avec un contrôleur LSI et des cartes e1000 ; passez ensuite à <code>VirtIO SCSI</code> et VirtIO si le système invité possède les pilotes adaptés.",
|
||||
"runningTitle": "La VM était en cours d’exécution et j’ai refusé de l’arrêter : export annulé",
|
||||
"runningBody": "Le script ne peut pas produire une image cohérente pendant l’écriture sur les disques. Acceptez la demande d’arrêt la prochaine fois, ou arrêtez d’abord la VM manuellement (<code>qm shutdown $VMID</code>), puis relancez l’export.",
|
||||
"slowTitle": "La conversion du disque est lente",
|
||||
"slowBody": "<code>qemu-img convert</code> utilise un seul thread et lit la source à pleine vitesse. Pour un disque de 100 Go sur un disque dur mécanique, comptez 15 à 30 minutes. Un transfert de NVMe à NVMe est 5 à 10 fois plus rapide. Les disques d’une VM sont convertis l’un après l’autre ; la durée augmente linéairement avec la taille virtuelle totale."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Voir aussi",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importer une VM depuis OVA / OVF",
|
||||
"tail": " — l’outil complémentaire pour réimporter la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Présentation des utilitaires",
|
||||
"tail": " — retour à la présentation de la section."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importer une VM depuis OVA / OVF | Documentation ProxMenux",
|
||||
"description": "Importez une VM VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux dans Proxmox VE. Extrait automatiquement OVA, analyse les métadonnées OVF, crée la VM et importe chaque disque au format natif du stockage (qcow2 / raw).",
|
||||
"ogTitle": "Importer une VM depuis OVA / OVF | Documentation ProxMenux",
|
||||
"ogDescription": "Importez dans Proxmox des VM exportées depuis VMware, VirtualBox ou ProxMenux. Les disques sont convertis automatiquement au format natif du stockage."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importer une VM depuis OVA / OVF",
|
||||
"description": "Importe un paquet OVA / OVF dans Proxmox VE : extrait les archives OVA, lit le descripteur OVF pour obtenir le nombre de vCPU, la mémoire, le nombre de cartes réseau et les références des disques, puis crée la VM et importe chaque disque avec qm importdisk vers le stockage choisi. Compatible avec les exports VMware (ESXi / Workstation / Fusion), VirtualBox et ProxMenux.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ce que ça fait",
|
||||
"body": "Crée une VM complète dans Proxmox depuis un paquet portable. Après l’import, elle est prête à démarrer. Quelques vérifications et réglages du modèle réseau, du firmware et du type de système sont recommandés pour les performances et la compatibilité."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Sélection de fichiers",
|
||||
"intro": "Au lancement, le script propose deux répertoires prédéfinis ou un chemin manuel :",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> — le répertoire de sauvegarde par défaut Proxmox vzdump.",
|
||||
"<code>/var/lib/vz/template/iso</code> — utile si vous y avez transféré l’OVA par sftp.",
|
||||
"Chemin manuel — pour les fichiers OVA / OVF n'importe où ailleurs sur l'hôte."
|
||||
],
|
||||
"outro": "Il énumère ensuite chaque fichier <code>.ova</code> et <code>.ovf</code> dans le répertoire choisi.",
|
||||
"imageAlt": "Dialogue de sélection du fichier de VM à importer"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Comment fonctionne l'importation",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Entrée OVA / OVF",
|
||||
"detail": ".ova → tar xf vers\n /tmp/.proxmenux-import-*\n.ovf → utiliser sur place",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Analyse et dialogues",
|
||||
"detail": "AWK lit OVF\n(nom, vCPU, RAM, NIC,\nles disques). Choix de l'utilisateur\nVMID / stockage / pont",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → format du stockage)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "Analyse OVF",
|
||||
"intro": "Un analyseur <strong>gawk</strong> lit le descripteur OVF et retire les métadonnées VM. L'analyseur utilise la forme d'argument 3 de <code>match()</code> spécifique à gawk (mawk, le <code>awk</code> par défaut sur Debian / Proxmox, ne le supporte pas). Lors de la première importation, le script auto-installe gawk via la paire canonique <code>ensure_repositories</code> + <code>install_single_package</code> s'il manque; les importations subséquentes commencent instantanément. Champs extraits:",
|
||||
"headerField": "Champ",
|
||||
"headerSource": "Source en OVF",
|
||||
"headerDefault": "Par défaut si manquant",
|
||||
"rows": [
|
||||
{
|
||||
"field": "Nom VM",
|
||||
"source": "<Name> (première correspondance)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "Nombre de vCPU",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Mémoire (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "Nombre de NIC",
|
||||
"source": "Nombre de ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Type de système d’exploitation",
|
||||
"source": "/Linux/ ou /Windows/ dans la description",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Références des disques",
|
||||
"source": "attributs href se terminant par .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "aucun (importation avortée)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Ambiguité de l'unité de mémoire",
|
||||
"body": "L’analyseur convertit les unités mémoire reconnues en <strong>MiB</strong>, notamment les octets, KiB, MiB, GiB et les libellés textuels pris en charge. Les unités absentes ou inconnues sont <em>traitées comme des MiB</em>. Après l’import, comparez <code>qm config $VMID | grep memory</code> à la RAM documentée de la VM source et corrigez-la si nécessaire avec <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Étapes des dialogues d’importation",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — propose le prochain identifiant disponible (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>Nom de la VM</strong> — reprend le nom lu dans l’OVF ; vous pouvez le modifier.",
|
||||
"<strong>Stockage de destination</strong> — liste des stockages acceptant le contenu <code>images</code>, obtenue par <code>pvesm status -content images</code>.",
|
||||
"<strong>Pont réseau</strong> — liste des ponts issue de <code>ip link show type bridge</code>. Un pont unique est choisi automatiquement ; la valeur par défaut est <code>vmbr0</code>.",
|
||||
"<strong>Confirmation</strong> — boîte de dialogue sommaire avec VMID, nom, vCPU, mémoire, NIC, stockage, pont et la liste des disques à importer. Annuler ici = rien ne change."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "Création de VM",
|
||||
"intro": "Après confirmation, le script s'exécute :",
|
||||
"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": "Le contrôleur SCSI par défaut est <code>lsi</code> (LSI Logic) pour la compatibilité VMDK. NICs par défaut à <code>e1000</code> (compatibilité universelle) sur le pont choisi."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "Boucle d'importation de disque",
|
||||
"intro": "Pour chaque référence disque dans l'OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importe le disque dans un format accepté par le stockage de destination et crée une entrée <code>unusedN:</code> dans la configuration de la VM.",
|
||||
"Le script recherche avec grep la référence <code>unusedN</code> qui vient d’être créée dans la configuration.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — fixe le disque comme <code>scsi0</code>, <code>scsi1</code>, ...",
|
||||
"<code>qm set $VMID --delete unusedN</code> — efface le marqueur maintenant inutilisé."
|
||||
],
|
||||
"outro": "Le démarrage est réglé sur le premier disque SCSI : <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Réglages recommandés après l’import",
|
||||
"intro": "L’import utilise des réglages largement compatibles pour favoriser un premier démarrage réussi. Après l’avoir confirmé, choisissez des réglages plus performants depuis l’interface Proxmox ou la CLI :",
|
||||
"headerSetting": "Réglage",
|
||||
"headerDefault": "Par défaut après l'importation",
|
||||
"headerRecommended": "Recommandé si le système invité le prend en charge",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "Modèle NIC",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (bien plus rapide, nécessite un pilote dans le système invité)"
|
||||
},
|
||||
{
|
||||
"setting": "Contrôleur SCSI",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (Linux récent ou Windows avec pilotes VirtIO)"
|
||||
},
|
||||
{
|
||||
"setting": "Micrologiciel (BIOS / UEFI)",
|
||||
"default": "Par défaut Proxmox (BIOS)",
|
||||
"recommended": "Reprendre le firmware de la VM source ; un mauvais choix empêche le démarrage"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU agent invité",
|
||||
"default": "Désactivé",
|
||||
"recommendedRich": "Activer et installer <code>qemu-guest-agent</code> dans le système invité (meilleures sauvegardes, remontée des IP)"
|
||||
},
|
||||
{
|
||||
"setting": "Type de système d’exploitation",
|
||||
"default": "l26 / win10 / other (heuristique)",
|
||||
"recommended": "Vérifier par rapport à l'OS client réel"
|
||||
},
|
||||
{
|
||||
"setting": "Affichage",
|
||||
"default": "Par défaut",
|
||||
"recommended": "VirtIO-GPU ou SPICE (meilleure performance de la console)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Erreur de firmware = pas de démarrage",
|
||||
"body": "Si la source VM était UEFI mais Proxmox la crée comme BIOS (ou vice-versa), l'invité ne trouvera pas de disque amorçable. Vérifiez les paramètres OVF ou VM d'origine pour <em>FirmwareType / firmware</em> et définissez la même chose dans Proxmox: <code>qm set $VMID --bios ovmf</code> pour UEFI; par défaut, <code>seabios</code> pour BIOS."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Ce qui n'est pas importé",
|
||||
"items": [
|
||||
"<strong>Ponts réseau précis</strong> — seul le nombre de cartes est conservé. Toutes utilisent le pont choisi lors de l’import.",
|
||||
"<strong>Modèle NIC</strong> — par défaut pour e1000.",
|
||||
"<strong>Type de firmware BIOS / UEFI</strong> — utilise la valeur Proxmox par défaut, BIOS.",
|
||||
"<strong>Configuration du passthrough PCI</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"Lecteurs <strong>cloud-init</strong>.",
|
||||
"<strong>Snapshots</strong> — seul l'état actuel.",
|
||||
"<strong>USB / série / dispositifs parallèles</strong> déclaré dans l'OVF.",
|
||||
"<strong>VM tags / notes / options de démarrage</strong>."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Dépannage",
|
||||
"orphanTitle": "La VM est créée, mais l’import des disques échoue et laisse une VM partielle",
|
||||
"orphanIntro": "Si l’import échoue, le script propose de supprimer la VM partielle et ses disques importés. Si vous avez refusé ou si la suppression automatique a échoué, examinez la VM et supprimez-la manuellement avec :",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Ensuite, corrigez la cause sous-jacente (probablement l'espace disque sur le stockage cible) et réimportez.",
|
||||
"memTitle": "La VM importée dispose de 8 Mo de RAM, ou de 8 To",
|
||||
"memIntro": "L’analyseur convertit les AllocationUnits reconnues en MiB. Les unités absentes ou inconnues sont traitées comme des MiB. Examinez l’OVF et comparez la mémoire importée à celle de la VM source. Corrigez-la si nécessaire :",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "La VM importée ne démarre pas : \"No bootable device\"",
|
||||
"bootIntro": "Cause fréquente : un mauvais choix BIOS / UEFI. La VM source utilisait UEFI, mais Proxmox l’a créée avec BIOS. Choisissez le firmware correspondant :",
|
||||
"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": "Autre cause fréquente : l’ordre de démarrage vise scsi0 alors que le système est sur scsi1. Modifiez l’ordre dans l’onglet Options de la VM.",
|
||||
"bsodTitle": "Une VM Windows exportée de VMware affiche un écran bleu au premier démarrage",
|
||||
"bsodBody": "Windows est sensible au changement de contrôleur de disque. Installez les pilotes VirtIO <em>avant</em> l’export depuis VMware, ou conservez le contrôleur <code>lsi</code> par défaut. Passez à VirtIO SCSI seulement après un démarrage réussi et l’installation des pilotes VirtIO dans Windows.",
|
||||
"zeroTitle": "L’analyseur OVF indique 0 disque",
|
||||
"zeroBody": "L’OVF peut utiliser des références de disque inconnues de l’analyseur. Ouvrez-le et cherchez pour chaque disque une entrée <code><File ovf:href=\"...vmdk\" ...></code>. Si le disque est réellement VMDK, mais porte une extension inhabituelle comme <code>.dat</code>, renommez-le en <code>.vmdk</code> et actualisez la référence OVF. Le renommage ne convertit pas le format.",
|
||||
"awkTitle": "awk: erreur de syntaxe à ou près , — l'analyseur échoue sur chaque OVA / OVF",
|
||||
"awkIntro": "L’analyseur OVF utilise la syntaxe gawk de <code>match()</code> à trois arguments, absente de mawk, le <code>awk</code> par défaut sur Debian / Proxmox. Les versions récentes installent gawk automatiquement au premier usage via <code>ensure_repositories</code> + <code>install_single_package</code>. Avec une ancienne copie, installez-le manuellement :",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Relancez ensuite l’import.",
|
||||
"netTitle": "Réseau ne fonctionnant pas après le premier démarrage",
|
||||
"netBody": "Le système invité peut ne pas avoir les pilotes du modèle réseau e1000, ou le pont choisi peut être incorrect. Dans l’onglet Hardware de la VM, changez Network Device → Model. Vérifiez aussi <code>ip a</code> dans le système invité : l’interface peut avoir changé de nom, par exemple ens18 au lieu d’eth0, alors que sa configuration utilise encore l’ancien."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Fichiers concernés",
|
||||
"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": "Voir aussi",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Exportation de VM vers OVA / OVF",
|
||||
"tail": " — l’outil complémentaire pour exporter la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Présentation des utilitaires",
|
||||
"tail": " — retour à la présentation de la section."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Utilitaires Proxmox — UUP Dump, migration de PVE 8 vers 9, export/import OVA | ProxMenux",
|
||||
"description": "Utilitaires du quotidien pour Proxmox VE : créer des ISO Windows avec UUP Dump, installer une sélection d’outils CLI, mettre à jour le système Proxmox en toute sécurité, passer de PVE 8 à PVE 9, exporter des VM en OVA / OVF et importer des VM OVA / OVF depuis VMware ou VirtualBox.",
|
||||
"ogTitle": "Utilitaires Proxmox — UUP Dump, migration de PVE 8 vers 9, export/import OVA",
|
||||
"ogDescription": "Créez des ISO Windows, installez des outils CLI, lancez une mise à jour sûre, passez de PVE 8 à PVE 9 et exportez ou importez des VM OVA / OVF.",
|
||||
"twitterTitle": "Utilitaires Proxmox | ProxMenux",
|
||||
"twitterDescription": "Création d’ISO, outils CLI, mise à jour Proxmox, migration PVE 8→9 et portabilité des VM OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Utilitaires et outils",
|
||||
"description": "Six outils complètent les tâches quotidiennes dans Proxmox VE : création d’ISO, maintenance du système et portabilité des VM. Chaque option est indépendante : choisissez celle qui vous convient ; rien n’est installé sans votre demande.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"intro": {
|
||||
"title": "À quoi sert ce menu",
|
||||
"body": "Trois groupes d’outils indépendants mais souvent utiles : <strong>créer une ISO Windows</strong> avec UUP Dump, <strong>entretenir l’hôte Proxmox</strong> (outils CLI, mises à jour et changement de version majeure) et <strong>importer et exporter des VM</strong> dans Proxmox au format standard OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Ouverture du menu",
|
||||
"body": "Dans le menu principal de ProxMenux, sélectionnez <strong>Utilities</strong>. Voici ce qui s’affiche :",
|
||||
"imageAlt": "Menu des utilitaires avec UUP Dump, outils système, mise à jour, changement de version, export et import"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Trois groupes d'outils",
|
||||
"intro": "Les six outils se divisent en trois groupes indépendants. Cliquez sur une carte ci-dessous pour passer à la section correspondante.",
|
||||
"iso": {
|
||||
"title": "Création ISO",
|
||||
"body": "Créez des ISO Windows officielles avec UUP Dump directement sur l’hôte Proxmox.",
|
||||
"bullets": [
|
||||
"Lien partagé UUP Dump → ISO amorçable",
|
||||
"Dépendances installées automatiquement",
|
||||
"Le résultat est enregistré dans le répertoire des modèles ISO de Proxmox"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Entretien du système",
|
||||
"body": "Maintenez l’hôte en bon état : outils CLI, mises à jour régulières et passage à la version majeure suivante le moment venu.",
|
||||
"bullets": [
|
||||
"Installateur d’utilitaires système (25 outils CLI)",
|
||||
"Mise à jour du système Proxmox (apt + dist-upgrade)",
|
||||
"PVE 8 → PVE 9 mise à jour majeure"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "Portabilité des VM",
|
||||
"body": "Importez et exportez des VM dans Proxmox au format standard OVA / OVF.",
|
||||
"bullets": [
|
||||
"Exporter une VM Proxmox → OVA / OVF",
|
||||
"Importer OVA / OVF → VM Proxmox",
|
||||
"Compatible avec VMware et VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "La mise à jour PVE 8 → 9 est destructrice et non réversible",
|
||||
"body": "Un changement de version majeure remplace sur place la base Debian (Bookworm → Trixie) et les composants Proxmox. Aucun retour arrière n’est prévu : vous devez disposer de <strong>sauvegardes vérifiées</strong> de chaque VM et CT et d’un <strong>accès console / IPMI / iKVM</strong> avant de commencer. C’est pourquoi l’outil refuse de s’exécuter depuis le terminal web Proxmox."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Création ISO",
|
||||
"body": "Créez une nouvelle ISO d’installation de Windows à jour directement sur l’hôte Proxmox. Le script automatise tout le processus UUP Dump : installation des dépendances (aria2c, cabextract, wimlib-imagex, …), téléchargement parallèle des fichiers de mise à jour avec aria2 et conversion en une ISO amorçable. Elle est enregistrée dans <code>/var/lib/vz/template/iso</code>, prête à être associée à une VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Créateur d’ISO UUP Dump",
|
||||
"description": "Créez une ISO d’installation de Windows à jour depuis un lien partagé UUP Dump. Les dépendances, le téléchargement et la conversion sont entièrement automatisés ; l’ISO obtenue est enregistrée dans /var/lib/vz/template/iso, prête pour la création d’une VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Entretien du système",
|
||||
"body": "Trois outils couvrent les tâches quotidiennes et occasionnelles sur l’hôte. L’<strong>Installateur d’utilitaires système</strong> installe les outils CLI utiles après une nouvelle installation. La <strong>Mise à jour du système Proxmox</strong> assure l’entretien hebdomadaire ou mensuel. Le <strong>Passage de PVE 8 à PVE 9</strong> est le grand changement de chaque cycle de version majeure, avec des contrôles de sécurité supplémentaires car il n’est pas réversible.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Installateur des utilitaires système",
|
||||
"description": "Sélecteur de 25 outils CLI choisis (htop, btop, iperf3, tmux, ...) avec sélection personnalisée ou groupes prédéfinis (base, développement, compression, multiplexeurs, analyse, réseau). Utilise le processus standard avec dépôt et commande de vérification.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Mise à jour du système Proxmox",
|
||||
"description": "Vérification des dépôts + apt update + apt dist-upgrade, avec confirmation avant le redémarrage. Détecte la version majeure de PVE (8 ou 9), conserve les dépôts configurés et demande confirmation avant de faire passer un hôte sans abonnement au dépôt no-subscription, puis exécute autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Mettre à niveau le PVE 8 vers le PVE 9",
|
||||
"description": "Changement de version majeure (Debian Bookworm → Trixie + PVE 8 → 9). Vérifications préalables, migration des dépôts, mode automatisé ou interactif, validation après la migration et redémarrage. Refuse de s’exécuter depuis le terminal web.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "Portabilité VM (OVA / OVF)",
|
||||
"body": "OVA et OVF sont des formats de paquetage entre hyperviseurs définis par la norme DMTF et pris en charge par VMware, VirtualBox et Proxmox. Les deux outils permettent un aller-retour : une VM exportée de Proxmox peut y être réimportée, et inversement. Utilisez-les pour migrer des charges depuis ESXi, créer une sauvegarde portable d’une VM ou partager une VM préparée avec un utilisateur de VirtualBox.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Exportation de VM vers OVA / OVF",
|
||||
"description": "Convertissez une VM Proxmox en archive OVA portable ou en répertoire OVF. Schéma DMTF standard, manifeste SHA1 et disques VMDK au format streamOptimized. Importable dans VMware (ESXi / Workstation / Fusion), VirtualBox et à nouveau dans Proxmox.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "Importer une VM depuis OVA / OVF",
|
||||
"description": "Importez dans Proxmox une exportation VMware / VirtualBox / ProxMenux. L’outil extrait automatiquement l’archive OVA, analyse les métadonnées OVF, crée la VM et importe chaque disque au format natif du stockage.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Une note sur l'espace disque pour l'exportation / l'importation",
|
||||
"body": "Les deux outils convertissent les formats de disque : l’export utilise <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code> et l’import utilise <code>qm importdisk</code> pour revenir au format natif du stockage (qcow2 / raw). Pour l’export, prévoyez <strong>~120 % de la taille virtuelle du disque</strong> pour OVF et <strong>~220 %</strong> pour OVA. L’archive OVA utilise un TAR non compressé et est créée alors que les fichiers VMDK temporaires sont encore présents. Vérifiez que le répertoire de destination dispose de suffisamment d’espace avant de commencer."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Organisation du menu",
|
||||
"body": "Chaque outil possède un script dédié dans <code>scripts/utilities/</code>. La mise à jour du système Proxmox appelle un seul script sécurisé dans <code>scripts/global/</code>, update-pve-safe.sh, qui détecte la version majeure et gère PVE 8 et PVE 9. Le passage PVE 8 → 9 propose deux actions supplémentaires dans son propre menu : une <em>Vérification avant migration</em> indépendante (exécute <code>pve8to9 --full</code>) et un <em>Guide de migration manuelle</em> en lecture seule (procédure en 17 étapes), pour contrôler le processus ou l’effectuer manuellement."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Mise à jour du système Proxmox | Documentation ProxMenux",
|
||||
"description": "Met à jour les paquets dans la version majeure actuelle de Proxmox avec apt-get update et apt full-upgrade -y. Vérifie l’espace disque et les dépôts configurés, tente de récupérer les clés GPG, vérifie et répare les anciens en-têtes PV LVM, reconstruit les pilotes DKMS gérés si nécessaire, exécute autoremove/autoclean et propose un redémarrage lorsque nécessaire.",
|
||||
"ogTitle": "Mise à jour du système Proxmox | Documentation ProxMenux",
|
||||
"ogDescription": "apt full-upgrade avec vérification des dépôts, autoremove/autoclean et proposition de redémarrage si nécessaire."
|
||||
},
|
||||
"header": {
|
||||
"title": "Mise à jour du système Proxmox",
|
||||
"description": "Appelle un seul script d’exécution (<code>update-pve-safe.sh</code>) qui détecte la version majeure de Proxmox. Les dépôts configurés sont lus via l’API Proxmox et conservés ; un hôte sans abonnement utilisant uniquement Enterprise doit confirmer avant le passage à no-subscription. Le script met à jour les paquets et reconstruit les pilotes DKMS gérés par ProxMenux pour un noyau en attente de démarrage. Le script principal propose un redémarrage si le marqueur système existe ou si le dernier noyau installé diffère du noyau en cours. Le processus est aussi accessible depuis <em>Update Now</em> dans l’en-tête de ProxMenux Monitor lorsque des mises à jour sont détectées.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Ce que ça fait",
|
||||
"body": "Met l’hôte au dernier niveau de correctifs de sa version majeure actuelle. Il ne change <strong>pas</strong> de version majeure ; pour PVE 8 → PVE 9, consultez <link>Passer de PVE 8 à PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "La recommandation officielle de Proxmox",
|
||||
"intro": "Pour mettre à jour un hôte dans la même version majeure, Proxmox recommande d’exécuter :",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Cette ligne est la commande officielle pour les versions actuelles de Proxmox. Il faut également vérifier que les dépôts sont propres, que les bons sont activés et que l’hôte reste dans un état cohérent après la mise à jour."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Ce que ProxMenux ajoute : vérifié dans le script",
|
||||
"intro": "Utilise <strong>la même opération apt full-upgrade</strong>, avec vérification des dépôts, reconstruction DKMS et nettoyage après mise à jour. Les étapes suivantes correspondent à <code>scripts/utilities/proxmox_update.sh</code> et à son unique script d’exécution <code>scripts/global/update-pve-safe.sh</code> :",
|
||||
"items": [
|
||||
"<strong>Détecte la version majeure de PVE</strong> dans le script d’exécution (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Un seul script gère PVE 8 et PVE 9 ; les dépôts configurés sont conservés, sauf si un hôte sans abonnement accepte le changement proposé.",
|
||||
"<strong>Conserve les dépôts configurés.</strong> <code>ensure_repositories</code> lit les dépôts via l’API Proxmox et vérifie l’abonnement. Avec un abonnement actif ou un dépôt no-subscription ou test déjà utilisé, rien ne change. Un hôte sans abonnement actif utilisant uniquement Enterprise doit confirmer le passage à no-subscription. Un refus arrête la mise à jour sans modifier les sources.",
|
||||
"<strong>Exécute la mise à jour sans interaction</strong> avec <code>DEBIAN_FRONTEND=noninteractive</code> et <code>--force-confdef --force-confold</code>. Pour les fichiers de configuration dpkg, l’action par défaut est acceptée si elle existe ; sinon, le fichier actuel est conservé.",
|
||||
"<strong>N’impose pas les utilitaires facultatifs.</strong> Le script n’installe pas de force <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ou des paquets similaires. Une installation Proxmox qui a choisi de s’en passer conserve ce choix. Les paquets manquants sont signalés dans les processus d’installation supérieurs, pas lors de la mise à jour.",
|
||||
"<strong>Vérification et réparation des métadonnées LVM.</strong> Détecte les anciens en-têtes PV et exécute vgck --updatemetadata et vgchange -ay sur les groupes de volumes concernés. Cela peut modifier les métadonnées LVM ; il ne s’agit pas d’une simple vérification avec avertissement.",
|
||||
"<strong>Nettoye ensuite:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>Reconstruction DKMS avant la proposition de redémarrage.</strong> Le script d’exécution appelle <code>pmx_rebuild_dkms_after_kernel</code> lorsqu’un noyau installé plus récent est en attente. Le script principal vérifie <code>/var/run/reboot-required</code> et utilise <code>dpkg-query</code> pour comparer le noyau indiqué par <code>uname -r</code> avec le dernier paquet <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> installé. Le marqueur peut manquer sur les hôtes sans <code>needrestart</code> ; la comparaison des noyaux fonctionne tout de même."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "En une phrase",
|
||||
"body": "Met à jour les paquets de l’hôte, conserve les dépôts sauf changement accepté, vérifie les métadonnées LVM, reconstruit les pilotes DKMS gérés, nettoie avec autoremove/autoclean et propose un redémarrage si nécessaire."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Boîte de dialogue de confirmation",
|
||||
"intro": "La sélection de l’option ouvre un résumé des actions prévues et demande une confirmation explicite :",
|
||||
"imageAlt": "Boîte de dialogue de confirmation de mise à jour Proxmox avec vérification des dépôts, mise à jour des paquets et nettoyage"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Comment le script principal délègue l’exécution",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Un seul script d’exécution",
|
||||
"detail": "update-pve-safe.sh\n(détecte PVE 8 / 9\nen interne)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Après la mise à jour",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nRedémarrage proposé si nécessaire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Ce que fait le script d’exécution",
|
||||
"intro": "Un seul script (<code>scripts/global/update-pve-safe.sh</code>) gère PVE 8 (<code>bookworm</code>) et PVE 9 (<code>trixie</code>). Il détecte la version majeure et vérifie les dépôts existants sans réécrire les sources Debian de base. Les étapes sont les suivantes :",
|
||||
"items": [
|
||||
"<strong>Vérifications préalables.</strong> Vérifie qu’il reste au moins ~1 Go dans <code>/var/cache/apt/archives</code>. Sinon, le processus s’arrête immédiatement avec un message clair afin d’éviter un échec au milieu d’une opération apt.",
|
||||
"<strong>Vérification des dépôts.</strong> <code>ensure_repositories</code> lit les dépôts et l’état de l’abonnement. Avec un dépôt Proxmox utilisable, rien ne change. Sur un hôte sans abonnement actif utilisant uniquement Enterprise, le passage à no-subscription doit être confirmé ; un refus arrête la mise à jour.",
|
||||
"<strong>apt update avec récupération automatique GPG.</strong> En cas de <code>NO_PUBKEY</code> pour un dépôt, y compris tiers, le script importe la clé manquante et réessaie automatiquement avant de signaler un échec.",
|
||||
"<strong>Mises à jour en attente et de sécurité.</strong> Indique combien de paquets vont changer et combien proviennent de la suite de sécurité, afin d’afficher des chiffres concrets dans le dialogue de confirmation.",
|
||||
"<strong>Boîte de dialogue de confirmation.</strong> Après l’actualisation des listes de paquets, le script demande un oui explicite avant de mettre à jour les paquets.",
|
||||
"<strong>apt full-upgrade.</strong> Utilise <code>DEBIAN_FRONTEND=noninteractive</code> et <code>--force-confdef --force-confold</code>. Dpkg suit son action par défaut pour les fichiers de configuration lorsqu’elle existe ; sinon, il conserve le fichier actuel.",
|
||||
"<strong>Vérification LVM.</strong> <code>lvm_repair_check</code> actualise les métadonnées des groupes de volumes lorsque des disques transmis directement à des VM invitées (DSM, TrueNAS ou appliances de stockage) reviennent avec d’anciens en-têtes PV.",
|
||||
"<strong>Reconstruction DKMS des pilotes gérés par ProxMenux.</strong> Lorsqu’un nouveau noyau est en attente de démarrage, <code>pmx_rebuild_dkms_after_kernel</code> lit les pilotes installés par ProxMenux dans <code>components_status.json</code> (actuellement <code>nvidia_driver</code> → module <code>nvidia</code> et <code>coral_driver</code> → module <code>gasket</code>), installe les en-têtes correspondants (<code>proxmox-headers-<newkver></code> si disponible, sinon <code>pve-headers-<newkver></code>) et exécute <code>dkms autoinstall -k <newkver></code>. Si <code>dkms status</code> ne montre pas les modules construits pour le nouveau noyau, les installateurs sont relancés avec <code>--auto-reinstall</code>. Les échecs sont consignés sans interrompre la mise à jour, qui atteint tout de même la proposition de redémarrage.",
|
||||
"<strong>Nettoyage final.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> avant de rendre la main au script principal."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Nettoyage et redémarrage après mise à jour",
|
||||
"intro": "Après la fin du script d’exécution, le script principal exécute :",
|
||||
"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": "Le script principal vérifie aussi si un redémarrage est nécessaire. Chacun de ces signaux déclenche la proposition :",
|
||||
"items": [
|
||||
"<code>/var/run/reboot-required</code> existe : un paquet ou un outil système a indiqué qu’un redémarrage est nécessaire.",
|
||||
"Le dernier paquet de noyau Proxmox installé diffère du noyau en cours, selon <code>dpkg-query</code> et uname -r."
|
||||
],
|
||||
"outro": "Si l’une des conditions est remplie, une boîte de dialogue whiptail demande <em>« Certains changements nécessitent un redémarrage. Voulez-vous redémarrer maintenant ? »</em>. Refusez pour continuer avec le noyau en cours jusqu’au redémarrage manuel, par exemple pendant une fenêtre de maintenance prévue."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Ce que vous voyez à la fin",
|
||||
"intro": "À la fin du script d’exécution, le terminal affiche le résultat du nettoyage et, si nécessaire, la proposition de redémarrage :",
|
||||
"imageAlt": "Résumé final de la mise à jour Proxmox avec résultat du nettoyage et proposition de redémarrage"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Reportez le redémarrage seulement pour une raison précise",
|
||||
"body": "Installer un nouveau paquet <code>proxmox-kernel-*</code> ne remplace pas le noyau en cours avant le redémarrage. Le nouveau noyau et ses modules correspondants deviennent actifs au démarrage suivant. Prévoyez une fenêtre de maintenance adaptée et examinez auparavant les avertissements de compilation DKMS."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Traitement du dépôt Enterprise par le script",
|
||||
"intro": "Proxmox active par défaut le dépôt Enterprise. Sans abonnement actif, ce dépôt renvoie 401 lors de <code>apt-get update</code>. Le script ne modifie les dépôts que dans ce cas et après confirmation, via l’API Proxmox utilisée par <em>Node → Updates → Repositories</em>. Voici les différents cas :",
|
||||
"items": [
|
||||
"Avec un <strong>abonnement actif</strong>, les dépôts sont conservés et Enterprise fournit les mises à jour.",
|
||||
"Si le <strong>dépôt no-subscription ou test est déjà activé</strong>, les dépôts sont conservés, quelles que soient les autres sources configurées.",
|
||||
"Avec <strong>aucun abonnement actif et uniquement le dépôt Enterprise</strong>, un dialogue propose le changement. Accepter désactive Enterprise, active no-subscription et actualise les listes de paquets. Le changement est consigné dans la vue <em>Changes</em> d’Audit & Report. Refuser arrête la mise à jour sans modifier les sources.",
|
||||
"Les <strong>sources Ceph Enterprise</strong> présentes sont désactivées lors du même changement, sans choisir un autre canal Ceph. Sur un hôte utilisant Ceph, son canal se configure séparément.",
|
||||
"Si <strong>aucun terminal ne permet de demander confirmation</strong>, aucune source n’est modifiée et la mise à jour s’arrête avec un message renvoyant à <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Les sources Debian et tous les autres fichiers de dépôts ne sont jamais modifiés par ce processus. Une entrée mêlant Enterprise à d’autres composants n’est pas changée : la mise à jour s’arrête et demande de séparer cette entrée depuis la vue des dépôts Proxmox."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Précautions pour les clusters",
|
||||
"calloutTitle": "Sur les clusters : mettre à jour un noeud à la fois",
|
||||
"calloutBody": "Dans un cluster Proxmox, exécutez cette option sur <strong>un nœud à la fois</strong> et attendez la fin du redémarrage avant de passer au suivant. Migrez d’abord les systèmes invités hors du nœud pour éviter une interruption de service dans le cluster. Des versions mineures différentes, comme 8.4.1 et 8.4.5, peuvent cohabiter pendant quelques heures ; des noyaux en cours différents peuvent entraîner un comportement inattendu pour les systèmes invités gérés par HA."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Ce qu'il ne fait pas",
|
||||
"items": [
|
||||
"<strong>Changement de version majeure.</strong> Le passage 8 → 9 est une opération distincte ; voir <link>Passer de PVE 8 à PVE 9</link>.",
|
||||
"<strong>Sauvegarde.</strong> Aucune capture d’état ni retour arrière. Les opérations apt ne sont pas transactionnelles. Conservez vos sauvegardes habituelles (PBS, vzdump, instantanés ZFS).",
|
||||
"<strong>Mises à jour des conteneurs / VM.</strong> Seul l’hôte est mis à jour ; les systèmes invités restent inchangés.",
|
||||
"<strong>Écriture dédiée de firmware.</strong> Cet outil ne sert pas à flasher le BIOS ou le firmware des appareils. Les paquets de firmware ou de microcode CPU déjà installés peuvent néanmoins être mis à jour par apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Dépannage",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update échoue avec 401 Unauthorized",
|
||||
"body": "Le dépôt Enterprise est activé sans abonnement actif. Avant <code>apt-get update</code>, le script propose le passage à no-subscription. Si vous avez refusé, relancez la mise à jour et acceptez, ou désactivez Enterprise dans <em>Node → Updates → Repositories</em> et activez no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade reste bloqué sur \"Configuring grub-pc\"",
|
||||
"body": "Si une question interactive GRUB est visible, elle demande les appareils où installer le chargeur de démarrage. L’option <code>--force-confold</code> concerne les fichiers de configuration, pas ce choix d’appareils. Sélectionnez les disques de démarrage appropriés avec <kbd>Tab</kbd> + <kbd>Space</kbd>, puis OK. Vous pouvez configurer ce choix à l’avance avec <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Le noyau a été mis à jour, mais les nouveaux modules d’un pilote externe manquent",
|
||||
"body": "Pour les pilotes gérés (<code>nvidia_driver</code> et <code>coral_driver</code>), la fonction exécute <code>dkms autoinstall -k <newkver></code> et peut relancer leurs installateurs avec <code>--auto-reinstall</code>. Vérifiez le résultat avec <code>dkms status</code>. La commande autoinstall peut aussi reconstruire d’autres modules DKMS enregistrés ; la relance des installateurs se limite aux entrées gérées de <code>components_status.json</code>. Examinez les modules tiers encore manquants et reconstruisez-les si nécessaire avec <code>dkms autoinstall</code>."
|
||||
},
|
||||
{
|
||||
"title": "L'invite de redémarrage n'est pas apparue mais je suis sûr que le noyau a changé",
|
||||
"body": "Les signaux sont alternatifs : <code>/var/run/reboot-required</code> ou une différence entre le noyau en cours et le dernier noyau Proxmox installé. Le script principal ne recherche pas les entrées linux-image dans le journal apt. Vérifiez la version en cours avec <code>uname -r</code> et les paquets de noyau installés avec <code>dpkg-query</code>. Prévoyez le redémarrage nécessaire ou exécutez <code>shutdown -r now</code> au moment voulu."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Fichiers concernés",
|
||||
"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": "Voir aussi",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Mettre à niveau le PVE 8 vers le PVE 9",
|
||||
"tail": "— pour la mise à niveau de la version majeure (outil différent, modèle de sécurité différent)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installateur des utilitaires système",
|
||||
"tail": " — pour installer des outils CLI utiles pendant les mises à jour (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Présentation des utilitaires",
|
||||
"tail": " — retour à la présentation de la section."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installateur d’utilitaires système | Documentation ProxMenux",
|
||||
"description": "Installateur d’outils CLI pour Proxmox VE, avec 25 paquets dans la liste de référence (htop, btop, iperf3, tmux, ...). Sélection personnalisée, installation complète et groupes prédéfinis (base, développement, compression, multiplexeurs, analyse, réseau). Les groupes peuvent inclure d’autres paquets. Utilise ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Installateur d’utilitaires système | Documentation ProxMenux",
|
||||
"ogDescription": "Installez une sélection d’outils CLI sur Proxmox VE en un clic ou par sélection personnalisée."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installateur des utilitaires système",
|
||||
"description": "Sélecteur des 25 utilitaires CLI de la liste de référence PROXMENUX_UTILS. Propose une sélection personnalisée, une installation complète, six groupes prédéfinis et une vérification des installations. Les groupes peuvent inclure des outils hors de la liste. Utilise les fonctions communes ensure_repositories() + install_single_package() pour une gestion cohérente des dépôts et des messages par paquet.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"info": {
|
||||
"title": "Ce que ça fait",
|
||||
"body": "Installe des outils CLI depuis une liste de 25 paquets. Chaque installation suit le même processus : <code>ensure_repositories</code> vérifie que l’hôte dispose d’un dépôt Proxmox utilisable pour sa version majeure de PVE, puis <code>install_single_package</code> installe le paquet et vérifie que sa commande est dans PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Ouverture de l'installateur",
|
||||
"intro": "Dans le menu Utilities, choisissez <strong>System Utilities Installer</strong>. Le menu principal propose neuf options :",
|
||||
"imageAlt": "Menu d’installation des utilitaires système avec sélection personnalisée, ALL, groupes prédéfinis et vérification"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Les 9 actions du menu",
|
||||
"headerOption": "Option",
|
||||
"headerBehaviour": "Comportement",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Sélection personnalisée",
|
||||
"behaviourRich": "Liste de sélection des 25 paquets. Utilisez SPACE pour cocher et ENTER pour confirmer ; seuls les paquets sélectionnés sont installés."
|
||||
},
|
||||
{
|
||||
"option": "2. Installer TOUS les utilitaires",
|
||||
"behaviourRich": "Installe en une fois tous les paquets de <code>PROXMENUX_UTILS</code>. À utiliser après une nouvelle installation Proxmox."
|
||||
},
|
||||
{
|
||||
"option": "3. Niveau de base",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Développement",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Compression",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Multiplexeurs terminaux",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analyse",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Réseau",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Vérifier les installations",
|
||||
"behaviourRich": "Parcourt chaque entrée de <code>PROXMENUX_UTILS</code>, vérifie la présence de la commande dans PATH et affiche un résumé Disponible / Manquant."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "Les 25 paquets",
|
||||
"intro": "Définis dans le fichier commun <code>scripts/global/utils-install-functions.sh</code> sous le nom <code>PROXMENUX_UTILS</code> (format : <code>package:verify_command:description</code>). Les autres scripts ProxMenux, notamment les lanceurs réseau iftop / iptraf-ng / iperf3, réutilisent ces entrées pour garder les paquets et leurs commandes de vérification synchronisés.",
|
||||
"headerPackage": "Paquet",
|
||||
"headerVerify": "Commande de vérification",
|
||||
"headerDescription": "Description",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Accélérateur de téléchargement"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Téléchargeur multisource"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Outil moderne de suivi des ressources"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Extraire les fichiers CAB"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Modifier le registre Windows / mots de passe"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Convertir les fichiers texte DOS / Unix"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "Créer des images ISO"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Coloriseur de journal générique"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Affichage interactif des processus"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Utilisation en temps réel du réseau"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Outils Intel GPU"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Surveillance des entrées/sorties disque"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Essai de bande passante réseau"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Gérer les ensembles IP"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Outil de surveillance du réseau"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Utilitaires de disque VM"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Accès aux MSR du CPU"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Outils de réseautage hérités"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Localiser les fichiers rapidement"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Connexion SSH non interactive"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Multiplexeur terminal"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "Extraire les fichiers ZIP"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Gérer les images WIM"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Créer des fichiers ZIP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Comment fonctionne l’installation d’un paquet",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> détecte PVE 8 ou 9 et lit les dépôts via l’API Proxmox. Avec un dépôt Proxmox utilisable, rien ne change. Un hôte sans abonnement actif utilisant uniquement Enterprise doit confirmer le passage à no-subscription ; <code>apt-get update</code> s’exécute après le changement accepté.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> exécute <code>apt-get install -y \"$pkg\"</code> avec rétroaction (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Après l’installation, la commande est vérifiée avec <code>command -v \"$verify_cmd\"</code>. Trois résultats possibles :",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (succès):</strong> commande disponible, paquet compté comme <em>Succès</em>.",
|
||||
"<strong>1 (échec):</strong> apt a échoué, compté comme <em> Échec</em>.",
|
||||
"<strong>2 (avertissement) :</strong> apt a réussi, mais la commande attendue n’a pas été trouvée dans PATH ; le paquet est compté comme <em>Avec avertissements</em>."
|
||||
],
|
||||
"summary": "À la fin d’une installation personnalisée ou par groupe, un dialogue affiche les nombres de paquets <em>Réussis / Avec avertissements / En échec</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Vérifier les installations",
|
||||
"intro": "L’option 9 est en lecture seule : elle parcourt <code>PROXMENUX_UTILS</code> et exécute <code>command -v</code> pour chaque commande de vérification. Voici la sortie :",
|
||||
"code": "Total: 25\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": "Utile avant d’exécuter des scripts qui dépendent de ces outils. Par exemple, <code>uup_dump_iso_creator.sh</code> nécessite <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>. S’il manque un outil, installez le groupe correspondant ou sélectionnez les paquets manquants."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Dépannage",
|
||||
"reposTitle": "« Impossible de configurer les dépôts. Installation annulée. »",
|
||||
"reposBody": "La vérification des dépôts a échoué : le passage à no-subscription a été refusé, l’état de l’abonnement est illisible ou une entrée nécessite une intervention. Le message précédent indique la cause. Consultez <em>Node → Updates → Repositories</em> et lancez <code>apt-get update</code> dans une console pour voir l’erreur apt.",
|
||||
"warningsTitle": "Un paquet est signalé \"Avec avertissements\" mais la commande fonctionne après que je ferme le menu",
|
||||
"warningsBody": "Après <code>apt-get install</code>, la fonction exécute <code>hash -r</code>, attend brièvement et vérifie la commande attendue avec <code>command -v</code>. Un avertissement signifie que la vérification échoue encore, sans en identifier la cause. Essayez un nouveau shell, puis vérifiez le paquet installé et PATH si la commande manque toujours.",
|
||||
"hangsTitle": "Une installation apt reste bloquée",
|
||||
"hangsBody": "Il est fort probable que l'invite debconf soit bloquée derrière la sortie silencieuse. Le script enveloppe tous les appels apt avec <code>DEBIAN_FRONTEND=noninteractive</code>, ce qui supprime généralement les invites, mais quelques paquets nécessitent toujours une entrée utilisateur. Annuler avec <kbd>Ctrl</kbd>+<kbd>C</kbd>, exécuter <code>apt-get install -y <pkg></code> manuellement à partir d'un shell pour voir l'invite et décider."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Fichiers concernés",
|
||||
"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": "Voir aussi",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Mise à jour du système Proxmox",
|
||||
"tailRich": "— pour le <code>apt dist-upgrade</code> réel sur l'hôte."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Outils de surveillance en direct (réseau)",
|
||||
"tailRich": "— utilise iftop / iptraf-ng / iperf3 de cette même liste."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Présentation des utilitaires",
|
||||
"tailRich": " — retour à la présentation de la section."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Passer de PVE 8 à PVE 9 | Documentation ProxMenux",
|
||||
"description": "Trois méthodes pour passer de Proxmox VE 8 à 9 (Debian Bookworm vers Trixie et PVE 8 vers 9) : automatique, interactive ou manuelle, selon la procédure officielle Proxmox. Contrôle pve8to9, migration des dépôts, dist-upgrade et vérification finale. Refuse de démarrer depuis le terminal web.",
|
||||
"ogTitle": "Passer de PVE 8 à PVE 9 | Documentation ProxMenux",
|
||||
"ogDescription": "Trois méthodes (automatique, interactive, manuelle) pour passer de Proxmox VE 8 à 9."
|
||||
},
|
||||
"header": {
|
||||
"title": "Mettre à niveau le PVE 8 vers le PVE 9",
|
||||
"description": "Effectue le passage de Proxmox VE 8 à 9 selon la procédure officielle : Debian Bookworm vers Trixie et PVE 8 vers 9. Trois méthodes sont disponibles, ainsi qu’un contrôle préalable indépendant. Le terminal web est refusé, car une déconnexion pendant l’opération peut laisser l’hôte inutilisable.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"dangerCallout": {
|
||||
"title": "Un changement de version majeure est irréversible",
|
||||
"intro": "Cette opération remplace sur place la base Debian (Bookworm → Trixie) et les composants Proxmox. Il n’existe <strong>aucune procédure de retour en arrière</strong>. Avant de commencer :",
|
||||
"items": [
|
||||
"<strong>Sauvegardes vérifiées</strong> de chaque VM et CT (PBS, vzdump, instantanés ZFS — vérifiez aussi leur restauration).",
|
||||
"<strong>Accès console / IPMI / iKVM</strong> à l’hôte en cas de coupure SSH pendant la mise à niveau.",
|
||||
"L'hôte déjà mis à jour sur PVE 8.4.x (le script l'applique).",
|
||||
"Ceph (le cas échéant) sur la version 19.x Squid.",
|
||||
"Au moins <strong>5 Go libres</strong> sur le système de fichiers racine."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
"heading": "Le menu mode",
|
||||
"intro": "L’option ouvre un menu à quatre entrées : Automatique, Interactif, Contrôle préalable et Guide manuel. Trois choix <em>effectuent</em> la mise à niveau ou expliquent comment procéder ; le contrôle indépendant <em>vérifie</em> les prérequis et peut proposer des réparations.",
|
||||
"imageAlt": "Menu de passage de PVE 8 à 9 : Automatique, Interactif, Contrôle préalable et Guide manuel"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Trois façons de mettre à niveau",
|
||||
"intro": "Les modes Automatique et Interactif suivent le même déroulement, avec contrôles préalables et vérification finale. Ils diffèrent dans les réponses aux questions de dpkg pendant <code>dist-upgrade</code>. Le guide manuel affiche les commandes et les contrôles ; vous devez exécuter chaque étape.",
|
||||
"auto": {
|
||||
"title": "Automatique / Sans surveillance",
|
||||
"summary": "Définit <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. Pour les fichiers de configuration modifiés, dpkg utilise son action par défaut si elle existe ; sinon, il <strong>conserve le fichier actuel</strong> (<code>--force-confold</code>).",
|
||||
"items": [
|
||||
"Le plus rapide — aucune question dpkg pendant la mise à niveau",
|
||||
"Adapté aux installations standard sans fichiers de configuration personnalisés",
|
||||
"Risque : une configuration personnalisée est conservée sans question et peut masquer les nouvelles valeurs par défaut"
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"title": "Interactif",
|
||||
"summary": "Même déroulement, mais vous répondez à chaque question de dpkg sur les conflits de configuration. Plus lent, avec une visibilité maximale.",
|
||||
"items": [
|
||||
"Vous voyez chaque conflit de config et décidez",
|
||||
"Meilleure quand vous avez personnalisé <code>/etc/lvm</code>, <code>/etc/ssh</code>, etc.",
|
||||
"Consulter le tableau des réponses recommandées dans la procédure manuelle ci-dessous"
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Guide de mise à jour manuelle",
|
||||
"summary": "Affiche la procédure en 17 étapes conforme au wiki officiel Proxmox, sans l’exécuter. Lancez vous-même les commandes dans un autre shell.",
|
||||
"items": [
|
||||
"Contrôle maximal — vous tapez chaque commande",
|
||||
"Mieux quand vous voulez apprendre la procédure ou vous ne faites confiance à rien",
|
||||
"Le script affiche les étapes; rien n'est exécuté automatiquement"
|
||||
]
|
||||
}
|
||||
},
|
||||
"precheckCallout": {
|
||||
"title": "Plus une vérification préalable séparée",
|
||||
"body": "L’option 3 — <strong>Exécuter le contrôle PVE 8 vers 9</strong> — lance l’outil officiel <code>pve8to9 --full</code>, propose des réparations guidées pour les problèmes courants, puis <strong>s’arrête</strong>. Utilisez-la avant la mise à niveau ou après des réparations manuelles. Les modes Automatique et Interactif la lancent aussi ; le guide manuel vous indique de l’exécuter."
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Pourquoi le terminal web est bloqué",
|
||||
"body": "Les trois modes détectent <code>termproxy</code> / <code>vncshell</code> dans la chaîne des processus parents et refusent de démarrer. Le terminal web dépend de <code>pveproxy</code>, un service mis à jour pendant l’opération. Au redémarrage de <code>pveproxy</code>, la session se ferme, ainsi que le script lancé dedans. L’hôte peut rester partiellement mis à niveau.",
|
||||
"warningTitle": "Utilisez SSH ou une console physique / IPMI / iKVM",
|
||||
"warningBody": "SSH est le choix habituel. Lancez-le dans <code>tmux</code> ou <code>screen</code> pour résister aux brèves coupures réseau. Si le script détecte un simple shell SSH, il affiche d’abord un rappel concernant tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Mode automatique / sans surveillance",
|
||||
"intro": "Les questions sur les paquets et les fichiers de configuration utilisent les valeurs par défaut du tableau ci-dessous, et un 401 du dépôt Enterprise bascule vers no-subscription sans demander. La confirmation de la mise à niveau, le résumé de la mise à jour PVE 8, les réparations du contrôle préalable et la demande de redémarrage restent affichés.",
|
||||
"behaviourHeading": "Comportement propre au mode automatique",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Réglage",
|
||||
"effectHeader": "Effet",
|
||||
"rows": [
|
||||
{
|
||||
"settingRich": "<code>ASSUME_YES=1</code>",
|
||||
"effectRich": "Option interne — le script répond oui à ses propres questions, comme le passage à no-subscription après un 401"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
|
||||
"effectRich": "apt / dpkg s’exécutent sans ouvrir de question debconf"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confdef</code>",
|
||||
"effectRich": "Pour les fichiers de configuration intacts: installez la nouvelle version du responsable"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confold</code>",
|
||||
"effectRich": "Pour les fichiers modifiés : action par défaut de dpkg si elle existe ; sinon, <strong>conservation de votre version</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"flowHeading": "Déroulement du mode automatique",
|
||||
"flowIntro": "Six phases successives. La phase 2 met à jour les paquets PVE 8 et la phase 3 écrit la configuration des dépôts PVE 9. Un échec arrête le déroulement sans annuler ces modifications ; si la mise à jour PVE 8 échoue ou est annulée, les dépôts restent inchangés. La phase 5 lance <code>dist-upgrade</code> vers PVE 9.",
|
||||
"flowDiagram": "1. CONTRÔLES\nBloque termproxy / vncshell ; confirme la mise à niveau ; refuse PVE 9.\n\n2. PRÉPARER PVE 8\nscripts/global/update-pve8.sh\nMet à jour les paquets PVE 8 ; arrêt si la mise à jour échoue ou est annulée.\npve8to9 --full (peut proposer des réparations).\nVérifie espace et connectivité ; Ceph 19.x Squid sur les nœuds hyperconvergés.\n\n3. MIGRER LES DÉPÔTS\nBookworm → Trixie ; écrit les fichiers deb822 .sources.\nCommente les anciens fichiers .list ; apt-get update.\n\n4. VALIDER LE CANDIDAT PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nArrêt si le candidat n’est pas 9.x ou si proxmox-ve serait supprimé.\n\n5. METTRE À NIVEAU\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSans abonnement : désactive pve-enterprise.sources.\nJournal : /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. VÉRIFIER ET REDÉMARRER\nEFI : apt install grub-efi-amd64\npve8to9 --full ; examiner le résultat et la demande de redémarrage.",
|
||||
"preflightHeading": "Contrôles avant la mise à niveau",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Vérifier",
|
||||
"whyHeader": "Pourquoi ça compte ?",
|
||||
"rows": [
|
||||
{
|
||||
"checkRich": "<strong>Blocage du terminal web</strong>",
|
||||
"whyRich": "Empêche la mise à niveau de fermer le shell qui l’exécute"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Déjà sur 9.x</strong>",
|
||||
"whyRich": "Avorte si l'hôte exécute déjà PVE 9 (rien à faire)"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Dernière version de PVE 8.4.x</strong>",
|
||||
"whyRich": "Met d’abord PVE 8 à jour avec son script dédié ; les anciennes versions 8.x ont des prérequis différents"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>pve8to9 --full</strong>",
|
||||
"whyRich": "Contrôle des prérequis fourni par Proxmox ; les erreurs FAIL bloquent la mise à niveau jusqu’à leur correction"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Espace disque</strong>",
|
||||
"whyRich": "≥ 1024 Mo libres dans <code>/var/cache/apt/archives</code> pour les fichiers .deb téléchargés"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Connectivité</strong>",
|
||||
"whyRich": "Ping vers <code>download.proxmox.com</code> — en cas d’échec, l’opération ne démarre pas"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ceph 19.x Squid</strong>",
|
||||
"whyRich": "Si Ceph est installé, il doit déjà être en 19.x. PVE 9 ne fonctionne pas avec Ceph 17/18. Les options <code>--ignore-ceph-check</code> et <code>--warn-ceph-check</code> contournent le contrôle ; utilisez-les seulement en connaissance de cause."
|
||||
}
|
||||
]
|
||||
},
|
||||
"distUpgradeHeading": "La commande dist-upgrade (mode automatique)",
|
||||
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
|
||||
"distUpgradeOutro": "La sortie apparaît en temps réel sur stdout et est aussi enregistrée dans <code>/var/log/pve8-a-pve9-<timestamp>.log</code>. Tout reste visible ; seules les questions sont supprimées.",
|
||||
"postHeading": "Tâches après mise à niveau (mode automatique)",
|
||||
"postItems": [
|
||||
"<strong>Hôtes EFI :</strong> installe <code>grub-efi-amd64</code>, conformément au problème connu décrit par Proxmox. La mise à niveau ne l’installe pas automatiquement et il peut être nécessaire au prochain démarrage.",
|
||||
"<strong>Dépôt Enterprise sans abonnement.</strong> pve-manager 9 ajoute <code>pve-enterprise.sources</code> pendant la mise à niveau ; en mode no-subscription, le script le règle sur <code>Enabled: false</code>.",
|
||||
"<strong>Relance <code>pve8to9 --full</code>.</strong> Signale les problèmes restants. Des erreurs FAIL affichent le même menu de réparation que le contrôle préalable.",
|
||||
"<strong>Demande de redémarrage.</strong> Il est recommandé de redémarrer pour charger le nouveau noyau et les services. Ne refusez que pour une raison précise : garder l’ancien noyau après un changement de version majeure présente un risque."
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"heading": "Mode interactif",
|
||||
"intro": "Même déroulement que le <autolink>mode automatique</autolink> : mêmes contrôles, migration des dépôts et vérification finale. La différence concerne <code>dist-upgrade</code> : <strong>vous répondez vous-même à chaque conflit de configuration signalé par dpkg</strong>. ProxMenux lance <code>apt-get dist-upgrade</code> sans les options <code>--force-conf*</code>.",
|
||||
"distUpgradeHeading": "La commande dist-upgrade (mode interactif)",
|
||||
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
|
||||
"whenHeading": "Quand interactif est le bon choix",
|
||||
"whenItems": [
|
||||
"Vous avez personnalisé <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> ou tout autre fichier de configuration qui est touché par la mise à jour.",
|
||||
"Vous souhaitez voir les paquets responsables des conflits et décider pour chaque fichier.",
|
||||
"Vous mettez à niveau un hôte de production où tout changement caché est inacceptable."
|
||||
],
|
||||
"promptCalloutTitle": "Que répondre à chaque fois",
|
||||
"promptCalloutBody": "Les mêmes recommandations que pour la procédure manuelle s’appliquent : voir <dpkglink>Réponses recommandées aux questions de dpkg</dpkglink> ci-dessous. Saisissez <strong>D</strong> pour examiner les différences, ou <strong>Z</strong> pour ouvrir un shell."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procédure de mise à niveau manuelle",
|
||||
"intro": "Voici ce qu’affiche l’option <strong>Guide de mise à niveau manuelle</strong> : le <wikilink>wiki officiel Proxmox de passage de 8 à 9</wikilink>, organisé en quatre phases. Le script <em>affiche</em> les commandes ; vous les exécutez dans un autre shell root. Chaque étape reste visible.",
|
||||
"rootCalloutTitle": "Toutes les commandes ont besoin de root",
|
||||
"rootCalloutBody": "Utilisez un shell root pour ces commandes, y compris les redirections et les documents here-document. Avec <code>sudo</code>, assurez-vous que la commande entière bénéficie des privilèges root.",
|
||||
"phase1Heading": "Phase 1 — Préparation",
|
||||
"phase1Intro": "Mettez l’hôte à jour vers la dernière PVE 8.4.x, vérifiez la version et Ceph si utilisé, lancez le contrôle Proxmox, puis un multiplexeur de terminal pour résister aux déconnexions.",
|
||||
"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": "Phase 2 — Migration des dépôts",
|
||||
"phase2Intro": "Remplacez Bookworm par Trixie dans tous les dépôts Debian et Proxmox, puis convertissez les sources Proxmox au format deb822. <strong>Choisissez l’étape 7 OU 8</strong> selon votre abonnement Enterprise. Ignorez l’étape 9 sans 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": "Phase 3 — Le dist-upgrade",
|
||||
"phase3Intro": "La mise à niveau elle-même. L’étape 12, facultative mais recommandée, réduit les messages d’audit. L’étape 13 est longue : répondez aux questions de dpkg avec le tableau ci-dessous. L’étape 13.1 concerne uniquement EFI et suit les problèmes connus officiels.",
|
||||
"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": "Réponses recommandées pour les invites dpkg",
|
||||
"dpkgIntro": "Réponses préconisées par Proxmox : <strong>Y</strong> installe le nouveau fichier du responsable du paquet et remplace le vôtre ; <strong>N</strong> conserve votre fichier. En cas de doute, examinez d’abord les différences :",
|
||||
"dpkgTable": {
|
||||
"fileHeader": "Fichier / invite",
|
||||
"answerHeader": "Réponse recommandée",
|
||||
"whyHeader": "Pourquoi",
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "/etc/issue",
|
||||
"answerRich": "<strong>N</strong> (conserver le fichier actuel)",
|
||||
"whyRich": "Bannière que vous voyez habituellement",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/lvm/lvm.conf",
|
||||
"answerRich": "<strong>Y</strong> (version du responsable du paquet)",
|
||||
"whyRich": "PVE 9 a besoin des nouvelles valeurs LVM par défaut",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/ssh/sshd_config",
|
||||
"answerRich": "<strong>Y</strong> pour les seuls changements par défaut ; examinez les fichiers personnalisés",
|
||||
"whyRich": "Vérifiez les réglages SSH locaux et préservez l’accès avant de remplacer le fichier. Les changements par défaut incluent des options renommées et des commentaires.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/default/grub",
|
||||
"answerRich": "<strong>N</strong> si personnalisé",
|
||||
"whyRich": "Contient les paramètres de démarrage, notamment IOMMU et le passthrough PCI",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/chrony/chrony.conf",
|
||||
"answerRich": "<strong>Y</strong> si non modifié ; préservez d’abord vos réglages locaux",
|
||||
"whyRich": "Trixie actualise les réglages de synchronisation horaire. Déplacez les réglages locaux dans conf.d / sources.d de chrony avant d’accepter le nouveau fichier.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "Redémarrages de services pendant la mise à niveau",
|
||||
"answerRich": "<strong>Oui</strong> (par défaut)",
|
||||
"whyRich": "Relance la plupart des services sans redémarrer l’hôte",
|
||||
"fileFont": false
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>apt-listchanges</code>",
|
||||
"answerRich": "Appuyez sur <kbd>q</kbd>",
|
||||
"whyRich": "Quitte uniquement le pager ; les informations affichées résument le journal des modifications",
|
||||
"fileFont": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"inspectCalloutTitle": "Inspection d'un conflit dpkg spécifique",
|
||||
"inspectCalloutBody": "À une question de dpkg sur un fichier de configuration, saisissez <strong>D</strong> pour comparer les versions ou <strong>Z</strong> pour ouvrir un shell et examiner le problème. Cela permet de décider plutôt que de deviner.",
|
||||
"phase4Heading": "Phase 4 — après la mise à niveau",
|
||||
"phase4Intro": "Vérifiez la réussite de la mise à niveau, redémarrez sur le noyau PVE 9 et confirmez la version. Vous pouvez ensuite convertir les anciens fichiers <code>.list</code> restants au format 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 & Ceph",
|
||||
"clusterCalloutTitle": "Cluster: mise à niveau des nœuds un à la fois",
|
||||
"clusterCalloutBody": "Détecté par <code>pvecm status</code>. <strong>Ne mettez pas</strong> plusieurs nœuds à niveau simultanément. Déplacez les invités, mettez le nœud à niveau, redémarrez et vérifiez son appartenance au cluster avant de continuer. Pendant l’opération, la migration à chaud d’une ancienne version de PVE vers une plus récente fonctionne ; le sens inverse n’est généralement pas pris en charge. Les groupes HA deviennent automatiquement des règles HA lorsque tous les nœuds utilisent PVE 9.",
|
||||
"cephCalloutTitle": "Ceph : mettre Ceph à niveau D’ABORD, puis Proxmox",
|
||||
"cephCalloutBody": "Ceph doit déjà utiliser 19.x Squid avant la mise à niveau Proxmox. Suivez l’ordre officiel Quincy 17 → Reef 18 → Squid 19, avec mise à jour des paquets et redémarrages échelonnés des démons Ceph dans l’ordre documenté. Vérifiez <code>ceph --version</code> avant chaque nœud Proxmox. Procédure complète : <cephlink>wiki de passage de Ceph Reef à Squid</cephlink>."
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Dépannage",
|
||||
"items": [
|
||||
{
|
||||
"title": "Le script s’arrête : \"This script cannot be executed from the Proxmox web terminal\"",
|
||||
"bodyRich": "Utilisez une connexion SSH ou une console / IPMI / iKVM, puis relancez le script. Lancez d’abord <code>tmux new -s pveupgrade</code> pour résister aux courtes coupures réseau."
|
||||
},
|
||||
{
|
||||
"title": "pve8to9 signale FAIL et l’option 1 de réparation produit \"command not found\"",
|
||||
"bodyRich": "Si l’erreur mentionne <code>configure_repositories</code>, la copie du script est ancienne : la réparation actuelle utilise cleanup_duplicate_repos et ensure_repositories. Actualisez-la ou examinez les commandes manuelles avec l’option 2. <code>apt-get update</code> actualise les listes de paquets sans résoudre tous les contrôles bloquants."
|
||||
},
|
||||
{
|
||||
"title": "La simulation apt signale \"proxmox-ve will be REMOVED\"",
|
||||
"bodyRich": "Les nouveaux dépôts sont inaccessibles ou le nom de version n’a pas changé. Vérifiez <code>cat /etc/apt/sources.list.d/proxmox.sources</code> : la ligne <code>Suites:</code> doit contenir <code>trixie</code>, et non <code>bookworm</code>. <code>apt-cache policy proxmox-ve</code> doit proposer une version 9.x du nouveau dépôt."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade échoue en cours d’exécution",
|
||||
"bodyRich": "Exécutez <code>apt-get -f install</code> pour résoudre les dépendances cassées, puis réexécutez la mise à jour. Si cela échoue, vérifiez le journal à <code>/var/log/pve8-a-pve9-<timestamp>.log</code> — les dernières lignes indiquent habituellement le paquet offensif. Ne redémarrez pas avant que <code>dpkg -l | grep ^iU</code> ne retourne vide (pas de paquets semi-installés)."
|
||||
},
|
||||
{
|
||||
"title": "L'hôte EFI ne démarre pas après le redémarrage",
|
||||
"bodyRich": "L’installation de <code>grub-efi-amd64</code> après la mise à niveau traite ce problème. Si elle a été omise ou a échoué, démarrez sur l’ISO Proxmox en mode secours, montez la racine, utilisez chroot et lancez <code>apt-get install grub-efi-amd64 && update-grub</code>."
|
||||
},
|
||||
{
|
||||
"title": "GUI ne se charge pas après la mise à niveau",
|
||||
"bodyRich": "Exécutez <code>systemctl status pveproxy</code> et <code>systemctl restart pveproxy</code>. Si le problème persiste, cherchez l’erreur dans <code>journalctl -u pveproxy -b</code>."
|
||||
},
|
||||
{
|
||||
"title": "Le réseau ne fonctionne pas après le redémarrage",
|
||||
"bodyRich": "Vérifiez que <code>/etc/network/interfaces</code> référence des périphériques existants et que <code>ifupdown2</code> est installé : <code>apt install ifupdown2</code>. Si les noms ont changé, voir <netlink>Noms d’interfaces persistants</netlink>."
|
||||
},
|
||||
{
|
||||
"title": "Split-brain du cluster après la mise à niveau d’un nœud",
|
||||
"bodyRich": "Les clusters mixtes PVE 8 / PVE 9 sont pris en charge pendant la mise à niveau. La migration à chaud d’une ancienne version vers une plus récente fonctionne ; le sens inverse n’est généralement pas pris en charge. Si un nœud apparaît hors ligne, vérifiez <code>corosync</code> et la configuration QDevice / réseau. Exécutez <code>pvecm status</code> sur chaque nœud pour confirmer le quorum."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Fichiers concernés",
|
||||
"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": "Références officielles",
|
||||
"intro": "La procédure manuelle du script suit ces sources officielles. En cas de doute pendant une mise à niveau, suivez le wiki officiel : ProxMenux facilite l’exécution, Proxmox fait référence.",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
|
||||
"title": "Mise à niveau de 8 à 9",
|
||||
"desc": "La page wiki Proxmox principale pour la mise à jour 8 → 9. Source de vérité pour chaque commande dans la procédure manuelle ci-dessus."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
|
||||
"title": "Mise à niveau vers Ceph Squid (19.x)",
|
||||
"desc": "Étape préalable obligatoire pour les nœuds Ceph hyperconvergés. Ceph doit être en 19.x Squid avant PVE 9."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Roadmap",
|
||||
"title": "Feuille de route Proxmox VE",
|
||||
"desc": "Notes de version PVE 9 et changements depuis 8.x : à lire avant la mise à niveau."
|
||||
},
|
||||
{
|
||||
"href": "https://www.debian.org/releases/trixie/releasenotes",
|
||||
"title": "Notes de publication de Debian Trixie",
|
||||
"desc": "PVE 9 repose sur Debian Trixie. Consultez les notes Debian pour les changements du système d’exploitation qui concernent aussi votre hôte."
|
||||
},
|
||||
{
|
||||
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
|
||||
"title": "Forum d'installation Proxmox VE",
|
||||
"desc": "En cas de problème pendant la mise à niveau, cherchez d’abord dans ce forum : le même cas a peut-être déjà été rencontré."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
|
||||
"title": "Sauvegarde et restauration",
|
||||
"desc": "Une mise à jour en version majeure n'est pas réversible. Vérifiez votre discipline de sauvegarde avant de commencer."
|
||||
}
|
||||
]
|
||||
},
|
||||
"video": {
|
||||
"heading": "Visite vidéo",
|
||||
"intro": "Vous préférez regarder la mise à jour de bout en bout avant de le faire vous-même ? Ce parcours démontre le flux de mise à niveau ProxMenux en temps réel.",
|
||||
"title": "ProxMenux — Mise à niveau de Proxmox VE 8 à 9",
|
||||
"caption": "Vidéo externe YouTube. Lecture en mode de confidentialité avancée ; aucun cookie avant de lancer la lecture."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Voir aussi",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Mise à jour du système Proxmox",
|
||||
"tail": " — pour les mises à jour ordinaires au sein d’une même version majeure (8.4.1 → 8.4.5, etc.)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Présentation des utilitaires",
|
||||
"tail": " — retour à la présentation de la section."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Créateur d’ISO UUP Dump | Documentation ProxMenux",
|
||||
"description": "Créez une ISO d’installation de Windows à jour sur l’hôte Proxmox avec le créateur d’ISO UUP Dump de ProxMenux. Il automatise l’installation des dépendances, le téléchargement et la conversion des fichiers UUP en ISO amorçable pour créer une VM.",
|
||||
"ogTitle": "Créateur d’ISO UUP Dump | Documentation ProxMenux",
|
||||
"ogDescription": "Créez une ISO Windows à jour avec UUP Dump et ProxMenux. Dépendances, téléchargement et conversion entièrement automatisés.",
|
||||
"ogImageAlt": "ProxMenux — Créateur d’ISO UUP Dump"
|
||||
},
|
||||
"header": {
|
||||
"title": "Créateur d’ISO UUP Dump",
|
||||
"description": "Créez une ISO d’installation de Windows à jour sur l’hôte Proxmox avec UUP Dump. ProxMenux gère les dépendances, télécharge les fichiers UUP en parallèle, exécute le convertisseur UUP Dump et déplace l’ISO vers le répertoire de sortie choisi. Par défaut, il s’agit du stockage ISO Proxmox détecté.",
|
||||
"section": "Utilitaires"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ce que ce script fait",
|
||||
"body": "Fournissez l’URL générée par uupdump.net après le choix de la version, de la langue et de l’édition. Le script installe les dépendances manquantes, télécharge le convertisseur UUP Dump et les fichiers UUP, crée une ISO Windows amorçable et la déplace vers le répertoire de sortie choisi. Le stockage ISO Proxmox détecté est proposé par défaut."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "UUP Dump ISO Creator entrée dans ProxMenux",
|
||||
"caption": "UUP Dump ISO Creator entrée dans ProxMenux"
|
||||
},
|
||||
"what": {
|
||||
"heading": "Qu'est-ce que UUP Dump?",
|
||||
"intro": "UUP Dump est un service communautaire qui permet de télécharger les fichiers bruts de la plateforme Unified Update Platform (UUP), utilisés par Windows Update pour distribuer Windows. Ces fichiers peuvent être assemblés en une ISO amorçable standard. Vous pouvez ainsi obtenir :",
|
||||
"items": [
|
||||
"La toute dernière version de Windows (y compris les canaux Insider Preview).",
|
||||
"Une version précise plus ancienne qui n’apparaît plus sur la page de téléchargement Microsoft.",
|
||||
"Des fichiers intacts et non modifiés, provenant directement des serveurs Microsoft.",
|
||||
"La combinaison exacte d'éditions et de langues que vous voulez en une seule ISO."
|
||||
],
|
||||
"learnMore": "En savoir plus sur la page de projet <extlink>UUP Dump</extlink>."
|
||||
},
|
||||
"automates": {
|
||||
"heading": "Ce que le script automatise"
|
||||
},
|
||||
"dependencies": {
|
||||
"heading": "Dépendances",
|
||||
"intro": "La première chose que le script fait est de vérifier les outils nécessaires pour télécharger les charges utiles UUP et assembler l'ISO. Tous ceux qui manquent sont installés avec <code>apt-get</code>:",
|
||||
"headerPackage": "Paquet",
|
||||
"headerRole": "Rôle",
|
||||
"rows": [
|
||||
{
|
||||
"pkg": "curl",
|
||||
"roleRich": "Téléchargements HTTP pour initialiser le convertisseur."
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"roleRich": "Téléchargeur parallèle utilisé pour chaque charge utile UUP."
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"roleRich": "Extrait les paquets Microsoft CAB."
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"roleRich": "Construit <code>install.wim</code> (wimlib-imagex)."
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"roleRich": "Écrit l’ISO amorçable finale (ou <code>mkisofs</code>)."
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Modifie les ruches du registre Windows pendant la création."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Équivalent manuel — si vous avez besoin de les installer vous-même:",
|
||||
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Téléchargement et conversion",
|
||||
"steps": [
|
||||
"Détecte le stockage ISO Proxmox via <code>pvesm status -content iso</code>, ou utilise <code>/var/lib/vz/template/iso</code> en repli.",
|
||||
"Demande un dossier de base pour les fichiers temporaires (<code>/root/uup-temp</code> par défaut).",
|
||||
"Téléchargez le convertisseur UUP Dump de <code>git.uupdump.net</code>.",
|
||||
"Extrait <code>id</code>, <code>pack</code> et <code>edition</code> de l’URL collée.",
|
||||
"Appelle <code>https://uupdump.net/get.php?…&aria2=2</code> pour générer une liste de téléchargement aria2.",
|
||||
"Télécharge tous les fichiers UUP dans <code>UUPs/</code> avec aria2, en parallèle et avec reprise possible.",
|
||||
"Exécute <code>convert.sh wim UUPs 1</code> à partir du convertisseur pour produire l'ISO finale.",
|
||||
"Déplace l’ISO vers le répertoire de sortie choisi et nettoie les fichiers temporaires."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "Options de téléchargement aria2 utilisées",
|
||||
"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> — jusqu'à 16 connexions par serveur.",
|
||||
"<code>-s16</code> — divise chaque fichier en 16 segments.",
|
||||
"<code>-j5</code> — télécharge 5 fichiers en parallèle.",
|
||||
"<code>-c</code> — reprend les téléchargements partiels.",
|
||||
"<code>-R</code> — applique au fichier téléchargé l’horodatage du fichier distant, s’il est disponible."
|
||||
],
|
||||
"runtime": "La durée habituelle est d’environ 10 minutes et dépend surtout du débit Internet et de la charge des serveurs de téléchargement UUP Dump."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Étape 1 · Obtenez une URL UUP Dump",
|
||||
"intro": "Avant d'exécuter le script, vous avez besoin d'une URL UUP Dump qui inclut les paramètres de requête <code>id</code>, <code>pack</code> et <code>edition</code>. Générer sur <extlink>uupdump.net</extlink>:",
|
||||
"stepBadge": "Étape",
|
||||
"items": [
|
||||
{
|
||||
"title": "Choisissez une version Windows",
|
||||
"img": "/iso-creator/step-1-select-version-windows.png",
|
||||
"caption": "UUP Dump page principale — choisissez une version Windows",
|
||||
"body": "Ouvrez la page d'accueil UUP Dump et choisissez la version Windows que vous voulez."
|
||||
},
|
||||
{
|
||||
"title": "Choisissez une version précise",
|
||||
"img": "/iso-creator/step-2-select-version-windows.png",
|
||||
"caption": "Choisissez une version précise",
|
||||
"body": "Choisissez la version : la plus récente, un canal Insider Preview ou une version plus ancienne encore répertoriée."
|
||||
},
|
||||
{
|
||||
"title": "Choisir une langue",
|
||||
"img": "/iso-creator/step-3-select-version-windows.png",
|
||||
"caption": "Choisir une langue",
|
||||
"body": "Choisissez la langue à inclure dans l’ISO."
|
||||
},
|
||||
{
|
||||
"title": "Choisir les éditions",
|
||||
"img": "/iso-creator/step-4-select-version-windows.png",
|
||||
"caption": "Choisissez les éditions à inclure",
|
||||
"body": "Choisissez les éditions à regrouper dans l'ISO (Home, Pro, Enterprise, ...). Vous pouvez en combiner plusieurs."
|
||||
},
|
||||
{
|
||||
"title": "Copier l'URL",
|
||||
"img": "/iso-creator/step-5-select-version-windows.png",
|
||||
"caption": "Copier l'URL de la barre d'adresses",
|
||||
"bodyRich": "Sur la dernière page, copiez l’URL <em>depuis la barre d’adresse du navigateur</em>. Elle doit contenir <code>id=…</code>, <code>pack=…</code> et <code>edition=…</code>. C’est cette chaîne que le script analyse."
|
||||
}
|
||||
]
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Étape 2 · Exécuter le créateur",
|
||||
"intro": "Avec l'URL en main, ouvrez ProxMenux et lancez le créateur :",
|
||||
"stepBadge": "Étape",
|
||||
"items": [
|
||||
{
|
||||
"title": "Démarrer UUP Dump ISO Creator",
|
||||
"img": "/iso-creator/start-uupdump-iso-creator.png",
|
||||
"caption": "Démarrer UUP Dump ISO Creator à partir de ProxMenux",
|
||||
"bodyRich": "Dans ProxMenux, ouvrez <strong>Utilities → UUP Dump ISO Creator</strong>. Le script vérifie les dépendances et le répertoire ISO avant de demander les informations."
|
||||
},
|
||||
{
|
||||
"title": "Coller l'URL UUP Dump",
|
||||
"img": "/iso-creator/add-url-iso-creator.png",
|
||||
"caption": "Coller l'URL que vous avez copiée depuis uupdump.net",
|
||||
"body": "Collez l’URL dans le champ de saisie. Le script vérifie la présence des trois paramètres requis et s’arrête proprement s’il en manque un."
|
||||
},
|
||||
{
|
||||
"title": "Attendez la fin de la création",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Création terminée : l’ISO est prête dans le stockage ISO Proxmox",
|
||||
"bodyRich": "La console affiche la progression aria2 puis la sortie du convertisseur. L’ISO terminée est déplacée vers le répertoire de sortie choisi. Si elle se trouve dans un stockage ISO Proxmox configuré, vous pouvez la sélectionner dans <strong>Créer une VM Windows → Installer avec une ISO personnelle</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Fichiers temporaires",
|
||||
"body": "Le dossier temporaire par défaut est <code>/root/uup-temp</code>, avec les téléchargements dans <code>UUPs/</code> et le convertisseur dans <code>converter/</code>. Un chemin de base personnalisé reçoit un sous-dossier de session distinct. Les branches de création réussie et d’absence d’ISO générée suppriment la session temporaire. Une erreur ou une annulation plus tôt peut laisser des fichiers temporaires."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Esportare una VM in OVA / OVF | Documentazione ProxMenux",
|
||||
"description": "Esporta una VM Proxmox in un archivio OVA portabile o in una directory OVF usando lo schema DMTF standard. Dischi VMDK in formato streamOptimized e manifesto SHA1. Importabile in VMware ESXi / Workstation / Fusion, VirtualBox e nuovamente in Proxmox.",
|
||||
"ogTitle": "Esportare una VM in OVA / OVF | Documentazione ProxMenux",
|
||||
"ogDescription": "Converti una VM Proxmox in un pacchetto OVA / OVF portabile compatibile con VMware e VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Esportare una VM in OVA / OVF",
|
||||
"description": "Converte una VM Proxmox in un pacchetto OVA portabile (un unico archivio TAR) o OVF (descrittore e file VMDK) usando lo schema OVF standard di DMTF. I dischi vengono convertiti con qemu-img in VMDK streamOptimized. Il risultato è importabile in VMware (ESXi / Workstation / Fusion), VirtualBox e nuovamente in Proxmox tramite lo strumento di importazione.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Legge la configurazione di una VM arrestata, converte ogni disco in VMDK streamOptimized, genera un descrittore OVF e un manifesto SHA1 e raggruppa tutto in un unico file <code>.ova</code> o in una directory <code>-ovf</code>. La VM di origine non viene mai modificata."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Selettore di VM",
|
||||
"body": "All’avvio, lo script elenca tutte le VM di <code>qm list</code> con VMID, nome e stato. Scegli quella da esportare:",
|
||||
"imgAlt": "Finestra di selezione della VM da esportare con l’elenco di tutte le VM"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "La VM deve essere arrestata",
|
||||
"intro": "Per ottenere un’immagine disco coerente la VM deve essere arrestata. Se la VM selezionata è in esecuzione, ProxMenux propone di arrestarla:",
|
||||
"items": [
|
||||
"Arresto regolare tramite <code>qm shutdown $VMID --timeout 120</code> (attende 2 minuti l’arresto ACPI del sistema guest).",
|
||||
"Se scade il tempo di attesa, propone un arresto forzato: <code>qm stop $VMID</code> (equivale a togliere l’alimentazione).",
|
||||
"Se rifiuti entrambe le opzioni, l’esportazione viene annullata senza modificare i dati."
|
||||
],
|
||||
"warnTitle": "L’arresto forzato equivale a togliere l’alimentazione",
|
||||
"warnBody": "<code>qm stop</code> equivale a staccare la corrente. Al successivo avvio il sistema guest potrebbe richiedere una riparazione del file system. Preferisci l’arresto regolare quando possibile e riserva quello forzato ai sistemi guest che non rispondono."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Selettore del formato: OVA oppure OVF",
|
||||
"headerFormat": "Formato",
|
||||
"headerOutput": "Output",
|
||||
"headerPros": "Vantaggi",
|
||||
"headerCons": "Svantaggi",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Un unico file autonomo, facile da spostare, trasferire tramite sftp o allegare a un ticket.",
|
||||
"cons": "Richiede ~220% della dimensione virtuale del disco (spazio aggiuntivo per l’archivio TAR durante la creazione)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% della dimensione virtuale del disco. Più facile da esaminare, perché il descrittore è XML testuale. Modificabile prima dell’importazione.",
|
||||
"cons": "Più file, da trasferire tutti insieme."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Directory di destinazione",
|
||||
"body": "Scegli un percorso predefinito (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) oppure inseriscine uno personalizzato. Lo script verifica che la directory sia scrivibile e avvisa se lo spazio libero sembra insufficiente prima di iniziare.",
|
||||
"calloutTitle": "Stima orientativa dello spazio libero",
|
||||
"calloutBody": "Per esportare in OVF una VM con dischi che totalizzano 100 GB virtuali, prevedi ~120 GB liberi; per OVA, ~220 GB. L’utilizzo effettivo può essere inferiore per dischi quasi vuoti. L’archivio OVA viene creato con TAR non compresso mentre esistono ancora i file VMDK temporanei: occorre quindi spazio per entrambi. Se lo spazio termina durante l’esportazione, il gestore di EXIT pulisce la directory temporanea e devi ricominciare."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Cosa finisce nel pacchetto",
|
||||
"intro": "Per un OVA / OVF chiamato <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": "Cosa viene esportato",
|
||||
"items": [
|
||||
"<strong>Dischi:</strong> tutte le voci <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> e <code>ide*</code> nella configurazione della VM, convertite in VMDK streamOptimized.",
|
||||
"<strong>Numero di vCPU</strong> (RASD ResourceType 3) e <strong>memoria</strong> in MiB (ResourceType 4).",
|
||||
"<strong>Numero di schede di rete</strong> (ResourceType 10: solo il numero, senza bridge o modello).",
|
||||
"<strong>Nome della VM</strong> e indicazione del tipo di sistema operativo."
|
||||
],
|
||||
"notTitle": "Che cosa NON è esportato",
|
||||
"notItems": [
|
||||
"Montaggi CD-ROM e ISO, esclusi intenzionalmente.",
|
||||
"Unità cloud-init (escluse intenzionalmente).",
|
||||
"Bridge e modello specifici della scheda di rete (viene conservato solo il numero).",
|
||||
"Scelta BIOS / UEFI, da riconfigurare durante l’importazione.",
|
||||
"Configurazione del passthrough PCI.",
|
||||
"Snapshot: viene acquisito solo lo stato attuale.",
|
||||
"Opzioni di livello VM (NUMA, pagine enormi, hotplug, ...)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Conversione del disco",
|
||||
"intro": "Ogni disco viene convertito con:",
|
||||
"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> è il formato VMware leggibile in un solo passaggio, supportato da ESXi 6.7+, VMware Workstation, VirtualBox e dallo stesso Proxmox. È il sottoformato VMDK più ampiamente compatibile e adatto alla portabilità. Lo svantaggio è che non consente l’accesso casuale e quindi non può essere montato direttamente senza conversione."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "Manifesto SHA1",
|
||||
"intro": "Ogni pacchetto include un file <code>.mf</code> con gli hash SHA1 del descrittore OVF e di ogni 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": "È facoltativo nella specifica OVF e molti programmi lo ignorano, ma serve a verificare che il pacchetto sia stato trasferito integro. Verificalo manualmente con <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importazione del risultato",
|
||||
"intro": "Il pacchetto esportato può essere importato in:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — usa lo strumento corrispondente ",
|
||||
"linkLabel": "Importa VM da OVA / OVF",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; seleziona il file .ova o .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open; seleziona il file .ova o .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance; seleziona il file .ova o .ovf."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noSpaceTitle": "qemu-img convert si interrompe durante la conversione con \"No space left on device\"",
|
||||
"noSpaceBody": "La destinazione ha esaurito lo spazio. Il gestore di EXIT pulisce automaticamente la directory temporanea. Scegli una destinazione con più spazio libero (vedi la stima precedente) e ripeti l’esportazione.",
|
||||
"unsupportedHwTitle": "L’esportazione termina ma VMware rifiuta l’importazione: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Alcune versioni di ESXi rifiutano descrittori OVF che dichiarano una famiglia hardware sconosciuta. Apri il .ovf in un editor di testo, oppure estrai prima il .ova, cerca <code><vssd:VirtualSystemType></code> e imposta un valore accettato da ESXi, ad esempio <code>vmx-13</code> per ESXi 6.5+. Per aggirare rapidamente il problema, prova VirtualBox, che è più permissivo.",
|
||||
"nicTitle": "La VM importata usa una scheda di rete o un controller SCSI diverso",
|
||||
"nicBody": "L’OVF conserva il numero di schede di rete, non il modello originale. Controlla le impostazioni di rete della VM importata nell’hypervisor di destinazione. L’esportazione dichiara un controller SCSI lsilogic per la compatibilità con VMware. Quando reimporti in Proxmox con ProxMenux, la VM viene creata con un controller LSI e schede e1000; passa poi a <code>VirtIO SCSI</code> e VirtIO se il sistema guest dispone dei driver adatti.",
|
||||
"runningTitle": "La VM era in esecuzione e ho rifiutato di arrestarla: esportazione annullata",
|
||||
"runningBody": "Lo script non può produrre un’immagine coerente mentre vengono scritti dati sui dischi. Accetta la richiesta di arresto la prossima volta, oppure arresta prima la VM manualmente (<code>qm shutdown $VMID</code>) e ripeti l’esportazione.",
|
||||
"slowTitle": "La conversione del disco è lenta",
|
||||
"slowBody": "<code>qemu-img convert</code> usa un solo thread e legge l’origine alla massima velocità. Per un disco da 100 GB su un disco rigido meccanico, prevedi 15–30 minuti. Da NVMe a NVMe è 5–10 volte più veloce. I dischi di una VM vengono convertiti in sequenza; il tempo aumenta linearmente con la dimensione virtuale totale."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"tail": " — lo strumento complementare per reimportare la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importare una VM da OVA / OVF | Documentazione ProxMenux",
|
||||
"description": "Importa una VM VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux in Proxmox VE. Estrae automaticamente OVA, analizza i metadati OVF, crea la VM e importa ogni disco nel formato nativo dello storage (qcow2 / raw).",
|
||||
"ogTitle": "Importare una VM da OVA / OVF | Documentazione ProxMenux",
|
||||
"ogDescription": "Importa in Proxmox le VM esportate da VMware, VirtualBox o ProxMenux. I dischi vengono convertiti automaticamente nel formato nativo dello storage."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importa VM da OVA / OVF",
|
||||
"description": "Importa un pacchetto OVA / OVF in Proxmox VE: estrae gli archivi OVA, legge dal descrittore OVF vCPU, memoria, numero di schede di rete e riferimenti ai dischi, poi crea la VM e importa ogni disco con qm importdisk nello storage scelto. Compatibile con le esportazioni VMware (ESXi / Workstation / Fusion), VirtualBox e ProxMenux.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Crea una VM completa in Proxmox da un pacchetto portabile. Dopo l’importazione è pronta per l’avvio; si consigliano alcuni controlli e regolazioni di modello della scheda di rete, firmware e tipo di sistema operativo per prestazioni e compatibilità."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Selettore di file",
|
||||
"intro": "Al lancio, lo script offre due directory preimpostate o un percorso manuale:",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> — la directory di backup Proxmox vzdump predefinita.",
|
||||
"<code>/var/lib/vz/template/iso</code> — utile se vi hai trasferito il file OVA tramite sftp.",
|
||||
"Percorso manuale — per i file OVA / OVF altrove sull'host."
|
||||
],
|
||||
"outro": "Quindi elenca ogni file <code>.ova</code> e <code>.ovf</code> nella directory selezionata.",
|
||||
"imageAlt": "Finestra di selezione del file della VM da importare"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Come funziona l'importazione",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Ingresso OVA / OVF",
|
||||
"detail": ".ova → tar xf in\n /tmp/.proxmenux-import-*\n.ovf → usa il file sul posto",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Analisi e finestre di dialogo",
|
||||
"detail": "AWK legge OVF\n(nome, vCPU, RAM, NIC,\ndischi). Scelta di\nVMID / storage / bridge",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formato dello storage)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "Analisi OVF",
|
||||
"intro": "Un parser <strong>gawk</strong> legge il descrittore OVF ed estrae i metadati della VM. Usa <code>match()</code> con tre argomenti, una funzione specifica di gawk non supportata da mawk, il <code>awk</code> predefinito in Debian / Proxmox. Se manca, alla prima importazione gawk viene installato con <code>ensure_repositories</code> + <code>install_single_package</code>; le importazioni successive non richiedono questo passaggio. Campi estratti:",
|
||||
"headerField": "Campo",
|
||||
"headerSource": "Fonte in OVF",
|
||||
"headerDefault": "Predefinito se manca",
|
||||
"rows": [
|
||||
{
|
||||
"field": "Nome VM",
|
||||
"source": "<Name> (prima corrispondenza)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "Conteggio vCPU",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Memoria (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "Numero di schede di rete",
|
||||
"source": "conteggio di ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Tipo di sistema operativo",
|
||||
"source": "/Linux/ o /Windows/ nella descrizione",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Riferimenti del disco",
|
||||
"source": "attributi href che terminano in .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "Nessuno (importazione annullata)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Ambiguità delle unità di memoria",
|
||||
"body": "Il parser converte le unità di memoria riconosciute in <strong>MiB</strong>, inclusi byte, KiB, MiB, GiB e le etichette testuali supportate. Le unità mancanti o sconosciute sono <em>trattate come MiB</em>. Dopo l’importazione, confronta <code>qm config $VMID | grep memory</code> con la RAM documentata della VM di origine e, se serve, correggila con <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Sequenza delle finestre di importazione",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — propone il prossimo identificativo disponibile (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>Nome della VM</strong> — usa il nome letto nell’OVF; puoi modificarlo.",
|
||||
"<strong>Storage di destinazione</strong> — elenco degli storage con contenuto <code>images</code>, ottenuto da <code>pvesm status -content images</code>.",
|
||||
"<strong>Bridge di rete</strong> — elenco dei bridge da <code>ip link show type bridge</code>. Se ne esiste uno solo, viene scelto automaticamente; il valore predefinito è <code>vmbr0</code>.",
|
||||
"<strong>Conferma</strong> — riepilogo con VMID, nome, vCPU, memoria, schede di rete, storage, bridge e dischi da importare. Annullando qui non viene modificato nulla."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "Creazione VM",
|
||||
"intro": "Dopo la conferma, lo script viene eseguito:",
|
||||
"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": "Il controller SCSI predefinisce <code>lsi</code> (LSI Logic) per la compatibilità VMDK. NIC di default a <code>e1000</code> (compatibilità universale) sul ponte scelto."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "loop di importazione del disco",
|
||||
"intro": "Per ogni riferimento del disco nell'OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importa il disco in un formato supportato dallo storage di destinazione e crea una voce <code>unusedN:</code> nella configurazione della VM.",
|
||||
"Lo script cerca con grep nella configurazione il riferimento <code>unusedN</code> appena creato.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — collega il disco come <code>scsi0</code>, <code>scsi1</code>, ...",
|
||||
"<code>qm set $VMID --delete unusedN</code> — elimina il marcatore inutilizzato ormai ridondante."
|
||||
],
|
||||
"outro": "Boot è impostato sul primo disco SCSI: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Regolazioni consigliate dopo l’importazione",
|
||||
"intro": "L’importazione usa impostazioni ampiamente compatibili per favorire l’avvio al primo tentativo. Dopo aver verificato l’avvio, puoi scegliere impostazioni più efficienti dall’interfaccia Proxmox o dalla CLI:",
|
||||
"headerSetting": "Impostazione",
|
||||
"headerDefault": "Predefinito dopo l'importazione",
|
||||
"headerRecommended": "Consigliato se supportato dal sistema guest",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "Modello NIC",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (molto più veloce, richiede un driver nel sistema guest)"
|
||||
},
|
||||
{
|
||||
"setting": "Controller SCSI",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (Linux recente o Windows con driver VirtIO)"
|
||||
},
|
||||
{
|
||||
"setting": "Firmware (BIOS / UEFI)",
|
||||
"default": "Predefinizione Proxmox (BIOS)",
|
||||
"recommended": "Usa il firmware della VM di origine; una scelta errata impedisce l’avvio"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU agente ospite",
|
||||
"default": "Disattivato",
|
||||
"recommendedRich": "Attiva e installa <code>qemu-guest-agent</code> nel sistema guest (backup migliori e rilevamento degli IP)"
|
||||
},
|
||||
{
|
||||
"setting": "Tipo di sistema operativo",
|
||||
"default": "l26 / win10 / other (euristica)",
|
||||
"recommended": "Verificare contro il sistema operativo ospite effettivo"
|
||||
},
|
||||
{
|
||||
"setting": "Schermo",
|
||||
"default": "Predefinito",
|
||||
"recommended": "VirtIO-GPU o SPICE (migliori prestazioni della console)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Firmware mismatch = nessun boot",
|
||||
"body": "Se la VM di origine usava UEFI ma Proxmox la crea con BIOS, o viceversa, il sistema guest non trova un disco avviabile. Controlla <em>FirmwareType / firmware</em> nell’OVF o nella VM originale e usa la stessa scelta in Proxmox: <code>qm set $VMID --bios ovmf</code> per UEFI; il valore predefinito per BIOS è <code>seabios</code>."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Cosa NON viene importato",
|
||||
"items": [
|
||||
"<strong>Bridge di rete specifici</strong> — viene conservato solo il numero di schede. Tutte usano il bridge scelto durante l’importazione.",
|
||||
"<strong>Modello della scheda di rete</strong> — usa e1000 come valore predefinito.",
|
||||
"<strong>Tipo di firmware BIOS / UEFI</strong> — usa il valore predefinito Proxmox, BIOS.",
|
||||
"<strong>Configurazione del passthrough PCI</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"Unità <strong>cloud-init</strong>.",
|
||||
"<strong>Snapshots</strong> — solo lo stato attuale.",
|
||||
"<strong>USB / dispositivi seriali / paralleli</strong> dichiarati nell'OVF.",
|
||||
"<strong>VM tag / note / start-on-boot</strong> opzioni."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"orphanTitle": "La VM è stata creata ma l’importazione dei dischi è fallita: rimane una VM parziale",
|
||||
"orphanIntro": "Se l’importazione fallisce, lo script propone di eliminare la VM parziale e i dischi importati. Se hai rifiutato o l’eliminazione automatica è fallita, esamina la VM ed eliminala manualmente con:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Correggi poi la causa, probabilmente lo spazio nello storage di destinazione, e ripeti l’importazione.",
|
||||
"memTitle": "La VM importata ha 8 MB di RAM, oppure 8 TB",
|
||||
"memIntro": "Il parser converte le AllocationUnits riconosciute in MiB. Le unità mancanti o sconosciute sono trattate come MiB. Esamina l’OVF e confronta la memoria importata con quella della VM di origine. Correggila se necessario:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "La VM importata non si avvia: \"No bootable device\"",
|
||||
"bootIntro": "Una causa frequente è la mancata corrispondenza BIOS / UEFI. La VM usava UEFI, ma Proxmox l’ha creata con BIOS. Imposta il firmware corrispondente:",
|
||||
"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": "Un’altra causa frequente: l’ordine di avvio indica scsi0, ma il disco del sistema operativo è scsi1. Modifica l’ordine nella scheda Opzioni della VM.",
|
||||
"bsodTitle": "Una VM Windows esportata da VMware mostra una schermata blu al primo avvio",
|
||||
"bsodBody": "Windows è sensibile ai cambiamenti del controller disco. Installa i driver VirtIO <em>prima</em> dell’esportazione da VMware oppure mantieni il controller <code>lsi</code> predefinito. Passa a VirtIO SCSI solo dopo aver avviato il sistema guest e installato i driver VirtIO in Windows.",
|
||||
"zeroTitle": "Il parser OVF rileva 0 dischi",
|
||||
"zeroBody": "L’OVF potrebbe usare riferimenti ai dischi non riconosciuti dal parser. Aprilo e cerca per ogni disco una voce <code><File ovf:href=\"...vmdk\" ...></code>. Se il disco è davvero VMDK, ma ha un’estensione insolita come <code>.dat</code>, rinominalo in <code>.vmdk</code> e aggiorna il riferimento OVF. Rinominare non converte il formato.",
|
||||
"awkTitle": "awk: errore sintassi a o vicino , — parser fallisce su ogni OVA / OVF",
|
||||
"awkIntro": "Il parser OVF usa la sintassi gawk di <code>match()</code> con tre argomenti, non supportata da mawk, il <code>awk</code> predefinito di Debian / Proxmox. Le versioni recenti installano gawk al primo utilizzo tramite <code>ensure_repositories</code> + <code>install_single_package</code>. Se usi una copia precedente, installalo manualmente:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Poi ripeti l’importazione.",
|
||||
"netTitle": "Rete che non funziona dopo il primo avvio",
|
||||
"netBody": "Il sistema guest potrebbe non avere i driver per il modello e1000, oppure il bridge scelto potrebbe essere errato. Nella scheda Hardware della VM, cambia Network Device → Model. Controlla anche <code>ip a</code> nel sistema guest: l’interfaccia potrebbe chiamarsi ens18 anziché eth0, mentre la configurazione di rete usa ancora il vecchio nome."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"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": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Esportazione VM a OVA / OVF",
|
||||
"tail": " — lo strumento complementare per esportare la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Utilità Proxmox — UUP Dump, aggiornamento da PVE 8 a 9, esportazione/importazione OVA | ProxMenux",
|
||||
"description": "Utilità quotidiane per Proxmox VE: creare ISO di Windows con UUP Dump, installare una selezione di strumenti CLI, aggiornare il sistema Proxmox in sicurezza, passare da PVE 8 a PVE 9, esportare VM in OVA / OVF e importare VM OVA / OVF da VMware o VirtualBox.",
|
||||
"ogTitle": "Utilità Proxmox — UUP Dump, aggiornamento da PVE 8 a 9, esportazione/importazione OVA",
|
||||
"ogDescription": "Crea ISO di Windows, installa strumenti CLI, esegui un aggiornamento sicuro, passa da PVE 8 a PVE 9 ed esporta o importa VM OVA / OVF.",
|
||||
"twitterTitle": "Utilità Proxmox | ProxMenux",
|
||||
"twitterDescription": "Creazione di ISO, strumenti CLI, aggiornamento di Proxmox, passaggio PVE 8→9 e portabilità delle VM OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Utilità e strumenti",
|
||||
"description": "Sei strumenti completano le attività quotidiane in Proxmox VE: creazione di ISO, manutenzione del sistema e portabilità delle VM. Ogni opzione è indipendente: scegli quella che ti serve; non viene installato nulla finché non lo richiedi.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Tre gruppi di strumenti indipendenti ma spesso utili: <strong>creare una ISO di Windows</strong> con UUP Dump, <strong>gestire la manutenzione dell’host Proxmox</strong> (utilità CLI, aggiornamenti e passaggio di versione principale) e <strong>importare ed esportare VM</strong> in Proxmox nel formato standard OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, seleziona <strong>Utilities</strong>. Vedrai questa schermata:",
|
||||
"imageAlt": "Menu delle utilità con UUP Dump, utilità di sistema, aggiornamento, passaggio di versione, esportazione e importazione"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tre gruppi di strumenti",
|
||||
"intro": "I sei strumenti sono suddivisi in tre gruppi indipendenti. Fai clic su una scheda qui sotto per passare alla sezione corrispondente.",
|
||||
"iso": {
|
||||
"title": "Creazione ISO",
|
||||
"body": "Crea ISO ufficiali di Windows con UUP Dump direttamente sull’host Proxmox.",
|
||||
"bullets": [
|
||||
"Link condiviso di UUP Dump → ISO avviabile",
|
||||
"Dipendenze installate automaticamente",
|
||||
"Il risultato viene salvato nella directory dei modelli ISO di Proxmox"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Manutenzione del sistema",
|
||||
"body": "Mantieni l’host in buone condizioni con strumenti CLI, aggiornamenti regolari e il passaggio di versione principale quando necessario.",
|
||||
"bullets": [
|
||||
"Installatore di utilità di sistema (25 strumenti CLI)",
|
||||
"Aggiornamento del sistema Proxmox (apt + dist-upgrade)",
|
||||
"Passaggio di versione principale PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "Portabilità VM",
|
||||
"body": "Spostare le VM dentro e fuori Proxmox utilizzando il formato standard OVA / OVF.",
|
||||
"bullets": [
|
||||
"Esportazione Proxmox VM → OVA / OVF",
|
||||
"Importazione OVA / OVF → Proxmox VM",
|
||||
"Compatibile con VMware e VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "L'aggiornamento PVE 8 → 9 è distruttivo e non reversibile",
|
||||
"body": "Un aggiornamento di versione principale sostituisce sul posto la base Debian (Bookworm → Trixie) e i componenti Proxmox. Non è previsto un ripristino della versione precedente: prima di iniziare servono <strong>backup verificati</strong> di ogni VM e CT e <strong>accesso tramite console / IPMI / iKVM</strong>. Per questo lo strumento rifiuta l’esecuzione dal terminale web di Proxmox."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Creazione ISO",
|
||||
"body": "Crea una nuova ISO di installazione di Windows aggiornata direttamente sull’host Proxmox. Lo script automatizza l’intero processo UUP Dump: installazione delle dipendenze (aria2c, cabextract, wimlib-imagex, …), download parallelo dei file di aggiornamento tramite aria2 e conversione in una singola ISO avviabile. La ISO viene salvata in <code>/var/lib/vz/template/iso</code>, pronta da collegare a una VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Creatore di ISO UUP Dump",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata da un link condiviso di UUP Dump. Dipendenze, download e conversione sono completamente automatizzati; la ISO risultante viene salvata in /var/lib/vz/template/iso, pronta per creare una VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Manutenzione del sistema",
|
||||
"body": "Tre strumenti coprono le attività quotidiane e occasionali sull’host. L’<strong>Installatore di utilità di sistema</strong> configura gli strumenti CLI utili dopo una nuova installazione. L’<strong>Aggiornamento del sistema Proxmox</strong> esegue la manutenzione settimanale o mensile. Il <strong>Passaggio da PVE 8 a PVE 9</strong> è il grande cambiamento di ogni ciclo di versione principale, con controlli di sicurezza aggiuntivi perché non è reversibile.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Installatore di utilità di sistema",
|
||||
"description": "Selettore di 25 strumenti CLI scelti (htop, btop, iperf3, tmux, ...) con selezione personalizzata o gruppi predefiniti (base, sviluppo, compressione, multiplexer, analisi, rete). Usa il flusso standard con repository e comando di verifica.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamento sistema Proxmox",
|
||||
"description": "Controllo dei repository + apt update + apt dist-upgrade, con conferma prima del riavvio. Rileva la versione principale di PVE (8 o 9), mantiene i repository configurati e chiede conferma prima di passare un host senza abbonamento al repository no-subscription, quindi esegue autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Aggiorna PVE 8 a PVE 9",
|
||||
"description": "Passaggio di versione principale (Debian Bookworm → Trixie + PVE 8 → 9). Controlli preliminari, migrazione dei repository, modalità automatizzata o interattiva, verifica finale e riavvio. Rifiuta l’esecuzione dal terminale web.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "Portabilità VM (OVA / OVF)",
|
||||
"body": "OVA e OVF sono formati di pacchettizzazione tra hypervisor definiti dallo standard DMTF e supportati da VMware, VirtualBox e Proxmox. I due strumenti consentono esportazione e reimportazione: una VM esportata da Proxmox può essere reimportata e viceversa. Usali per migrare carichi di lavoro da ESXi, creare un backup portabile di una VM o condividere una VM preparata con chi usa VirtualBox.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Esportazione VM a OVA / OVF",
|
||||
"description": "Converti una VM Proxmox in un archivio OVA portabile o in una directory OVF. Schema DMTF standard, manifesto SHA1 e dischi VMDK in formato streamOptimized. Importabile in VMware (ESXi / Workstation / Fusion), VirtualBox e nuovamente in Proxmox.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "Importa VM da OVA / OVF",
|
||||
"description": "Importa in Proxmox un’esportazione di VMware / VirtualBox / ProxMenux. Estrae automaticamente OVA, analizza i metadati OVF, crea la VM e importa ogni disco nel formato nativo dello storage.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Una nota sullo spazio su disco per l'esportazione / importazione",
|
||||
"body": "Entrambi gli strumenti convertono i formati dei dischi: l’esportazione usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; l’importazione usa <code>qm importdisk</code> per tornare al formato nativo dello storage (qcow2 / raw). Per esportare, prevedi <strong>~120% della dimensione virtuale del disco</strong> per OVF e <strong>~220%</strong> per OVA. L’archivio OVA usa TAR non compresso e viene creato mentre esistono ancora i file VMDK temporanei. Verifica che nella directory di destinazione ci sia spazio sufficiente prima di iniziare."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Come è organizzato il menu",
|
||||
"body": "Ogni strumento ha uno script dedicato in <code>scripts/utilities/</code>. L’aggiornamento del sistema Proxmox richiama un unico script sicuro in <code>scripts/global/</code>, update-pve-safe.sh, che rileva la versione principale e gestisce PVE 8 e PVE 9. Il passaggio PVE 8 → 9 offre due azioni aggiuntive nel proprio menu: un <em>Controllo preliminare all’aggiornamento</em> indipendente (esegue <code>pve8to9 --full</code>) e una <em>Guida all’aggiornamento manuale</em> in sola lettura (procedura di 17 passaggi), per chi vuole esaminare il processo o eseguirlo a mano."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aggiornamento del sistema Proxmox | Documentazione ProxMenux",
|
||||
"description": "Aggiorna i pacchetti nella versione principale attuale di Proxmox con apt-get update e apt full-upgrade -y. Controlla spazio su disco e repository, tenta il recupero delle chiavi GPG, controlla e ripara vecchi header PV LVM, ricompila i driver DKMS gestiti quando necessario, esegue autoremove/autoclean e propone il riavvio se serve.",
|
||||
"ogTitle": "Aggiornamento del sistema Proxmox | Documentazione ProxMenux",
|
||||
"ogDescription": "apt full-upgrade con controllo dei repository, autoremove/autoclean e richiesta di riavvio quando necessario."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aggiornamento sistema Proxmox",
|
||||
"description": "Richiama un unico script operativo (<code>update-pve-safe.sh</code>) che rileva la versione principale di Proxmox. I repository vengono letti tramite l’API Proxmox e conservati; un host senza abbonamento con il solo Enterprise deve confermare il passaggio a no-subscription. Lo script aggiorna i pacchetti e ricompila i driver DKMS gestiti da ProxMenux per un kernel pronto per il prossimo avvio. Lo script principale propone il riavvio se esiste il marcatore di sistema o se il kernel installato più recente è diverso da quello in esecuzione. Il processo è disponibile anche da <em>Update Now</em> nell’intestazione di ProxMenux Monitor quando ci sono aggiornamenti in sospeso.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Porta l'host all'ultimo livello di patch della versione principale corrente. <strong>non</strong> si aggiorna tra le versioni principali: per PVE 8 → PVE 9 vedere <link>Aggiornamento da PVE 8 a PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "Raccomandazione ufficiale Proxmox",
|
||||
"intro": "La guida di aggiornamento di Proxmox per un host in esecuzione (nella stessa versione principale) è quella di eseguire:",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Questa riga è il comando ufficiale per le versioni attuali di Proxmox. Occorre anche verificare che i repository siano corretti, che siano abilitati quelli giusti e che l’host resti in uno stato coerente dopo l’aggiornamento."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Cosa aggiunge ProxMenux: verificato nello script",
|
||||
"intro": "Usa <strong>la stessa operazione apt full-upgrade</strong>, con controlli dei repository, ricompilazione DKMS e pulizia finale. I passaggi seguenti corrispondono a <code>scripts/utilities/proxmox_update.sh</code> e al suo unico script operativo <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Rileva la versione principale di PVE</strong> nello script operativo (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Un unico script gestisce PVE 8 e PVE 9; i repository vengono conservati, a meno che un host senza abbonamento accetti il cambio proposto.",
|
||||
"<strong>Conserva i repository configurati.</strong> <code>ensure_repositories</code> legge i repository e lo stato dell’abbonamento tramite l’API Proxmox. Con un abbonamento attivo o un repository no-subscription o test già usato, non cambia nulla. Se un host senza abbonamento attivo ha il solo Enterprise, chiede conferma per passare a no-subscription. Rifiutando, l’aggiornamento termina senza modificare le sorgenti.",
|
||||
"<strong>Esegue l’aggiornamento senza interazione</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. Per le decisioni sui file di configurazione dpkg accetta l’azione predefinita, se presente; altrimenti conserva il file esistente.",
|
||||
"<strong>Non impone le utilità facoltative.</strong> Lo script non forza l’installazione di <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> o pacchetti simili. Se l’installazione Proxmox ha scelto di farne a meno, mantiene questa scelta. I pacchetti mancanti vengono segnalati dai processi di installazione superiori, non dall’aggiornamento.",
|
||||
"<strong>Controllo e riparazione dei metadati LVM.</strong> Rileva vecchi header PV ed esegue vgck --updatemetadata e vgchange -ay sui gruppi di volumi interessati. Può modificare metadati LVM; non si limita a mostrare avvisi.",
|
||||
"<strong>Pulizia finale:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>Ricompilazione DKMS prima della richiesta di riavvio.</strong> Lo script operativo richiama <code>pmx_rebuild_dkms_after_kernel</code> quando è pronto un kernel installato più recente. Lo script principale controlla <code>/var/run/reboot-required</code> e usa <code>dpkg-query</code> per confrontare il kernel indicato da <code>uname -r</code> con il pacchetto <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> installato più recente. Il marcatore può mancare sugli host senza <code>needrestart</code>; il confronto dei kernel funziona comunque."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "In una frase",
|
||||
"body": "Aggiorna i pacchetti dell’host, conserva i repository salvo un cambio accettato, controlla i metadati LVM, ricompila i driver DKMS gestiti, esegue autoremove/autoclean e propone il riavvio se necessario."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Finestra di conferma",
|
||||
"intro": "Selezionando l’opzione si apre un riepilogo delle azioni previste e viene richiesta una conferma esplicita:",
|
||||
"imageAlt": "Finestra di conferma dell’aggiornamento Proxmox con controllo dei repository, aggiornamento dei pacchetti e pulizia"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Come lo script principale delega l’esecuzione",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Un unico script operativo",
|
||||
"detail": "update-pve-safe.sh\n(rileva PVE 8 / 9\ninternamente)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Dopo l'aggiornamento",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nRichiesta di riavvio se necessario"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Cosa fa lo script operativo",
|
||||
"intro": "Un unico script (<code>scripts/global/update-pve-safe.sh</code>) gestisce PVE 8 (<code>bookworm</code>) e PVE 9 (<code>trixie</code>). Rileva la versione principale e controlla i repository esistenti senza riscrivere le sorgenti di base Debian. Le fasi sono:",
|
||||
"items": [
|
||||
"<strong>Controlli preliminari.</strong> Verifica che ci sia almeno ~1 GB libero in <code>/var/cache/apt/archives</code>. In caso contrario si interrompe subito con un messaggio chiaro, per evitare un errore nel mezzo di un’operazione apt.",
|
||||
"<strong>Controllo dei repository.</strong> <code>ensure_repositories</code> legge repository e stato dell’abbonamento. Con un repository Proxmox utilizzabile non cambia nulla. Se un host senza abbonamento attivo usa il solo Enterprise, chiede conferma prima di passare a no-subscription e interrompe l’aggiornamento in caso di rifiuto.",
|
||||
"<strong>apt update con recupero automatico GPG.</strong> In caso di <code>NO_PUBKEY</code> per un repository, anche di terze parti, lo script importa la chiave mancante e riprova automaticamente prima di segnalare l’errore.",
|
||||
"<strong>Aggiornamenti in sospeso e di sicurezza.</strong> Indica quanti pacchetti cambieranno e quanti provengono dalla suite di sicurezza, per mostrare numeri concreti nella finestra di conferma.",
|
||||
"<strong>Finestra di conferma.</strong> Dopo aver aggiornato gli elenchi dei pacchetti, lo script chiede un sì esplicito prima di aggiornarli.",
|
||||
"<strong>apt full-upgrade.</strong> Usa <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. Dpkg segue l’azione predefinita per i file di configurazione, se presente; altrimenti conserva il file esistente.",
|
||||
"<strong>Controllo LVM.</strong> <code>lvm_repair_check</code> aggiorna i metadati dei gruppi di volumi quando i dischi assegnati direttamente alle VM guest (DSM, TrueNAS o appliance di storage) tornano con vecchi header PV.",
|
||||
"<strong>Ricompilazione DKMS dei driver gestiti da ProxMenux.</strong> Quando è pronto un nuovo kernel, <code>pmx_rebuild_dkms_after_kernel</code> legge i driver installati da ProxMenux in <code>components_status.json</code> (attualmente <code>nvidia_driver</code> → modulo <code>nvidia</code> e <code>coral_driver</code> → modulo <code>gasket</code>), installa gli header corrispondenti (<code>proxmox-headers-<newkver></code> se disponibile, altrimenti <code>pve-headers-<newkver></code>) ed esegue <code>dkms autoinstall -k <newkver></code>. Se <code>dkms status</code> non mostra i moduli compilati per il nuovo kernel, richiama ogni installatore con <code>--auto-reinstall</code>. Gli errori vengono registrati senza interrompere l’aggiornamento, che arriva comunque alla richiesta di riavvio.",
|
||||
"<strong>Pulizia finale.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> prima di restituire il controllo allo script principale."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Pulizia e riavvio dopo l’aggiornamento",
|
||||
"intro": "Al termine dello script operativo, lo script principale esegue:",
|
||||
"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": "Lo script principale controlla anche se occorre riavviare. Ciascuno di questi segnali fa comparire la richiesta:",
|
||||
"items": [
|
||||
"Esiste <code>/var/run/reboot-required</code>: un pacchetto o uno strumento di sistema ha indicato che l’host deve essere riavviato.",
|
||||
"Il pacchetto del kernel Proxmox installato più recente è diverso dal kernel in esecuzione, secondo <code>dpkg-query</code> e uname -r."
|
||||
],
|
||||
"outro": "Se una delle condizioni è vera, una finestra whiptail chiede <em>«Alcune modifiche richiedono un riavvio. Vuoi riavviare ora?»</em>. Rifiuta per continuare con il kernel attuale fino al riavvio manuale, ad esempio durante una finestra di manutenzione programmata."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Cosa vedi alla fine",
|
||||
"intro": "Al termine dello script operativo, il terminale mostra il risultato della pulizia e, se necessario, la richiesta di riavvio:",
|
||||
"imageAlt": "Riepilogo del completamento dell'aggiornamento del sistema Proxmox con l'output di pulizia e il prompt di riavvio"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Rimanda il riavvio solo per un motivo preciso",
|
||||
"body": "Installare un nuovo pacchetto <code>proxmox-kernel-*</code> non sostituisce il kernel in esecuzione fino al riavvio. Il nuovo kernel e i suoi moduli corrispondenti diventano attivi al prossimo avvio. Programma il riavvio in una finestra di manutenzione adatta e controlla prima gli avvisi di compilazione DKMS."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Come lo script gestisce il repository Enterprise",
|
||||
"intro": "Proxmox abilita il repository Enterprise per impostazione predefinita. Senza un abbonamento attivo, questo restituisce 401 durante <code>apt-get update</code>. Lo script modifica i repository solo in questo caso e dopo conferma, tramite l’API Proxmox usata da <em>Node → Updates → Repositories</em>. Ecco i diversi casi:",
|
||||
"items": [
|
||||
"Con un <strong>abbonamento attivo</strong>, i repository restano invariati ed Enterprise fornisce gli aggiornamenti.",
|
||||
"Con il <strong>repository no-subscription o test già abilitato</strong>, i repository restano invariati, qualunque altra sorgente sia configurata.",
|
||||
"Con <strong>nessun abbonamento attivo e il solo repository Enterprise</strong>, una finestra propone il cambio. Accettando, Enterprise viene disabilitato, no-subscription viene abilitato e gli elenchi dei pacchetti vengono aggiornati. La modifica compare nella vista <em>Changes</em> di Audit & Report. Rifiutando, l’aggiornamento termina senza modificare le sorgenti.",
|
||||
"Le <strong>sorgenti Ceph Enterprise</strong> presenti vengono disabilitate durante lo stesso cambio, senza scegliere un altro canale Ceph. Un host che usa Ceph deve configurare il relativo canale separatamente.",
|
||||
"Se <strong>non è disponibile un terminale per chiedere conferma</strong>, nessuna sorgente viene modificata e l’aggiornamento termina con un messaggio che rimanda a <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Le sorgenti Debian e tutti gli altri file dei repository non vengono mai modificati da questa procedura. Una voce che mescola Enterprise con altri componenti non viene cambiata: l’aggiornamento si interrompe e chiede di separarla dalla vista dei repository Proxmox."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Considerazioni di cluster",
|
||||
"calloutTitle": "Su cluster: aggiornare un nodo alla volta",
|
||||
"calloutBody": "In un cluster Proxmox, esegui questa opzione su <strong>un nodo alla volta</strong> e attendi il completamento del riavvio prima di passare al successivo. Migra prima i sistemi guest dal nodo per evitare interruzioni del servizio nell’intero cluster. Versioni minori diverse, come 8.4.1 e 8.4.5, possono coesistere per alcune ore; kernel in esecuzione diversi possono causare comportamenti imprevisti per i sistemi guest gestiti da HA."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Cosa non fa",
|
||||
"items": [
|
||||
"<strong>Passaggio di versione principale.</strong> Il passaggio 8 → 9 è un’operazione separata; vedi <link>Aggiornamento da PVE 8 a PVE 9</link>.",
|
||||
"<strong>Backup.</strong> Nessuna snapshot, nessun rollback. Le operazioni Apt non sono transazionali. Combina con la tua normale disciplina di backup (PBS, vzdump, snapshot ZFS).",
|
||||
"<strong>Aggiornamenti di container / VM.</strong> Viene aggiornato solo l’host; i sistemi guest restano invariati.",
|
||||
"<strong>Scrittura dedicata del firmware.</strong> Questo strumento non serve a programmare BIOS o firmware dei dispositivi. I pacchetti di firmware o microcodice CPU già installati possono comunque ricevere aggiornamenti tramite apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update fallisce con 401 Unauthorized",
|
||||
"body": "Il repository Enterprise è abilitato, ma l’host non ha un abbonamento attivo. Prima di <code>apt-get update</code>, lo script propone il passaggio a no-subscription. Se hai rifiutato, ripeti l’aggiornamento e accetta, oppure disabilita Enterprise in <em>Node → Updates → Repositories</em> e abilita no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade si blocca su \"Configuring grub-pc\"",
|
||||
"body": "Se compare una richiesta interattiva di GRUB, chiede i dispositivi su cui installare il boot loader. L’opzione <code>--force-confold</code> riguarda i file di configurazione, non questa selezione. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> per scegliere i dischi di avvio appropriati, poi OK. Puoi configurare la scelta in anticipo con <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Il kernel è stato aggiornato, ma mancano i nuovi moduli di un driver esterno",
|
||||
"body": "Per i driver gestiti (<code>nvidia_driver</code> e <code>coral_driver</code>), la funzione esegue <code>dkms autoinstall -k <newkver></code> e può ripetere gli installatori con <code>--auto-reinstall</code>. Controlla il risultato con <code>dkms status</code>. Il comando autoinstall può ricompilare anche altri moduli DKMS registrati; gli installatori alternativi sono limitati alle voci gestite di <code>components_status.json</code>. Esamina eventuali moduli di terze parti ancora mancanti e ricompilali se necessario con <code>dkms autoinstall</code>."
|
||||
},
|
||||
{
|
||||
"title": "Il prompt del riavvio non è apparso ma sono sicuro che il kernel sia cambiato",
|
||||
"body": "I segnali sono alternativi: <code>/var/run/reboot-required</code> oppure una differenza tra il kernel in esecuzione e il kernel Proxmox installato più recente. Lo script principale non analizza le voci linux-image del registro apt. Controlla la versione in esecuzione con <code>uname -r</code> e i pacchetti del kernel installati con <code>dpkg-query</code>. Programma il riavvio necessario o esegui <code>shutdown -r now</code> quando sei pronto."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"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": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"tail": " — per il passaggio di versione principale, con uno strumento e un modello di sicurezza diversi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installatore di utilità di sistema",
|
||||
"tail": " — per installare strumenti CLI utili durante gli aggiornamenti (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installatore di utilità di sistema | Documentazione ProxMenux",
|
||||
"description": "Installatore di utilità CLI per Proxmox VE, con 25 pacchetti nell’elenco di riferimento (htop, btop, iperf3, tmux, ...). Selezione personalizzata, installazione completa e gruppi predefiniti (base, sviluppo, compressione, multiplexer, analisi, rete). I gruppi possono includere altri pacchetti. Usa ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Installatore di utilità di sistema | Documentazione ProxMenux",
|
||||
"ogDescription": "Installare strumenti CLI curati su Proxmox VE con un clic o selezione personalizzata."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installatore di utilità di sistema",
|
||||
"description": "Selettore delle 25 utilità CLI nell’elenco di riferimento PROXMENUX_UTILS. Offre selezione personalizzata, installazione completa, sei gruppi predefiniti e verifica delle installazioni. I gruppi possono includere strumenti esterni all’elenco. Usa le funzioni condivise ensure_repositories() + install_single_package() per gestire in modo coerente repository e messaggi sui pacchetti.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"info": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Installa strumenti CLI da un elenco di 25 pacchetti. Ogni installazione segue lo stesso processo: <code>ensure_repositories</code> verifica che l’host abbia un repository Proxmox utilizzabile per la versione principale di PVE; poi <code>install_single_package</code> installa il pacchetto e controlla che il comando sia in PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dell'installatore",
|
||||
"intro": "Dal menu Utilità, scegliere <strong>System Utilities Installer</strong>. Il menu principale offre nove opzioni:",
|
||||
"imageAlt": "Menu di installazione delle utilità di sistema con selezione personalizzata, ALL, gruppi predefiniti e verifica"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Le 9 azioni del menu",
|
||||
"headerOption": "Opzione",
|
||||
"headerBehaviour": "Comportamento",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Selezione personalizzata",
|
||||
"behaviourRich": "Elenco di selezione dei 25 pacchetti. Usa SPACE per selezionare e ENTER per confermare; vengono installati solo i pacchetti selezionati."
|
||||
},
|
||||
{
|
||||
"option": "2. Installa TUTTE le utilità",
|
||||
"behaviourRich": "Installazione one-shot di ogni pacchetto in <code>PROXMENUX_UTILS</code>. Utilizzare dopo una nuova installazione Proxmox."
|
||||
},
|
||||
{
|
||||
"option": "3. Base",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Sviluppo",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Compressione",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Multiplexer di terminale",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analisi",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Rete",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Verifica installazioni",
|
||||
"behaviourRich": "Esamina ogni voce di <code>PROXMENUX_UTILS</code>, controlla se il comando di verifica è in PATH e mostra un riepilogo Disponibile / Mancante."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "I 25 pacchetti",
|
||||
"intro": "Definiti nel file condiviso <code>scripts/global/utils-install-functions.sh</code> come <code>PROXMENUX_UTILS</code> (formato: <code>package:verify_command:description</code>). Altri script ProxMenux, per esempio gli avvii del monitoraggio di rete iftop / iptraf-ng / iperf3, riutilizzano queste voci per mantenere sincronizzati pacchetto e comando di verifica.",
|
||||
"headerPackage": "Pacchetto",
|
||||
"headerVerify": "Comando di verifica",
|
||||
"headerDescription": "Descrizione",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Acceleratore di download"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Downloader multi-source"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Monitor moderno delle risorse"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Estrarre i file CAB"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Modifica del registro di Windows / password"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Converti file di testo DOS / Unix"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "Crea immagini ISO"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Colorazione generica dei log"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Visualizzatore interattivo dei processi"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Utilizzo della rete in tempo reale"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Strumenti Intel GPU"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Monitoraggio dell’I/O dei dischi"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Test di banda di rete"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Gestione degli insiemi IP"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Strumento di monitoraggio della rete"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Utilità del disco VM"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Accesso ai registri MSR della CPU"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Strumenti di networking legacy"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Individuare i file rapidamente"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Accesso non interattivo SSH"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Multiplexer del terminale"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "Estrarre i file ZIP"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Gestione delle immagini WIM"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Crea file ZIP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Come funziona l’installazione di un pacchetto",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> rileva PVE 8 o 9 e legge i repository tramite l’API Proxmox. Con un repository Proxmox utilizzabile non cambia nulla. Un host senza abbonamento attivo con il solo Enterprise deve confermare il passaggio a no-subscription; <code>apt-get update</code> viene eseguito dopo il cambio accettato.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> gestisce <code>apt-get install -y \"$pkg\"</code> con feedback (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Dopo l'installazione, il comando di verifica viene controllato con <code>command -v \"$verify_cmd\"</code>. Tre risultati:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (successo):</strong> comando disponibile; il pacchetto è conteggiato come <em>Riuscito</em>.",
|
||||
"<strong>1 (errore):</strong> apt non è riuscito; il pacchetto è conteggiato come <em>Non riuscito</em>.",
|
||||
"<strong>2 (avviso):</strong> apt è riuscito, ma il comando atteso non è stato trovato in PATH; il pacchetto è conteggiato come <em>Con avvisi</em>."
|
||||
],
|
||||
"summary": "Al termine di un’installazione personalizzata o di gruppo, una finestra mostra i conteggi <em>Riusciti / Con avvisi / Non riusciti</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifica installazioni",
|
||||
"intro": "L’opzione 9 è in sola lettura: esamina <code>PROXMENUX_UTILS</code> ed esegue <code>command -v</code> per ogni comando di verifica. L’output è simile al seguente:",
|
||||
"code": "Total: 25\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": "Utile prima di eseguire script che dipendono da questi strumenti (ad es. <code>uup_dump_iso_creator.sh</code> ha bisogno di <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). Se manca qualcosa, eseguire l'installazione del gruppo corrispondente o selezionare i pacchetti mancanti tramite selezione personalizzata."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"reposTitle": "«Impossibile configurare i repository. Installazione annullata».",
|
||||
"reposBody": "Il controllo dei repository non è riuscito: il passaggio a no-subscription è stato rifiutato, lo stato dell’abbonamento non è leggibile o una voce richiede attenzione. Il messaggio precedente indica la causa. I repository sono elencati in <em>Node → Updates → Repositories</em>; <code>apt-get update</code> da una console mostra l’errore apt.",
|
||||
"warningsTitle": "Un pacchetto viene segnalato \"Con avvisi\" ma il comando funziona dopo aver chiuso il menu",
|
||||
"warningsBody": "Dopo <code>apt-get install</code>, la funzione esegue <code>hash -r</code>, attende brevemente e verifica il comando atteso con <code>command -v</code>. Un avviso indica che il controllo continua a fallire, senza identificarne la causa. Prova una nuova shell, poi controlla l’installazione del pacchetto e PATH se il comando manca ancora.",
|
||||
"hangsTitle": "Un’installazione apt si blocca",
|
||||
"hangsBody": "Probabilmente una richiesta debconf è nascosta dall’output silenziato. Lo script usa <code>DEBIAN_FRONTEND=noninteractive</code> per le chiamate apt, che di solito evita le domande, ma alcuni pacchetti richiedono comunque dati. Annulla con <kbd>Ctrl</kbd>+<kbd>C</kbd> ed esegui <code>apt-get install -y <pkg></code> manualmente da una shell per vedere la richiesta e decidere."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"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": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"tailRich": "— per il <code>apt dist-upgrade</code> effettivo sull'host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Strumenti di monitoraggio in tempo reale (rete)",
|
||||
"tailRich": "— utilizza iftop / iptraf-ng / iperf3 da questa stessa lista."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tailRich": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aggiornare PVE 8 a PVE 9 | Documentazione ProxMenux",
|
||||
"description": "Tre modi per passare da Proxmox VE 8 a 9 (Debian Bookworm a Trixie e PVE 8 a 9): automatico, interattivo o manuale seguendo la procedura ufficiale. Controllo pve8to9, migrazione dei repository, dist-upgrade e verifica finale. L’avvio dal terminale web è bloccato.",
|
||||
"ogTitle": "Aggiornare PVE 8 a PVE 9 | Documentazione ProxMenux",
|
||||
"ogDescription": "Tre modalità (automatica, interattiva e manuale) per passare da Proxmox VE 8 a 9."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aggiorna PVE 8 a PVE 9",
|
||||
"description": "Esegue il passaggio da Proxmox VE 8 a 9 secondo la procedura ufficiale: Debian Bookworm a Trixie e PVE 8 a 9. Offre modalità automatica, interattiva e manuale, oltre a un controllo preliminare indipendente. Blocca il terminale web: una disconnessione durante l’aggiornamento può lasciare l’host inutilizzabile.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"dangerCallout": {
|
||||
"title": "Un cambio di versione principale è irreversibile",
|
||||
"intro": "L’operazione sostituisce sul posto la base Debian (Bookworm → Trixie) e i componenti Proxmox. <strong>Non è previsto un ripristino alla versione precedente</strong>. Prima di iniziare:",
|
||||
"items": [
|
||||
"<strong>Backup verificati</strong> di ogni VM e CT (PBS, vzdump, snapshot ZFS — verificare anche il ripristino).",
|
||||
"<strong>Accesso console / IPMI / iKVM</strong> all’host in caso di interruzione SSH durante l’aggiornamento.",
|
||||
"L'host è già aggiornato su PVE 8.4.x (lo script applica questo).",
|
||||
"Ceph (se presente) sulla versione 19.x Squid.",
|
||||
"Almeno <strong>5 GB liberi</strong> nel filesystem root."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
"heading": "Il menu della modalità",
|
||||
"intro": "L’opzione apre quattro voci: Automatico, Interattivo, Controllo preliminare e Guida manuale. Tre scelte <em>eseguono</em> l’aggiornamento o spiegano come procedere; il controllo indipendente <em>verifica</em> i requisiti e può proporre riparazioni.",
|
||||
"imageAlt": "Menu di aggiornamento PVE da 8 a 9 con modalità automatica, interattiva, controllo preliminare e guida manuale"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Tre modi per aggiornare",
|
||||
"intro": "Automatico e Interattivo seguono lo stesso percorso, con controlli preliminari e verifica finale. Cambia la gestione delle domande dpkg durante <code>dist-upgrade</code>. La guida manuale mostra i comandi, inclusi i controlli: occorre eseguire ogni passaggio personalmente.",
|
||||
"auto": {
|
||||
"title": "Automatico / Senza intervento",
|
||||
"summary": "Imposta <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. Per i file di configurazione modificati, dpkg usa l’azione predefinita se disponibile; altrimenti <strong>conserva il file attuale</strong> (<code>--force-confold</code>).",
|
||||
"items": [
|
||||
"Più veloce — nessuna domanda di dpkg durante l’aggiornamento",
|
||||
"Adatto a installazioni standard senza file di configurazione personalizzati",
|
||||
"Rischio: un file personalizzato viene conservato senza domande e può nascondere i nuovi valori predefiniti"
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"title": "Interattivo",
|
||||
"summary": "Stesso percorso, ma l’utente risponde a ogni domanda dpkg sui conflitti di configurazione. Più lento, con la massima visibilità.",
|
||||
"items": [
|
||||
"Vedi ogni conflitto di configurazione e decidi",
|
||||
"Migliore quando hai personalizzato <code>/etc/lvm</code>, <code>/etc/ssh</code>, ecc.",
|
||||
"Consultare la tabella delle risposte consigliate nella procedura manuale di seguito"
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Guida all'aggiornamento manuale",
|
||||
"summary": "Mostra senza eseguirla la procedura in 17 passaggi del wiki ufficiale Proxmox. Esegui manualmente i comandi da una shell separata.",
|
||||
"items": [
|
||||
"Controllo massimo — digita ogni comando",
|
||||
"Meglio quando si desidera imparare la procedura o si fida di nulla",
|
||||
"Lo script visualizza i passaggi; nulla viene eseguito automaticamente"
|
||||
]
|
||||
}
|
||||
},
|
||||
"precheckCallout": {
|
||||
"title": "Più un pre-check separato",
|
||||
"body": "L’opzione 3 — <strong>Esegui controllo PVE da 8 a 9</strong> — avvia lo strumento ufficiale <code>pve8to9 --full</code>, propone riparazioni guidate per problemi comuni e poi <strong>si ferma</strong>. Usala prima dell’aggiornamento o dopo riparazioni manuali. Le modalità automatica e interattiva eseguono lo stesso controllo; la guida manuale indica di avviarlo personalmente."
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Perché il terminale web è bloccato",
|
||||
"body": "Le tre modalità rilevano <code>termproxy</code> / <code>vncshell</code> nella catena dei processi padre e rifiutano l’avvio. Il terminale web dipende da <code>pveproxy</code>, servizio aggiornato durante l’operazione. Al riavvio di <code>pveproxy</code> termina la sessione e lo script al suo interno. L’host può rimanere aggiornato solo in parte.",
|
||||
"warningTitle": "Usa SSH o una console fisica / IPMI / iKVM",
|
||||
"warningBody": "SSH è la scelta più comune. Avvialo dentro <code>tmux</code> o <code>screen</code> per resistere a brevi interruzioni di rete. Se rileva una normale shell SSH, lo script mostra subito un promemoria su tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Modalità automatica / Senza intervento",
|
||||
"intro": "Le domande su pacchetti e file di configurazione usano i valori predefiniti della tabella seguente, e un 401 dal repository Enterprise passa a no-subscription senza chiedere. La conferma dell’aggiornamento, il riepilogo dell’aggiornamento di PVE 8, le riparazioni dei controlli e la richiesta di riavvio vengono comunque mostrati.",
|
||||
"behaviourHeading": "Comportamento specifico della modalità automatica",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Impostazione",
|
||||
"effectHeader": "Effetto",
|
||||
"rows": [
|
||||
{
|
||||
"settingRich": "<code>ASSUME_YES=1</code>",
|
||||
"effectRich": "Opzione interna — lo script risponde sì alle proprie domande, come il passaggio a no-subscription dopo un 401"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
|
||||
"effectRich": "apt / dpkg vengono eseguiti senza aprire domande debconf"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confdef</code>",
|
||||
"effectRich": "Per i file di configurazione intatti: installa la nuova versione del manutentore"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confold</code>",
|
||||
"effectRich": "Per i file modificati: azione predefinita di dpkg se disponibile; altrimenti <strong>conserva la tua versione</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"flowHeading": "Percorso della modalità automatica",
|
||||
"flowIntro": "Sei fasi consecutive. La fase 2 aggiorna i pacchetti PVE 8 e la fase 3 scrive la configurazione dei repository di PVE 9. Un errore interrompe il percorso senza annullare quelle modifiche; se l’aggiornamento di PVE 8 non riesce o viene annullato, i repository restano invariati. La fase 5 esegue <code>dist-upgrade</code> a PVE 9.",
|
||||
"flowDiagram": "1. CONTROLLI\nBlocca termproxy / vncshell; conferma l’aggiornamento; rifiuta PVE 9.\n\n2. PREPARARE PVE 8\nscripts/global/update-pve8.sh\nAggiorna i pacchetti PVE 8; si ferma se l’aggiornamento non riesce o viene annullato.\npve8to9 --full (può proporre riparazioni).\nControlla spazio e connettività; Ceph 19.x Squid sui nodi iperconvergenti.\n\n3. MIGRARE I REPOSITORY\nBookworm → Trixie; scrive file deb822 .sources.\nCommenta i vecchi file .list; apt-get update.\n\n4. VERIFICARE IL CANDIDATO PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nSi ferma se il candidato non è 9.x o se proxmox-ve verrebbe rimosso.\n\n5. AGGIORNARE\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nSenza abbonamento: disattiva pve-enterprise.sources.\nRegistro: /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. VERIFICARE E RIAVVIARE\nEFI: apt install grub-efi-amd64\npve8to9 --full; esaminare risultati e richiesta di riavvio.",
|
||||
"preflightHeading": "Controlli prima dell’aggiornamento",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Controllo",
|
||||
"whyHeader": "Perché è importante",
|
||||
"rows": [
|
||||
{
|
||||
"checkRich": "<strong>Blocco del terminale web</strong>",
|
||||
"whyRich": "Evita che l’aggiornamento termini la shell che lo esegue"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Già alla versione 9.x</strong>",
|
||||
"whyRich": "Interrompe se l'host gestisce già PVE 9 (niente da fare)"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ultima versione di PVE 8.4.x</strong>",
|
||||
"whyRich": "Aggiorna prima PVE 8 all’ultima revisione tramite il relativo script; le vecchie versioni 8.x hanno requisiti diversi"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>pve8to9 --full</strong>",
|
||||
"whyRich": "Controllo dei requisiti fornito da Proxmox; gli errori FAIL bloccano l’aggiornamento finché non vengono corretti"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Spazio su disco</strong>",
|
||||
"whyRich": "≥ 1024 MB liberi in <code>/var/cache/apt/archives</code> per i file .deb scaricati"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Connettività</strong>",
|
||||
"whyRich": "Ping a <code>download.proxmox.com</code> — se fallisce, l’operazione non parte"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ceph 19.x Squid</strong>",
|
||||
"whyRich": "Se Ceph è installato, deve già essere alla versione 19.x. PVE 9 non funziona con Ceph 17/18. Esistono le opzioni <code>--ignore-ceph-check</code> e <code>--warn-ceph-check</code> per ignorare il controllo: usale solo se sai cosa stai facendo."
|
||||
}
|
||||
]
|
||||
},
|
||||
"distUpgradeHeading": "Il comando dist-upgrade (modalità automatica)",
|
||||
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
|
||||
"distUpgradeOutro": "L’output appare in tempo reale su stdout e viene anche salvato in <code>/var/log/pve8-a-pve9-<timestamp>.log</code>. È tutto visibile; vengono omesse solo le domande.",
|
||||
"postHeading": "Operazioni successive all’aggiornamento (modalità automatica)",
|
||||
"postItems": [
|
||||
"<strong>Host EFI:</strong> installa <code>grub-efi-amd64</code> come indicato tra i problemi noti di Proxmox. Non viene installato automaticamente durante l’aggiornamento e può essere necessario per il prossimo avvio.",
|
||||
"<strong>Repository Enterprise senza abbonamento.</strong> pve-manager 9 aggiunge <code>pve-enterprise.sources</code> durante l’aggiornamento; in modalità no-subscription lo script lo imposta su <code>Enabled: false</code>.",
|
||||
"<strong>Esegue di nuovo <code>pve8to9 --full</code>.</strong> Segnala i problemi rimasti. In presenza di FAIL compare lo stesso menu di riparazione dei controlli preliminari.",
|
||||
"<strong>Richiesta di riavvio.</strong> Si consiglia di riavviare per caricare il nuovo kernel e i servizi. Rifiuta solo per un motivo preciso: mantenere il vecchio kernel dopo un cambio di versione principale comporta rischi."
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"heading": "Modalità interattiva",
|
||||
"intro": "Stesso percorso della <autolink>modalità automatica</autolink>: controlli preliminari, migrazione dei repository e verifica finale identici. Cambia il passaggio <code>dist-upgrade</code>: <strong>rispondi personalmente a ogni conflitto di configurazione segnalato da dpkg</strong>. ProxMenux esegue <code>apt-get dist-upgrade</code> senza le opzioni <code>--force-conf*</code>.",
|
||||
"distUpgradeHeading": "Il comando dist-upgrade (modalità interattiva)",
|
||||
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
|
||||
"whenHeading": "Quando interattivo è la scelta giusta",
|
||||
"whenItems": [
|
||||
"Hai personalizzato <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> o qualsiasi altro file di configurazione che viene toccato dall'aggiornamento.",
|
||||
"Vuoi vedere quali pacchetti causano conflitti e decidere per ogni file.",
|
||||
"Stai aggiornando un host di produzione sul quale non sono accettabili modifiche nascoste."
|
||||
],
|
||||
"promptCalloutTitle": "Cosa rispondere ad ogni richiesta",
|
||||
"promptCalloutBody": "Valgono le stesse raccomandazioni della procedura manuale: vedi <dpkglink>Risposte consigliate alle domande dpkg</dpkglink> più avanti. Digita <strong>D</strong> per vedere le differenze o <strong>Z</strong> per aprire una shell."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Procedura di aggiornamento manuale",
|
||||
"intro": "Questo è ciò che mostra l’opzione <strong>Guida all’aggiornamento manuale</strong>: il <wikilink>wiki ufficiale Proxmox per il passaggio da 8 a 9</wikilink>, diviso in quattro fasi. Lo script <em>mostra</em> i comandi; li esegui personalmente in una shell root separata. Ogni passaggio è visibile.",
|
||||
"rootCalloutTitle": "Tutti i comandi hanno bisogno di root",
|
||||
"rootCalloutBody": "Usa una shell root per questi comandi, incluse redirezioni e here-document. Con <code>sudo</code>, assicurati che l’intero comando venga eseguito con privilegi root.",
|
||||
"phase1Heading": "Fase 1 — Preparazione",
|
||||
"phase1Intro": "Aggiorna l’host all’ultima PVE 8.4.x, verifica versione e Ceph se presente, esegui il controllo Proxmox e avvia un multiplexer di terminale per resistere alle disconnessioni.",
|
||||
"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 — Migrazione di repository",
|
||||
"phase2Intro": "Passa tutti i repository Debian e Proxmox da Bookworm a Trixie e converti le sorgenti Proxmox al formato deb822. <strong>Scegli il passaggio 7 OPPURE 8</strong> in base all’abbonamento Enterprise. Salta il passaggio 9 se non usi 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 — Il dist-upgrade",
|
||||
"phase3Intro": "L’aggiornamento effettivo. Il passaggio 12 è facoltativo ma consigliato per ridurre i messaggi di audit. Il 13 richiede più tempo: rispondi alle domande dpkg usando la tabella. Il 13.1 riguarda solo EFI e segue i problemi noti ufficiali.",
|
||||
"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": "Risposte consigliate per i prompt dpkg",
|
||||
"dpkgIntro": "Risposte raccomandate dalla guida Proxmox: <strong>Y</strong> installa il nuovo file del manutentore, sovrascrivendo il tuo; <strong>N</strong> conserva il file attuale. In caso di dubbio, verifica prima le differenze:",
|
||||
"dpkgTable": {
|
||||
"fileHeader": "File / richiesta",
|
||||
"answerHeader": "Risposta consigliata",
|
||||
"whyHeader": "Perché?",
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "/etc/issue",
|
||||
"answerRich": "<strong>N</strong> (conserva il file attuale)",
|
||||
"whyRich": "Banner che sei abituato a vedere",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/lvm/lvm.conf",
|
||||
"answerRich": "<strong>Y</strong> (versione del manutentore)",
|
||||
"whyRich": "PVE 9 richiede i nuovi valori LVM predefiniti",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/ssh/sshd_config",
|
||||
"answerRich": "<strong>Y</strong> per sole modifiche predefinite; esamina prima i file personalizzati",
|
||||
"whyRich": "Controlla le impostazioni SSH locali e preserva l’accesso prima di sostituire il file. Le modifiche predefinite includono opzioni rinominate e commenti.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/default/grub",
|
||||
"answerRich": "<strong>N</strong> se personalizzato",
|
||||
"whyRich": "Contiene i parametri di avvio, come IOMMU e passthrough PCI",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/chrony/chrony.conf",
|
||||
"answerRich": "<strong>Y</strong> se non modificato; conserva prima le impostazioni locali",
|
||||
"whyRich": "Trixie aggiorna i valori per la sincronizzazione oraria. Sposta le impostazioni locali nelle directory conf.d / sources.d di chrony prima di accettare il nuovo file.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "Riavvii dei servizi durante l’aggiornamento",
|
||||
"answerRich": "<strong>Sì</strong> (predefinito)",
|
||||
"whyRich": "Riavvia la maggior parte dei servizi senza riavviare l’host",
|
||||
"fileFont": false
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>apt-listchanges</code>",
|
||||
"answerRich": "Premere <kbd>q</kbd>",
|
||||
"whyRich": "Chiude solo il pager; le informazioni mostrate riassumono il registro delle modifiche",
|
||||
"fileFont": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"inspectCalloutTitle": "Ispezione di uno specifico conflitto dpkg",
|
||||
"inspectCalloutBody": "Alle domande dpkg sui file di configurazione, <strong>D</strong> mostra le differenze fra il tuo file e quello nuovo; <strong>Z</strong> apre una shell per esaminare il problema. Consentono di decidere senza tirare a indovinare.",
|
||||
"phase4Heading": "Fase 4 — Postupgrade",
|
||||
"phase4Intro": "Verifica che l’aggiornamento sia riuscito, riavvia con il kernel PVE 9 e conferma la versione. Puoi poi convertire i vecchi file <code>.list</code> rimasti nel formato 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: aggiornare i nodi uno alla volta",
|
||||
"clusterCalloutBody": "Rilevato con <code>pvecm status</code>. <strong>Non</strong> aggiornare più nodi contemporaneamente. Sposta gli ospiti, aggiorna il nodo, riavvia e verifica l’appartenenza al cluster prima di proseguire. Durante l’aggiornamento funziona la migrazione live da versioni PVE precedenti a successive; la direzione inversa generalmente non è supportata. I gruppi HA diventano automaticamente regole HA quando tutti i nodi usano PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: aggiornare PRIMA Ceph, poi Proxmox",
|
||||
"cephCalloutBody": "Ceph deve già usare 19.x Squid prima dell’aggiornamento Proxmox. Segui l’ordine ufficiale Quincy 17 → Reef 18 → Squid 19, aggiornando pacchetti e riavviando progressivamente i demoni Ceph nell’ordine documentato. Verifica <code>ceph --version</code> prima di ogni nodo Proxmox. Procedura completa: <cephlink>wiki per il passaggio da Ceph Reef a Squid</cephlink>."
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"items": [
|
||||
{
|
||||
"title": "Lo script si interrompe: \"This script cannot be executed from the Proxmox web terminal\"",
|
||||
"bodyRich": "Apri una connessione SSH o usa console / IPMI / iKVM e riprova da lì. Avvia prima <code>tmux new -s pveupgrade</code> per resistere a brevi interruzioni di rete."
|
||||
},
|
||||
{
|
||||
"title": "pve8to9 segnala FAIL e l’opzione 1 di riparazione produce \"command not found\"",
|
||||
"bodyRich": "Se l’errore cita <code>configure_repositories</code>, la copia dello script è obsoleta: la riparazione attuale usa cleanup_duplicate_repos e ensure_repositories. Aggiornala o esamina i comandi manuali con l’opzione 2. <code>apt-get update</code> aggiorna le liste dei pacchetti, ma non risolve ogni controllo bloccante."
|
||||
},
|
||||
{
|
||||
"title": "La simulazione apt segnala \"proxmox-ve will be REMOVED\"",
|
||||
"bodyRich": "I nuovi repository non sono raggiungibili o il nome della distribuzione non è stato sostituito. Controlla <code>cat /etc/apt/sources.list.d/proxmox.sources</code>: <code>Suites:</code> deve indicare <code>trixie</code>, non <code>bookworm</code>. <code>apt-cache policy proxmox-ve</code> deve mostrare un candidato 9.x dal nuovo repository."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade fallisce durante l’esecuzione",
|
||||
"bodyRich": "Eseguire <code>apt-get -f install</code> per risolvere le dipendenze rotte, quindi eseguire nuovamente l'aggiornamento. Se ciò fallisce, controlla il registro a <code>/var/log/pve8-a-pve9-<timestamp>.log</code> — le ultime righe di solito indicano il pacchetto offensivo. Non riavviare fino a quando <code>dpkg -l | grep ^iU</code> ritorna vuoto (senza pacchetti semiinstallati)."
|
||||
},
|
||||
{
|
||||
"title": "L'host EFI non si avvia dopo il riavvio",
|
||||
"bodyRich": "L’installazione successiva di <code>grub-efi-amd64</code> risolve il problema. Se è stata saltata o è fallita, avvia l’ISO Proxmox in modalità ripristino, monta il filesystem root, esegui chroot e <code>apt-get install grub-efi-amd64 && update-grub</code>."
|
||||
},
|
||||
{
|
||||
"title": "GUI non si carica dopo l'aggiornamento",
|
||||
"bodyRich": "Esegui <code>systemctl status pveproxy</code> e <code>systemctl restart pveproxy</code>. Se il problema persiste, cerca l’errore con <code>journalctl -u pveproxy -b</code>."
|
||||
},
|
||||
{
|
||||
"title": "La rete non funziona dopo il riavvio",
|
||||
"bodyRich": "Verifica che <code>/etc/network/interfaces</code> faccia riferimento a dispositivi esistenti e che <code>ifupdown2</code> sia installato: <code>apt install ifupdown2</code>. Se i nomi sono cambiati, vedi <netlink>Nomi persistenti delle interfacce</netlink>."
|
||||
},
|
||||
{
|
||||
"title": "Cluster split-brain dopo l'aggiornamento di un nodo",
|
||||
"bodyRich": "I cluster misti PVE 8 / PVE 9 sono supportati durante l’aggiornamento. Funziona la migrazione live da versioni precedenti a successive; la direzione inversa generalmente non è supportata. Se il nodo appare offline, verifica <code>corosync</code> e la configurazione QDevice / rete. Esegui <code>pvecm status</code> su ciascun nodo per confermare il quorum."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"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": "Riferimenti ufficiali",
|
||||
"intro": "La procedura manuale dello script segue queste fonti ufficiali. In caso di dubbi durante un aggiornamento, segui il wiki ufficiale: ProxMenux facilita l’esecuzione, Proxmox resta il riferimento.",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
|
||||
"title": "Aggiornamento da 8 a 9",
|
||||
"desc": "La principale pagina wiki Proxmox per l'aggiornamento 8 → 9. Fonte di verità per ogni comando nella procedura manuale sopra."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
|
||||
"title": "Aggiornamento a Ceph Squid (19.x)",
|
||||
"desc": "Passaggio preliminare obbligatorio per nodi Ceph iperconvergenti. Ceph deve essere 19.x Squid prima di PVE 9."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Roadmap",
|
||||
"title": "Piano di sviluppo di Proxmox VE",
|
||||
"desc": "Note di rilascio PVE 9 e modifiche rispetto a 8.x: da leggere prima di aggiornare."
|
||||
},
|
||||
{
|
||||
"href": "https://www.debian.org/releases/trixie/releasenotes",
|
||||
"title": "Note di rilascio di Debian Trixie",
|
||||
"desc": "PVE 9 si basa su Debian Trixie. Le note Debian descrivono i cambiamenti del sistema operativo che interessano anche l’host."
|
||||
},
|
||||
{
|
||||
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
|
||||
"title": "forum di installazione Proxmox VE",
|
||||
"desc": "Se qualcosa va storto durante l’aggiornamento, cerca prima nel forum: qualcuno potrebbe aver già incontrato lo stesso problema."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
|
||||
"title": "Backup e ripristino",
|
||||
"desc": "Il cambio di versione principale è irreversibile. Verifica i backup prima di iniziare."
|
||||
}
|
||||
]
|
||||
},
|
||||
"video": {
|
||||
"heading": "Videoguida",
|
||||
"intro": "Preferisci guardare l'aggiornamento eseguire end-to-end prima di farlo da soli? Questo passaggio dimostra il flusso di aggiornamento ProxMenux in tempo reale.",
|
||||
"title": "ProxMenux — Videoguida al passaggio da Proxmox VE 8 a 9",
|
||||
"caption": "Video esterno su YouTube. Riproduzione in modalità di privacy avanzata, senza cookie finché non avvii il video."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"tail": " — per gli aggiornamenti ordinari all’interno della stessa versione principale (8.4.1 → 8.4.5, ecc.)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Creatore di ISO UUP Dump | Documentazione ProxMenux",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata sull’host Proxmox con il creatore di ISO UUP Dump di ProxMenux. Automatizza l’installazione delle dipendenze, il download e la conversione dei file UUP in una ISO avviabile per creare una VM.",
|
||||
"ogTitle": "Creatore di ISO UUP Dump | Documentazione ProxMenux",
|
||||
"ogDescription": "Crea una ISO di Windows aggiornata con UUP Dump e ProxMenux. Dipendenze, download e conversione sono completamente automatizzati.",
|
||||
"ogImageAlt": "ProxMenux — Creatore di ISO UUP Dump"
|
||||
},
|
||||
"header": {
|
||||
"title": "Creatore di ISO UUP Dump",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata sull’host Proxmox con UUP Dump. ProxMenux gestisce le dipendenze, scarica i file UUP in parallelo, esegue il convertitore UUP Dump e sposta la ISO nella directory di uscita scelta, che per impostazione predefinita è lo storage ISO Proxmox rilevato.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa questo script",
|
||||
"body": "Fornisci l’URL generato da uupdump.net dopo aver scelto build, lingua ed edizione. Lo script installa le dipendenze mancanti, scarica il convertitore UUP Dump e i file UUP, crea una ISO Windows avviabile e la sposta nella directory di uscita scelta. Lo storage ISO Proxmox rilevato viene proposto come destinazione predefinita."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "UUP Dump ISO Creator voce in ProxMenux",
|
||||
"caption": "UUP Dump ISO Creator voce in ProxMenux"
|
||||
},
|
||||
"what": {
|
||||
"heading": "Cos'è UUP Dump?",
|
||||
"intro": "UUP Dump è un servizio della comunità che consente di scaricare i file originali Unified Update Platform (UUP) usati da Windows Update per distribuire Windows. Questi file possono essere assemblati in una normale ISO avviabile. Permette di ottenere:",
|
||||
"items": [
|
||||
"La build di Windows più recente, compresi i canali Insider Preview.",
|
||||
"Una specifica build precedente non più elencata nella pagina di download Microsoft.",
|
||||
"File puliti e non modificati provenienti direttamente dai server di Microsoft.",
|
||||
"La combinazione desiderata di edizioni e lingue in una sola ISO."
|
||||
],
|
||||
"learnMore": "Scopri di più nella <extlink>pagina del progetto UUP Dump</extlink>."
|
||||
},
|
||||
"automates": {
|
||||
"heading": "Cosa automatizza lo script"
|
||||
},
|
||||
"dependencies": {
|
||||
"heading": "Dipendenze",
|
||||
"intro": "Lo script controlla innanzitutto gli strumenti necessari per scaricare i file UUP e creare la ISO. Quelli mancanti vengono installati con <code>apt-get</code>:",
|
||||
"headerPackage": "Pacchetto",
|
||||
"headerRole": "Ruolo",
|
||||
"rows": [
|
||||
{
|
||||
"pkg": "curl",
|
||||
"roleRich": "Download HTTP (avvio iniziale del convertitore)."
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"roleRich": "Downloader parallelo utilizzato per ogni payload UUP."
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"roleRich": "Estrae pacchetti Microsoft CAB."
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"roleRich": "Costruisce <code>install.wim</code> (wimlib-imagex)."
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"roleRich": "Scrive la ISO avviabile finale (o <code>mkisofs</code>)."
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Modifica gli hive del registro di Windows durante la creazione."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Equivalente manuale — se avete mai bisogno di installarli voi stessi:",
|
||||
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Download e conversione",
|
||||
"steps": [
|
||||
"Rileva lo storage ISO Proxmox tramite <code>pvesm status -content iso</code> oppure usa <code>/var/lib/vz/template/iso</code> come alternativa.",
|
||||
"Richiede una cartella di base per i file temporanei (default <code>/root/uup-temp</code>).",
|
||||
"Scarica il convertitore UUP Dump da <code>git.uupdump.net</code>.",
|
||||
"Estrae <code>id</code>, <code>pack</code> ed <code>edition</code> dall’URL incollato.",
|
||||
"Chiama <code>https://uupdump.net/get.php?…&aria2=2</code> per generare un elenco di download di aria2.",
|
||||
"Scarica tutti i file UUP in <code>UUPs/</code> con aria2, in parallelo e con possibilità di ripresa.",
|
||||
"Esegue <code>convert.sh wim UUPs 1</code> dal convertitore per produrre l'ISO finale.",
|
||||
"Sposta la ISO nella directory di uscita scelta ed elimina i file temporanei."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "Opzioni di download aria2 utilizzate",
|
||||
"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> — fino a 16 connessioni per server.",
|
||||
"<code>-s16</code> — divide ogni file in 16 segmenti.",
|
||||
"<code>-j5</code> — scarica 5 file in parallelo.",
|
||||
"<code>-c</code> — riprende i download parziali.",
|
||||
"<code>-R</code> — applica al file scaricato la data e l’ora del file remoto, quando disponibili."
|
||||
],
|
||||
"runtime": "La durata tipica è di circa 10 minuti e dipende soprattutto dalla velocità della connessione Internet e dal carico dei server di download UUP Dump."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Passo 1 · Ottenere un UUP Dump URL",
|
||||
"intro": "Prima di eseguire lo script è necessario un URL UUP Dump che include i parametri di query <code>id</code>, <code>pack</code> e <code>edition</code>. Generarlo su <extlink>uupdump.net</extlink>:",
|
||||
"stepBadge": "Passaggio",
|
||||
"items": [
|
||||
{
|
||||
"title": "Scegli una versione di Windows",
|
||||
"img": "/iso-creator/step-1-select-version-windows.png",
|
||||
"caption": "UUP Dump pagina principale — scegliere una versione di Windows",
|
||||
"body": "Apri la home page di UUP Dump e scegli la versione di Windows che desideri."
|
||||
},
|
||||
{
|
||||
"title": "Scegli una build specifica",
|
||||
"img": "/iso-creator/step-2-select-version-windows.png",
|
||||
"caption": "Scegli una build specifica",
|
||||
"body": "Scegli la build: l’ultima disponibile, un canale Insider Preview o una build precedente ancora elencata."
|
||||
},
|
||||
{
|
||||
"title": "Scegli una lingua",
|
||||
"img": "/iso-creator/step-3-select-version-windows.png",
|
||||
"caption": "Scegli una lingua",
|
||||
"body": "Scegli la lingua da includere nella ISO."
|
||||
},
|
||||
{
|
||||
"title": "Scegli le edizioni",
|
||||
"img": "/iso-creator/step-4-select-version-windows.png",
|
||||
"caption": "Scegli le edizioni da includere",
|
||||
"body": "Scegli le edizioni da includere nella ISO (Home, Pro, Enterprise, …). Puoi combinarne diverse."
|
||||
},
|
||||
{
|
||||
"title": "Copia l'URL",
|
||||
"img": "/iso-creator/step-5-select-version-windows.png",
|
||||
"caption": "Copia l'URL dalla barra degli indirizzi",
|
||||
"bodyRich": "Nella pagina finale, copia l’URL <em>dalla barra degli indirizzi del browser</em>. Deve contenere <code>id=…</code>, <code>pack=…</code> ed <code>edition=…</code>. È la stringa che lo script analizzerà."
|
||||
}
|
||||
]
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Passo 2 · Eseguire il creatore",
|
||||
"intro": "Con l'URL in mano, aprire ProxMenux e lanciare il creatore:",
|
||||
"stepBadge": "Passaggio",
|
||||
"items": [
|
||||
{
|
||||
"title": "Avviare UUP Dump ISO Creator",
|
||||
"img": "/iso-creator/start-uupdump-iso-creator.png",
|
||||
"caption": "Avviare UUP Dump ISO Creator da ProxMenux",
|
||||
"bodyRich": "In ProxMenux, apri <strong>Utilities → UUP Dump ISO Creator</strong>. Lo script controlla dipendenze e directory ISO prima di chiedere i dati."
|
||||
},
|
||||
{
|
||||
"title": "Incolla l'URL di UUP Dump",
|
||||
"img": "/iso-creator/add-url-iso-creator.png",
|
||||
"caption": "Incolla l'URL copiato da uupdump.net",
|
||||
"body": "Incolla l’URL nella finestra di inserimento. Lo script verifica che i tre parametri richiesti siano presenti e si interrompe correttamente se ne manca uno."
|
||||
},
|
||||
{
|
||||
"title": "Attendi il completamento della creazione",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Creazione completata: la ISO è pronta nello storage ISO Proxmox",
|
||||
"bodyRich": "La console mostra l’avanzamento di aria2 e poi l’output del convertitore. La ISO completata viene spostata nella directory di uscita scelta. Se si trova in uno storage ISO Proxmox configurato, può essere selezionata da <strong>Crea VM con Windows → Installa con ISO personale</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "File temporanei",
|
||||
"body": "La cartella temporanea predefinita è <code>/root/uup-temp</code>, con i download in <code>UUPs/</code> e il convertitore in <code>converter/</code>. Un percorso di base personalizzato riceve una sottocartella di sessione separata. I rami di creazione riuscita e di assenza di ISO generata eliminano la sessione temporanea. Errori o annullamenti precedenti possono lasciare file temporanei."
|
||||
}
|
||||
}
|
||||
@@ -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><vssd:VirtualSystemType></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 com o ProxMenux, a VM é criada com um controlador LSI e placas e1000; mude depois para <code>VirtIO SCSI</code> e VirtIO 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."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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 <MiB></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><File ovf:href=\"...vmdk\" ...></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."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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, tmux, ...) 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-<newkver></code> quando disponível; caso contrário, <code>pve-headers-<newkver></code>) e executa <code>dkms autoinstall -k <newkver></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 <newkver></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: 25\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 <pkg></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 perguntas do dpkg durante a atualização",
|
||||
"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 perguntas sobre pacotes e ficheiros de configuração usam os valores predefinidos da tabela seguinte, e um 401 do repositório Enterprise muda para no-subscription sem perguntar. A confirmação da atualização, o resumo da atualização do PVE 8, as reparações das verificações e a pergunta de reinício continuam a ser apresentados.",
|
||||
"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 — o script responde sim às suas próprias perguntas, como mudar para no-subscription após um 401"
|
||||
},
|
||||
{
|
||||
"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. A fase 2 atualiza os pacotes PVE 8 e a fase 3 escreve a configuração dos repositórios do PVE 9. Uma falha interrompe o processo sem reverter essas alterações; se a atualização do PVE 8 falhar ou for cancelada, os repositórios ficam inalterados. A fase 5 executa <code>dist-upgrade</code> para PVE 9.",
|
||||
"flowDiagram": "1. VERIFICAÇÕES\nBloqueia termproxy / vncshell; confirma a atualização; rejeita PVE 9.\n\n2. PREPARAR PVE 8\nscripts/global/update-pve8.sh\nAtualiza os pacotes PVE 8; para se a atualização falhar ou for cancelada.\npve8to9 --full (pode propor reparações).\nVerifica espaço e conectividade; Ceph 19.x Squid em nós hiperconvergentes.\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\nSem subscrição: desativa pve-enterprise.sources.\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-<timestamp>.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>Repositório Enterprise sem subscrição.</strong> O pve-manager 9 adiciona <code>pve-enterprise.sources</code> durante a atualização; no modo no-subscription, o script define-o como <code>Enabled: false</code>.",
|
||||
"<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-<timestamp>.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 && 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>Criar VM com Windows → Instalar com ISO pessoal</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."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Export VM do OVA / OVF | Dokumentácia ProxMenux",
|
||||
"description": "Exportujte VM Proxmox do prenosného archívu OVA alebo adresára OVF pomocou štandardnej schémy DMTF. Disky VMDK vo formáte streamOptimized a manifest SHA1. Import je možný vo VMware ESXi / Workstation / Fusion, VirtualBox aj späť v Proxmoxe.",
|
||||
"ogTitle": "Export VM do OVA / OVF | Dokumentácia ProxMenux",
|
||||
"ogDescription": "Preveďte VM Proxmox na prenosný balík OVA / OVF kompatibilný s VMware a VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Exportovať VM do OVA / OVF",
|
||||
"description": "Prevedie VM Proxmox na prenosný balík OVA (jeden archív TAR) alebo OVF (deskriptor a súbory VMDK) pomocou štandardnej schémy DMTF OVF. Disky sa pomocou qemu-img konvertujú na VMDK vo formáte streamOptimized. Výsledok možno importovať vo VMware (ESXi / Workstation / Fusion), VirtualBox aj späť v Proxmoxe pomocou nástroja na import.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Čo to robí?",
|
||||
"body": "Načíta konfiguráciu zastavenej VM, prevedie každý disk na VMDK vo formáte streamOptimized, vytvorí deskriptor OVF a manifest SHA1 a všetko zabalí do jedného súboru <code>.ova</code> alebo adresára <code>-ovf</code>. Zdrojová VM sa nikdy nemení."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Výber VM",
|
||||
"body": "Po spustení skript zobrazí všetky VM z <code>qm list</code> s VMID, názvom a stavom. Vyberte VM na export:",
|
||||
"imgAlt": "Dialóg výberu VM na export so zoznamom všetkých VM"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "VM musí byť zastavená",
|
||||
"intro": "Konzistentný obraz disku vyžaduje zastavenú VM. Ak vybraná VM beží, ProxMenux ponúkne jej vypnutie:",
|
||||
"items": [
|
||||
"Riadne vypnutie cez <code>qm shutdown $VMID --timeout 120</code> (čaká 2 minúty na vypnutie hosťovského systému cez ACPI).",
|
||||
"Po uplynutí času ponúkne vynútené zastavenie: <code>qm stop $VMID</code> (zodpovedá odpojeniu napájania).",
|
||||
"Ak odmietnete obe možnosti, export sa zruší a žiadne údaje sa nezmenia."
|
||||
],
|
||||
"warnTitle": "Vynútené zastavenie zodpovedá odpojeniu napájania",
|
||||
"warnBody": "<code>qm stop</code> zodpovedá vytiahnutiu napájacieho kábla. Pri ďalšom štarte môže hosťovský systém potrebovať opravu súborového systému. Ak je to možné, použite riadne vypnutie a vynútené zastavenie si nechajte pre hosťovské systémy, ktoré nereagujú."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Volič formátu: OVA vs OVF",
|
||||
"headerFormat": "Formát",
|
||||
"headerOutput": "Výstup",
|
||||
"headerPros": "Výhody",
|
||||
"headerCons": "Nevýhody",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Jeden samostatný súbor, ktorý sa ľahko presúva, prenáša cez sftp alebo pripája k požiadavke podpory.",
|
||||
"cons": "Vyžaduje ~220% virtuálnej veľkosti disku (dodatočný priestor pre archív TAR počas vytvárania)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% virtuálnej veľkosti disku. Jednoduchšia kontrola, pretože deskriptor je textový XML. Pred importom ho možno upraviť.",
|
||||
"cons": "Viac súborov, ktoré sa musia preniesť spoločne."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Cieľový priečinok",
|
||||
"body": "Vyberte prednastavenú cestu (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) alebo zadajte vlastnú. Skript pred začiatkom overí možnosť zápisu do adresára a upozorní na nedostatok voľného miesta.",
|
||||
"calloutTitle": "Orientačný odhad voľného miesta",
|
||||
"calloutBody": "Pri exporte VM s celkovou virtuálnou veľkosťou diskov 100 GB do OVF počítajte s ~120 GB voľného miesta; pri OVA s ~220 GB. Takmer prázdne disky môžu v skutočnosti zaberať menej. Archív OVA sa vytvára pomocou nekomprimovaného TAR, kým dočasné súbory VMDK ešte existujú, preto treba miesto pre oboje. Ak sa miesto minie počas exportu, obsluha EXIT vyčistí dočasný adresár a musíte začať odznova."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Čo balík obsahuje",
|
||||
"intro": "Pre OVA / OVF s názvom <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 sa exportuje",
|
||||
"items": [
|
||||
"<strong>Disky:</strong> všetky položky <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> a <code>ide*</code> v konfigurácii VM, prevedené na VMDK vo formáte streamOptimized.",
|
||||
"<strong>Počet vCPU</strong> (RASD ResourceType 3) a <strong>pamäť</strong> v MiB (ResourceType 4).",
|
||||
"<strong>Počet sieťových kariet</strong> (ResourceType 10: iba počet, nie most ani model).",
|
||||
"<strong>Názov VM</strong> a údaj o type operačného systému."
|
||||
],
|
||||
"notTitle": "Čo sa NEEXPORTUJE",
|
||||
"notItems": [
|
||||
"Pripojené CD-ROM / ISO (zámerne vylúčené).",
|
||||
"Jednotky cloud-init (zámerne vylúčené).",
|
||||
"Konkrétny most a model sieťovej karty (zachová sa iba počet).",
|
||||
"Voľba BIOS / UEFI, ktorú treba pri importe znova nastaviť.",
|
||||
"Konfigurácia priameho priradenia PCI.",
|
||||
"Snímky: zachytí sa iba aktuálny stav.",
|
||||
"Možnosti na úrovni VM (NUMA, hugepages, hotplug, …)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Konverzia disku",
|
||||
"intro": "Každý disk je konvertovaný s:",
|
||||
"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> je formát VMware čitateľný jedným priechodom. Podporujú ho ESXi 6.7+, VMware Workstation, VirtualBox aj samotný Proxmox. Je to najširšie kompatibilný podformát VMDK a vhodná voľba na prenos. Nevýhodou je, že neumožňuje náhodný prístup, takže ho nemožno priamo pripojiť bez konverzie."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "Manifest SHA1",
|
||||
"intro": "Každý balík obsahuje súbor <code>.mf</code> s hashmi SHA1 deskriptora OVF a každého súboru 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": "V špecifikácii OVF je manifest voliteľný a mnohé programy ho ignorujú. Pomáha však overiť, či sa balík preniesol neporušený. Overte ho ručne pomocou <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importovanie výsledku",
|
||||
"intro": "Exportovaný balík možno importovať do:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — použite príslušný nástroj ",
|
||||
"linkLabel": "Importovať VM z OVA / OVF",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; vyberte súbor .ova alebo .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open; vyberte súbor .ova alebo .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance; vyberte súbor .ova alebo .ovf."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Riešenie problémov",
|
||||
"noSpaceTitle": "qemu-img convert zlyhá počas konverzie s chybou \"No space left on device\"",
|
||||
"noSpaceBody": "V cieli sa minulo voľné miesto. Obsluha EXIT automaticky vyčistí dočasný adresár. Vyberte cieľ s väčším voľným miestom podľa odhadu vyššie a export spustite znova.",
|
||||
"unsupportedHwTitle": "Export sa dokončí, ale VMware odmietne import: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Niektoré verzie ESXi odmietajú deskriptory OVF, ktoré deklarujú neznámu rodinu hardvéru. Otvorte .ovf v textovom editore alebo najprv rozbaľte .ova. Nájdite <code><vssd:VirtualSystemType></code> a zmeňte hodnotu na takú, ktorú ESXi prijme, napríklad <code>vmx-13</code> pre ESXi 6.5+. Ako rýchle obídenie problému skúste VirtualBox, ktorý je menej prísny.",
|
||||
"nicTitle": "Importovaná VM používa inú sieťovú kartu alebo radič SCSI",
|
||||
"nicBody": "OVF zachováva počet sieťových kariet, nie ich pôvodný model. Skontrolujte sieťové nastavenia importovanej VM v cieľovom hypervízore. Export deklaruje radič SCSI lsilogic pre kompatibilitu s VMware. Pri spätnom importe do Proxmoxu cez ProxMenux sa VM vytvorí s radičom LSI a kartami e1000; ak má hosťovský systém vhodné ovládače, prepnite potom na <code>VirtIO SCSI</code> a VirtIO.",
|
||||
"runningTitle": "VM bežala a odmietol som jej vypnutie: export sa zrušil",
|
||||
"runningBody": "Skript nemôže vytvoriť konzistentný obraz, keď sa na disky zapisuje. Nabudúce potvrďte vypnutie alebo najprv vypnite VM ručne (<code>qm shutdown $VMID</code>) a export spustite znova.",
|
||||
"slowTitle": "Konverzia disku je pomalá",
|
||||
"slowBody": "<code>qemu-img convert</code> používa jedno vlákno a číta zdroj plnou rýchlosťou. Pri 100 GB disku na mechanickom pevnom disku počítajte s 15–30 minútami. Prenos z NVMe na NVMe je 5–10-krát rýchlejší. Disky VM sa konvertujú postupne a čas rastie lineárne s celkovou virtuálnou veľkosťou."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Súvisiace",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importovať VM z OVA / OVF",
|
||||
"tail": " — doplnkový nástroj na spätný import."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Prehľad pomocných nástrojov",
|
||||
"tail": " — Späť na prehľad sekcie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Import VM z OVA / OVF | Dokumentácia ProxMenux",
|
||||
"description": "Importujte VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux VM do Proxmox VE. Automaticky extrahuje OVA, analyzuje metadáta OVF, vytvorí VM a importuje každý disk ako natívny formát úložiska (qcow2 / raw).",
|
||||
"ogTitle": "Import VM z OVA / OVF | Dokumentácia ProxMenux",
|
||||
"ogDescription": "Importujte do Proxmoxu VM exportované z VMware, VirtualBox alebo ProxMenux. Disky sa automaticky konvertujú do natívneho formátu úložiska."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importovať VM z OVA / OVF",
|
||||
"description": "Importuje balík OVA / OVF do Proxmox VE: rozbalí archívy OVA, z deskriptora OVF načíta vCPU, pamäť, počet sieťových kariet a odkazy na disky, potom vytvorí VM a pomocou qm importdisk importuje každý disk do vybraného úložiska. Kompatibilné s exportmi z VMware (ESXi / Workstation / Fusion), VirtualBox aj ProxMenux.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Čo to robí?",
|
||||
"body": "Vytvorí kompletnú VM v Proxmoxe z prenosného balíka. Po importe je pripravená na spustenie; pre výkon a kompatibilitu sa odporúča skontrolovať model sieťovej karty, firmvér a typ operačného systému."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Vyberač súborov",
|
||||
"intro": "Pri štarte skript ponúka dva prednastavené adresáre alebo manuálnu cestu:",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> — predvolený adresár záloh vzdump v Proxmox.",
|
||||
"<code>/var/lib/vz/template/iso</code> — užitočné, ak ste sem preniesli OVA cez sftp.",
|
||||
"Manuálna cesta pre OVA / OVF súbory kdekoľvek inde na hostiteľovi."
|
||||
],
|
||||
"outro": "To potom uvádza každý súbor <code>.ova</code> a <code>.ovf</code> vo vybranom adresári.",
|
||||
"imageAlt": "Dialóg výberu súboru VM na import"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Ako funguje import",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Vstup OVA / OVF",
|
||||
"detail": ".ova → tar xf do\n /tmp/.proxmenux-import-*\n.ovf → použiť na mieste",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Spracovať + dialógy",
|
||||
"detail": "AWK načíta OVF\n(názov, vCPU, RAM, NIC,\ndisky). Výber\nVMID / úložiska / mosta",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formát úložiska)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "OVF spracovanie",
|
||||
"intro": "Parser <strong>gawk</strong> načíta deskriptor OVF a metadáta VM. Používa <code>match()</code> s tromi argumentmi, čo je rozšírenie gawk, ktoré mawk, predvolený <code>awk</code> v Debiane / Proxmoxe, nepodporuje. Ak gawk chýba, skript ho pri prvom importe nainštaluje cez <code>ensure_repositories</code> + <code>install_single_package</code>. Ďalšie importy tento krok nepotrebujú. Načítané polia:",
|
||||
"headerField": "Pole",
|
||||
"headerSource": "Zdroj v OVF",
|
||||
"headerDefault": "Štandardne, ak chýba",
|
||||
"rows": [
|
||||
{
|
||||
"field": "Názov VM",
|
||||
"source": "<Name> (prvá zhoda)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "Počet vCPU",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Pamäť (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "Počet NIC",
|
||||
"source": "počet ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Typ OS",
|
||||
"source": "/Linux/ alebo /Windows/ v popise",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Odkazy na disk",
|
||||
"source": "href atribúty končiace v .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "Žiadne (import sa zruší)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Nejasnosť pamäťovej jednotky",
|
||||
"body": "Parser prevedie rozpoznané jednotky pamäte na <strong>MiB</strong>, vrátane bajtov, KiB, MiB, GiB a podporovaných textových označení. Chýbajúce alebo neznáme jednotky sa <em>považujú za MiB</em>. Po importe porovnajte <code>qm config $VMID | grep memory</code> so zdokumentovanou RAM zdrojovej VM a podľa potreby ju opravte pomocou <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Postup dialógov importu",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — predvolene ďalší voľný identifikátor (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>Názov VM</strong> — predvolene názov načítaný z OVF; môžete ho zmeniť.",
|
||||
"<strong>Cieľové úložisko</strong> — zoznam úložísk s obsahom <code>images</code> z <code>pvesm status -content images</code>.",
|
||||
"<strong>Sieťový most</strong> — zoznam mostov z <code>ip link show type bridge</code>. Jediný most sa vyberie automaticky; predvolený je <code>vmbr0</code>.",
|
||||
"<strong>Potvrdenie</strong> — súhrn s VMID, názvom, vCPU, pamäťou, sieťovými kartami, úložiskom, mostom a zoznamom diskov na import. Pri zrušení sa nič nemení."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "Vytvorenie VM",
|
||||
"intro": "Po potvrdení skript spustí:",
|
||||
"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": "SCSI radič predvolí <code>lsi</code> (LSI Logic) pre kompatibilitu VMDK. NIC predvolené <code>e1000</code> (univerzálna kompatibilita) na zvolenom moste."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "Cyklus importu diskov",
|
||||
"intro": "Pre každý odkaz na disk v OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importuje disk vo formáte podporovanom cieľovým úložiskom a vytvorí položku <code>unusedN:</code> v konfigurácii VM.",
|
||||
"Skript pomocou grep vyhľadá v konfigurácii práve vytvorený odkaz <code>unusedN</code>.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> Prikladá disk ako <code>scsi0</code>, <code>scsi1</code>, …",
|
||||
"<code>qm set $VMID --delete unusedN</code> — odstráni už nepotrebnú značku unused."
|
||||
],
|
||||
"outro": "Boot je nastavená na prvý SCSI disk: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Odporúčané úpravy po importe",
|
||||
"intro": "Import používa široko kompatibilné nastavenia, aby sa VM podľa možnosti spustila na prvý pokus. Po overení štartu môžete v rozhraní Proxmox alebo cez CLI vybrať výkonnejšie nastavenia:",
|
||||
"headerSetting": "Nastavenie",
|
||||
"headerDefault": "Štandardné po importe",
|
||||
"headerRecommended": "Odporúčané (ak hosť podporuje)",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "Model sieťovej karty",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (oveľa rýchlejšie, potrebuje ovládač v hosťovskom systéme)"
|
||||
},
|
||||
{
|
||||
"setting": "SCSI radič",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (novší Linux alebo Windows s ovládačmi VirtIO)"
|
||||
},
|
||||
{
|
||||
"setting": "Firmvér (BIOS / UEFI)",
|
||||
"default": "Proxmox predvolený (BIOS)",
|
||||
"recommended": "Použite firmvér zdrojovej VM; nesúlad zabráni štartu"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU hosťujúci agent",
|
||||
"default": "Vypnuté",
|
||||
"recommendedRich": "Zapnúť a nainštalovať <code>qemu-guest-agent</code> v hosťovskom systéme (lepšie zálohy a hlásenie IP adries)"
|
||||
},
|
||||
{
|
||||
"setting": "Typ OS",
|
||||
"default": "l26 / win10 / other (heuristika)",
|
||||
"recommended": "Overte podľa skutočného hosťovského operačného systému"
|
||||
},
|
||||
{
|
||||
"setting": "Zobrazenie",
|
||||
"default": "Štandardné",
|
||||
"recommended": "VirtIO-GPU alebo SPICE (lepší výkon konzol)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Nesúlad firmvéru zabráni štartu",
|
||||
"body": "Ak zdrojová VM používala UEFI, ale Proxmox ju vytvorí s BIOS, alebo naopak, hosťovský systém nenájde zavádzací disk. Overte <em>FirmwareType / firmware</em> v OVF alebo v nastaveniach pôvodnej VM a nastavte rovnakú voľbu v Proxmoxe: <code>qm set $VMID --bios ovmf</code> pre UEFI; predvolená hodnota BIOS je <code>seabios</code>."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Čo sa NEIMPORTUJE",
|
||||
"items": [
|
||||
"<strong>Konkrétne sieťové mosty</strong> — zachová sa iba počet kariet. Všetky sa pripoja k mostu vybranému pri importe.",
|
||||
"<strong>Model NIC</strong> – predvolená hodnota je e1000.",
|
||||
"<strong>Typ firmvéru BIOS / UEFI</strong> — použije sa predvolený BIOS Proxmox.",
|
||||
"<strong>Konfigurácia priameho priradenia PCI</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"<strong>Cloud-init</strong> disky.",
|
||||
"<strong>Snímky</strong> — iba aktuálny stav.",
|
||||
"<strong>USB / sériové / paralelné zariadenia</strong> deklarované v OVF.",
|
||||
"<strong>VM možnosti tagov / poznámok / štart-on-boot</strong>."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Riešenie problémov",
|
||||
"orphanTitle": "VM sa vytvorila, ale import diskov zlyhal: zostala čiastočná VM",
|
||||
"orphanIntro": "Pri zlyhaní importu skript ponúkne odstránenie čiastočnej VM aj importovaných diskov. Ak ste odmietli alebo automatické odstránenie zlyhalo, skontrolujte VM a odstráňte ju ručne pomocou:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Potom opravte príčinu, pravdepodobne nedostatok miesta v cieľovom úložisku, a import zopakujte.",
|
||||
"memTitle": "Importovaná VM má 8 MB RAM alebo 8 TB",
|
||||
"memIntro": "Parser prevedie rozpoznané AllocationUnits na MiB. Chýbajúce alebo neznáme jednotky považuje za MiB. Skontrolujte OVF a porovnajte importovanú pamäť so zdrojovou VM. Podľa potreby ju opravte:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "Importovaná VM sa nespustí: \"No bootable device\"",
|
||||
"bootIntro": "Najčastejšia príčina: BIOS / UEFI nesúlad. VM bol UEFI, ale Proxmox ho vytvoril ako BIOS. Nastavte zodpovedajúci firmvér:",
|
||||
"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": "Ďalšia častá príčina: poradie štartu ukazuje na scsi0, ale operačný systém je na scsi1. Upravte poradie na karte Možnosti VM.",
|
||||
"bsodTitle": "VM so systémom Windows exportovaná z VMware zobrazí pri prvom štarte modrú obrazovku",
|
||||
"bsodBody": "Windows je citlivý na zmenu radiča disku. Nainštalujte ovládače VirtIO <em>pred</em> exportom z VMware alebo ponechajte predvolený radič <code>lsi</code>. Na VirtIO SCSI prejdite až po spustení hosťovského systému a inštalácii ovládačov VirtIO vo Windows.",
|
||||
"zeroTitle": "Parser OVF hlási 0 diskov",
|
||||
"zeroBody": "OVF môže používať odkazy na disky, ktoré parser nerozpozná. Otvorte ho a pre každý disk nájdite položku <code><File ovf:href=\"...vmdk\" ...></code>. Ak je disk skutočne VMDK, ale má nezvyčajnú príponu ako <code>.dat</code>, premenujte ho na <code>.vmdk</code> a aktualizujte odkaz v OVF. Premenovanie nekonvertuje formát disku.",
|
||||
"awkTitle": "awk: syntax error at or near , — parser zlyhá pri každom OVA / OVF",
|
||||
"awkIntro": "Parser OVF používa syntax gawk: <code>match()</code> s tromi argumentmi. Tú mawk, predvolený <code>awk</code> v Debiane / Proxmoxe, nepodporuje. Novšie verzie skriptu nainštalujú gawk pri prvom použití cez <code>ensure_repositories</code> + <code>install_single_package</code>. Pri staršej kópii ho nainštalujte ručne:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Potom znovu spustite import.",
|
||||
"netTitle": "Sieť nefunguje po prvom spustení",
|
||||
"netBody": "Hosťovský systém nemusí mať ovládače pre model sieťovej karty e1000 alebo môže byť vybraný nesprávny most. Na karte Hardware VM zmeňte Network Device → Model. V hosťovskom systéme skontrolujte aj <code>ip a</code>: rozhranie môže mať nový názov, napríklad ens18 namiesto eth0, zatiaľ čo sieťové nastavenie stále používa starý názov."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Príslušné súbory",
|
||||
"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": "Súvisiace",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Exportovať VM do OVA / OVF",
|
||||
"tail": " — doplnkový nástroj na export VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Prehľad pomocných nástrojov",
|
||||
"tail": " — Späť na prehľad sekcie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Nástroje Proxmox — UUP Dump, aktualizácia PVE 8 na 9, export/import OVA | ProxMenux",
|
||||
"description": "Každodenné nástroje pre Proxmox VE: vytváranie obrazov ISO systému Windows cez UUP Dump, inštalácia vybraných nástrojov CLI, bezpečná aktualizácia systému Proxmox, prechod z PVE 8 na PVE 9, export VM do OVA / OVF a import VM vo formáte OVA / OVF z VMware alebo VirtualBox.",
|
||||
"ogTitle": "Nástroje Proxmox — UUP Dump, aktualizácia PVE 8 na 9, export/import OVA",
|
||||
"ogDescription": "Vytvárajte obrazy ISO systému Windows, inštalujte nástroje CLI, bezpečne aktualizujte systém, prejdite z PVE 8 na PVE 9 a exportujte alebo importujte VM vo formáte OVA / OVF.",
|
||||
"twitterTitle": "Nástroje Proxmox | ProxMenux",
|
||||
"twitterDescription": "Tvorba ISO, nástroje CLI, aktualizácia Proxmoxu, prechod PVE 8→9 a prenosnosť VM vo formáte OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Pomocné nástroje",
|
||||
"description": "Šesť nástrojov dopĺňa každodennú prácu s Proxmox VE: tvorbu ISO, údržbu systému a prenos VM. Každá možnosť je nezávislá. Vyberte si tú, ktorú potrebujete; nič sa nenainštaluje, kým o to nepožiadate.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Na čo je toto menu",
|
||||
"body": "Tri skupiny nezávislých, ale často potrebných nástrojov: <strong>vytvorenie ISO systému Windows</strong> cez UUP Dump, <strong>údržba hostiteľa Proxmox</strong> (nástroje CLI, aktualizácie a prechod na novú hlavnú verziu) a <strong>import a export VM</strong> v Proxmoxe pomocou štandardného formátu OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Otvorenie menu",
|
||||
"body": "V hlavnom menu ProxMenux vyberte <strong>Utilities</strong>. Zobrazí sa toto:",
|
||||
"imageAlt": "Menu pomocných nástrojov s UUP Dump, systémovými nástrojmi, aktualizáciou, prechodom na novú verziu, exportom a importom"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tri skupiny nástrojov",
|
||||
"intro": "Šesť nástrojov patrí do troch nezávislých skupín. Kliknite na kartu nižšie pre skok do zodpovedajúcej časti.",
|
||||
"iso": {
|
||||
"title": "Tvorba ISO",
|
||||
"body": "Vytvorte oficiálne obrazy ISO systému Windows cez UUP Dump priamo na hostiteľovi Proxmox.",
|
||||
"bullets": [
|
||||
"Zdieľaný odkaz UUP Dump → zavádzací obraz ISO",
|
||||
"Závislosti nainštalované automaticky",
|
||||
"Výsledok sa uloží do adresára šablón ISO v Proxmoxe"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Údržba systému",
|
||||
"body": "Udržiavajte hostiteľa v dobrom stave pomocou nástrojov CLI, pravidelných aktualizácií a prechodu na novú hlavnú verziu, keď príde čas.",
|
||||
"bullets": [
|
||||
"Inštalátor systémových nástrojov (25 nástrojov CLI)",
|
||||
"Aktualizácia systému Proxmox (apt + dist-upgrade)",
|
||||
"Prechod z PVE 8 na PVE 9"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "Prenosnosť VM",
|
||||
"body": "Importujte a exportujte VM v Proxmoxe pomocou štandardného formátu OVA / OVF.",
|
||||
"bullets": [
|
||||
"Exportovať Proxmox VM → OVA / OVF",
|
||||
"Importovať OVA / OVF → Proxmox VM",
|
||||
"Kompatibilný s VMware a VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "Prechod PVE 8 → 9 je deštruktívny a nie je vratný",
|
||||
"body": "Aktualizácia hlavnej verzie prepíše základ Debianu (Bookworm → Trixie) aj súčasti Proxmox priamo na mieste. Nie je k dispozícii automatický návrat: pred začiatkom potrebujete <strong>overené zálohy</strong> každej VM a CT a <strong>prístup ku konzole / IPMI / iKVM</strong>. Preto sa aktualizačný nástroj odmietne spustiť vo webovom termináli Proxmox."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Tvorba ISO",
|
||||
"body": "Vytvorte nový, aktuálny inštalačný obraz ISO systému Windows priamo na hostiteľovi Proxmox. Skript automatizuje celý postup UUP Dump: inštaláciu závislostí (aria2c, cabextract, wimlib-imagex, …), paralelné sťahovanie aktualizačných súborov cez aria2 a konverziu na jeden zavádzací obraz ISO. Ten sa uloží do <code>/var/lib/vz/template/iso</code> a je pripravený na pripojenie k VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Tvorba ISO cez UUP Dump",
|
||||
"description": "Vytvorte aktuálny inštalačný obraz ISO systému Windows zo zdieľaného odkazu UUP Dump. Závislosti, sťahovanie aj konverzia sú plne automatizované. Výsledný obraz ISO sa uloží do /var/lib/vz/template/iso a je pripravený na vytvorenie VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Údržba systému",
|
||||
"body": "Tri nástroje pokrývajú každodenné aj príležitostné úlohy na hostiteľovi. <strong>Inštalátor systémových nástrojov</strong> nastaví nástroje CLI, ktoré využijete po novej inštalácii. <strong>Aktualizácia systému Proxmox</strong> slúži na týždennú alebo mesačnú údržbu. <strong>Prechod z PVE 8 na PVE 9</strong> je veľká zmena pri každej novej hlavnej verzii a zahŕňa dodatočné bezpečnostné kontroly, pretože nie je vratná.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Inštalátor systémových nástrojov",
|
||||
"description": "Výber 25 osvedčených nástrojov CLI (htop, btop, iperf3, tmux, ...) s vlastným výberom alebo preddefinovanými skupinami (základné, vývoj, kompresia, multiplexery, analýza, sieť). Používa štandardný postup s repozitárom a overovacím príkazom.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Aktualizácia systému Proxmox",
|
||||
"description": "Kontrola repozitárov + apt update + apt dist-upgrade s potvrdením pred reštartom. Rozpozná hlavnú verziu PVE (8 alebo 9), zachová nakonfigurované repozitáre a pred prepnutím hostiteľa bez predplatného na repozitár no-subscription požiada o potvrdenie. Potom spustí autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Prechod z PVE 8 na PVE 9",
|
||||
"description": "Prechod na novú hlavnú verziu (Debian Bookworm → Trixie + PVE 8 → 9). Kontroly pred začiatkom, migrácia repozitárov, automatizovaný alebo interaktívny režim, následné overenie a reštart. Odmietne spustenie z webového terminálu.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "Prenosnosť VM (OVA / OVF)",
|
||||
"body": "OVA a OVF sú formáty balíkov na prenos medzi hypervízormi podľa štandardu DMTF. Podporujú ich VMware, VirtualBox a Proxmox. Oba nástroje umožňujú export aj spätný import: VM exportovanú z Proxmoxu možno znova importovať a naopak. Použite ich na migráciu pracovných záťaží z ESXi, vytvorenie prenosnej zálohy VM alebo zdieľanie pripravenej VM s používateľom VirtualBox.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Exportovať VM do OVA / OVF",
|
||||
"description": "Preveďte VM Proxmox na prenosný archív OVA alebo adresár OVF. Štandardná schéma DMTF, manifest SHA1 a disky VMDK vo formáte streamOptimized. Import je možný vo VMware (ESXi / Workstation / Fusion), VirtualBox aj späť v Proxmoxe.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "Importovať VM z OVA / OVF",
|
||||
"description": "Preneste export VMware / VirtualBox / ProxMenux späť do Proxmoxu. Automaticky extrahuje OVA, analyzuje metadáta OVF, vytvorí VM a importuje každý disk ako natívny formát úložiska.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Poznámka k priestoru na disku pri exporte / importe",
|
||||
"body": "Oba nástroje konvertujú formáty diskov: export používa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; import používa <code>qm importdisk</code> na spätnú konverziu do natívneho formátu úložiska (qcow2 / raw). Pri exporte počítajte s <strong>~120% virtuálnej veľkosti disku</strong> pre OVF a <strong>~220%</strong> pre OVA. Archív OVA používa nekomprimovaný TAR a vytvára sa, kým dočasné súbory VMDK ešte existujú. Pred začiatkom overte, či je v cieľovom adresári dostatok voľného miesta."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Ako je menu usporiadané",
|
||||
"body": "Každý nástroj má vlastný skript v <code>scripts/utilities/</code>. Aktualizácia systému Proxmox volá jediný bezpečný skript v <code>scripts/global/</code>, update-pve-safe.sh, ktorý rozpozná hlavnú verziu a obsluhuje PVE 8 aj PVE 9. Prechod PVE 8 → 9 ponúka vo vlastnom menu dve ďalšie akcie: samostatnú <em>Kontrolu pred aktualizáciou</em> (spustí <code>pve8to9 --full</code>) a <em>Príručku na manuálnu aktualizáciu</em> iba na čítanie (postup so 17 krokmi), pre používateľov, ktorí chcú proces skontrolovať alebo vykonať ručne."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aktualizácia systému Proxmox | Dokumentácia ProxMenux",
|
||||
"description": "Aktualizuje balíky v rámci aktuálnej hlavnej verzie Proxmox pomocou apt-get update a apt full-upgrade -y. Kontroluje miesto na disku a repozitáre, skúša obnoviť kľúče GPG, kontroluje a opravuje staré hlavičky PV v LVM, podľa potreby znovu zostaví spravované ovládače DKMS, spustí autoremove/autoclean a ponúkne potrebný reštart.",
|
||||
"ogTitle": "Aktualizácia systému Proxmox | Dokumentácia ProxMenux",
|
||||
"ogDescription": "apt full-upgrade s kontrolou repozitárov, autoremove/autoclean a výzvou na reštart podľa potreby."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aktualizácia systému Proxmox",
|
||||
"description": "Volá jediný pracovný skript (<code>update-pve-safe.sh</code>), ktorý rozpozná hlavnú verziu Proxmox. Nakonfigurované repozitáre načíta cez API Proxmox a zachová ich. Hostiteľ bez predplatného, ktorý používa iba Enterprise, musí potvrdiť prechod na no-subscription. Skript aktualizuje balíky a znovu zostaví ovládače DKMS spravované ProxMenux pre jadro pripravené na ďalší štart. Hlavný skript ponúkne reštart, ak existuje systémová značka alebo sa najnovšie nainštalované jadro líši od spusteného. Pri čakajúcich aktualizáciách možno postup spustiť aj cez <em>Update Now</em> v hlavičke ProxMenux Monitor.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Čo to robí?",
|
||||
"body": "Aktualizuje hostiteľa na najnovšiu úroveň opráv jeho aktuálnej hlavnej verzie. <strong>Neprechádza</strong> na inú hlavnú verziu; pre PVE 8 → PVE 9 pozrite <link>Prechod z PVE 8 na PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "Oficiálne odporúčanie pre Proxmox",
|
||||
"intro": "Proxmox pri aktualizácii bežiaceho hostiteľa v rámci rovnakej hlavnej verzie odporúča spustiť:",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Tento riadok je oficiálnym príkazom pre aktuálne vydania Proxmox. Treba tiež overiť správnosť repozitárov, zapnutie vhodných zdrojov a dobrý stav hostiteľa po aktualizácii."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Čo ProxMenux pridáva: overené v skripte",
|
||||
"intro": "Používa <strong>rovnakú operáciu apt full-upgrade</strong> s kontrolou repozitárov, opätovným zostavením DKMS a následným čistením. Nasledujúce kroky zodpovedajú <code>scripts/utilities/proxmox_update.sh</code> a jeho jedinému pracovnému skriptu <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Rozpozná hlavnú verziu PVE</strong> v pracovnom skripte (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Jeden skript obsluhuje PVE 8 aj PVE 9. Repozitáre sa zachovajú, ak hostiteľ bez predplatného nepotvrdí ponúknutú zmenu.",
|
||||
"<strong>Zachová nakonfigurované repozitáre.</strong> <code>ensure_repositories</code> cez API Proxmox načíta repozitáre a stav predplatného. Pri aktívnom predplatnom alebo už používanom repozitári no-subscription či test nič nemení. Hostiteľ bez aktívneho predplatného s jediným repozitárom Enterprise musí potvrdiť prechod na no-subscription. Pri odmietnutí sa aktualizácia skončí bez zmeny zdrojov.",
|
||||
"<strong>Spustí aktualizáciu neinteraktívne</strong> s <code>DEBIAN_FRONTEND=noninteractive</code> a <code>--force-confdef --force-confold</code>. Pri rozhodovaní o konfiguračných súboroch dpkg prijme predvolenú akciu, ak existuje; inak zachová aktuálny súbor.",
|
||||
"<strong>Nevynucuje voliteľné nástroje.</strong> Bezpečný skript nevnucuje hostiteľovi <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ani podobné balíky. Ak sa inštalácia Proxmox rozhodla niektorý z nich nepoužiť, táto voľba sa zachová. Chýbajúce balíky oznamujú nadradené inštalačné postupy, nie aktualizačný postup.",
|
||||
"<strong>Kontrola a oprava metadát LVM.</strong> Rozpozná staré hlavičky PV a pre dotknuté skupiny zväzkov spustí vgck --updatemetadata a vgchange -ay. Môže zmeniť metadáta LVM; nejde iba o kontrolu s upozorneniami.",
|
||||
"<strong>Potom vyčistí:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>Opätovné zostavenie DKMS pred výzvou na reštart.</strong> Pracovný skript volá <code>pmx_rebuild_dkms_after_kernel</code>, keď je pripravené novšie nainštalované jadro. Hlavný skript kontroluje <code>/var/run/reboot-required</code> a pomocou <code>dpkg-query</code> porovná jadro uvedené v <code>uname -r</code> s najnovšie nainštalovaným balíkom <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code>. Na hostiteľoch bez <code>needrestart</code> môže značka chýbať; porovnanie jadier funguje aj vtedy."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "V jednej vete",
|
||||
"body": "Aktualizuje balíky hostiteľa, zachová repozitáre bez potvrdenej zmeny, skontroluje metadáta LVM, znovu zostaví spravované ovládače DKMS, vyčistí systém cez autoremove/autoclean a podľa potreby ponúkne reštart."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Potvrdzovací dialóg",
|
||||
"intro": "Výber možnosti otvorí súhrn plánovaných krokov a vyžaduje výslovné potvrdenie:",
|
||||
"imageAlt": "Potvrdzovací dialóg aktualizácie Proxmox s kontrolou repozitárov, aktualizáciou balíkov a čistením"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Ako hlavný skript odovzdáva prácu",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Jediný pracovný skript",
|
||||
"detail": "update-pve-safe.sh\n(rozpozná PVE 8 / 9\ninterne)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Po aktualizácii",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nVýzva na reštart podľa potreby"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Čo robí pracovný skript",
|
||||
"intro": "Jeden pracovný skript (<code>scripts/global/update-pve-safe.sh</code>) obsluhuje PVE 8 (<code>bookworm</code>) aj PVE 9 (<code>trixie</code>). Interne rozpozná hlavnú verziu a kontroluje existujúce repozitáre bez prepísania základných zdrojov Debianu. Kroky sú:",
|
||||
"items": [
|
||||
"<strong>Kontroly pred začiatkom.</strong> Overí aspoň ~1 GB voľného miesta v <code>/var/cache/apt/archives</code>. Pri nedostatku miesta sa včas zastaví s jasnou správou, aby nezlyhal uprostred operácie apt.",
|
||||
"<strong>Kontrola repozitárov.</strong> <code>ensure_repositories</code> načíta repozitáre a stav predplatného. Pri použiteľnom repozitári Proxmox nič nemení. Hostiteľ bez aktívneho predplatného s jediným repozitárom Enterprise musí potvrdiť prechod na no-subscription; pri odmietnutí sa aktualizácia skončí.",
|
||||
"<strong>apt update s automatickou obnovou GPG.</strong> Pri <code>NO_PUBKEY</code> pre ľubovoľný repozitár vrátane zdroja tretej strany skript importuje chýbajúci kľúč a automaticky zopakuje pokus pred ohlásením chyby.",
|
||||
"<strong>Čakajúce a bezpečnostné aktualizácie.</strong> Uvedie počet menených balíkov a počet balíkov z bezpečnostnej vetvy, aby potvrdzovací dialóg zobrazoval konkrétne čísla.",
|
||||
"<strong>Potvrdzovací dialóg.</strong> Po obnovení zoznamov balíkov pracovný skript vyžaduje výslovné áno pred aktualizáciou balíkov.",
|
||||
"<strong>apt full-upgrade.</strong> Používa <code>DEBIAN_FRONTEND=noninteractive</code> a <code>--force-confdef --force-confold</code>. Dpkg pri rozhodovaní o konfiguračných súboroch použije predvolenú akciu, ak existuje; inak zachová aktuálny súbor.",
|
||||
"<strong>Kontrola LVM.</strong> <code>lvm_repair_check</code> obnoví metadáta skupín zväzkov, keď sa disky priamo priradené hosťovským VM (DSM, TrueNAS alebo úložné zariadenia) vrátia so starými hlavičkami PV.",
|
||||
"<strong>Opätovné zostavenie ovládačov DKMS spravovaných ProxMenux.</strong> Keď je pripravené nové jadro, <code>pmx_rebuild_dkms_after_kernel</code> načíta ovládače nainštalované ProxMenux zo súboru <code>components_status.json</code> (aktuálne <code>nvidia_driver</code> → modul <code>nvidia</code> a <code>coral_driver</code> → modul <code>gasket</code>), nainštaluje príslušné hlavičky jadra (<code>proxmox-headers-<newkver></code>, ak sú dostupné, inak <code>pve-headers-<newkver></code>) a spustí <code>dkms autoinstall -k <newkver></code>. Ak <code>dkms status</code> nezobrazuje moduly zostavené pre nové jadro, znovu spustí jednotlivé inštalátory s <code>--auto-reinstall</code>. Chyby sa zaznamenajú, ale aktualizáciu nezrušia; postup sa dostane k výzve na reštart.",
|
||||
"<strong>Záverečné čistenie.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> pred odovzdaním riadenia hlavnému skriptu."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Čistenie a reštart po aktualizácii",
|
||||
"intro": "Po dokončení pracovného skriptu hlavný skript spustí:",
|
||||
"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": "Hlavný skript tiež kontroluje potrebu reštartu. Ktorýkoľvek z týchto signálov vyvolá výzvu:",
|
||||
"items": [
|
||||
"Existuje <code>/var/run/reboot-required</code>: balík alebo systémový nástroj označil potrebu reštartovať hostiteľa.",
|
||||
"Najnovšie nainštalovaný balík jadra Proxmox sa líši od spusteného jadra podľa <code>dpkg-query</code> a uname -r."
|
||||
],
|
||||
"outro": "Ak platí niektorá podmienka, dialóg whiptail sa opýta <em>„Niektoré zmeny vyžadujú reštart. Chcete reštartovať teraz?“</em>. Odmietnutím môžete pokračovať s aktuálnym jadrom až do ručného reštartu, napríklad v plánovanom okne údržby."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Čo vidíte na konci",
|
||||
"intro": "Po dokončení pracovného skriptu terminál zobrazí výsledok čistenia a podľa potreby aj výzvu na reštart:",
|
||||
"imageAlt": "Záverečný súhrn aktualizácie Proxmox s výsledkom čistenia a výzvou na reštart"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Reštart odložte iba z konkrétneho dôvodu",
|
||||
"body": "Inštalácia nového balíka <code>proxmox-kernel-*</code> nahradí spustené jadro až po reštarte. Nové jadro a zodpovedajúce moduly sa aktivujú pri ďalšom štarte. Naplánujte vhodné okno údržby a predtým skontrolujte upozornenia na chyby zostavenia DKMS."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Ako pracovný skript zaobchádza s repozitárom Enterprise",
|
||||
"intro": "Proxmox predvolene zapína repozitár Enterprise. Bez aktívneho predplatného vráti pri <code>apt-get update</code> chybu 401. Pracovný skript mení repozitáre iba v tomto prípade a po potvrdení, cez API Proxmox používané v <em>Node → Updates → Repositories</em>. Jednotlivé prípady:",
|
||||
"items": [
|
||||
"Pri <strong>aktívnom predplatnom</strong> sa repozitáre nemenia a aktualizácie poskytuje Enterprise.",
|
||||
"Ak je <strong>repozitár no-subscription alebo test už zapnutý</strong>, repozitáre sa nemenia bez ohľadu na ďalšie nakonfigurované zdroje.",
|
||||
"Pri <strong>chýbajúcom aktívnom predplatnom a jedinom repozitári Enterprise</strong> dialóg ponúkne zmenu. Potvrdenie vypne zdroj Enterprise, zapne no-subscription a obnoví zoznamy balíkov. Zmena sa zaznamená v zobrazení <em>Changes</em> v Audit & Report. Odmietnutie ukončí aktualizáciu bez zmeny zdrojov.",
|
||||
"Prítomné <strong>zdroje Ceph Enterprise</strong> sa vypnú pri rovnakej zmene bez výberu iného kanála Ceph. Hostiteľ používajúci Ceph si jeho kanál nastavuje samostatne.",
|
||||
"Ak <strong>nie je dostupný terminál na potvrdenie</strong>, žiadny zdroj sa nezmení a aktualizácia sa skončí správou s odkazom na <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Zdroje Debianu ani ostatné súbory repozitárov tento postup nikdy neupravuje. Položku kombinujúcu Enterprise s inými komponentmi neprepne: aktualizácia sa zastaví a požiada o rozdelenie položky v zobrazení repozitárov Proxmox."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Čo zohľadniť v klastri",
|
||||
"calloutTitle": "V klastri aktualizujte vždy iba jeden uzol",
|
||||
"calloutBody": "V klastri Proxmox spúšťajte túto možnosť vždy na <strong>jednom uzle</strong> a pred prechodom na ďalší počkajte na dokončenie reštartu. Najprv migrujte hosťovské systémy z uzla, aby nevznikol výpadok služieb celého klastra. Rôzne vedľajšie verzie, napríklad 8.4.1 a 8.4.5, môžu dočasne fungovať spolu niekoľko hodín; rôzne spustené jadrá môžu spôsobiť neočakávané správanie hosťovských systémov spravovaných HA."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Čo to nerobí",
|
||||
"items": [
|
||||
"<strong>Prechod na novú hlavnú verziu.</strong> 8 → 9 je samostatná operácia; pozrite <link>Prechod z PVE 8 na PVE 9</link>.",
|
||||
"<strong>Zálohovanie.</strong> Žiadne snímky ani návrat späť. Operácie apt nie sú transakčné. Zachovajte bežný postup zálohovania (PBS, vzdump, snímky ZFS).",
|
||||
"<strong>Aktualizácie kontajnerov / VM.</strong> Aktualizuje sa iba hostiteľ; hosťovské systémy sa nemenia.",
|
||||
"<strong>Samostatné nahrávanie firmvéru.</strong> Toto nie je nástroj na nahrávanie BIOS alebo firmvéru zariadení. Už nainštalované balíky firmvéru alebo mikrokódu CPU môžu byť aktualizované cez apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Riešenie problémov",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update zlyhá s chybou 401 Unauthorized",
|
||||
"body": "Repozitár Enterprise je zapnutý, ale hostiteľ nemá aktívne predplatné. Pred <code>apt-get update</code> skript ponúkne prechod na no-subscription. Ak ste ho odmietli, spustite aktualizáciu znova a potvrďte ho, alebo vypnite Enterprise v <em>Node → Updates → Repositories</em> a zapnite no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade sa zastaví pri \"Configuring grub-pc\"",
|
||||
"body": "Ak sa zobrazuje interaktívna otázka GRUB, žiada zariadenia na inštaláciu zavádzača. Voľba <code>--force-confold</code> platí pre konfiguračné súbory, nie pre tento výber zariadení. Pomocou <kbd>Tab</kbd> + <kbd>Space</kbd> vyberte príslušné zavádzacie disky a potom OK. Výber možno nastaviť vopred pomocou <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Jadro sa aktualizovalo, ale chýbajú nové moduly externého ovládača",
|
||||
"body": "Pre spravované ovládače (<code>nvidia_driver</code> a <code>coral_driver</code>) funkcia spustí <code>dkms autoinstall -k <newkver></code> a môže zopakovať ich inštalátory s <code>--auto-reinstall</code>. Výsledok skontrolujte cez <code>dkms status</code>. Príkaz autoinstall môže znovu zostaviť aj iné registrované moduly DKMS; náhradné spustenie inštalátorov je obmedzené na spravované položky v <code>components_status.json</code>. Skontrolujte chýbajúce moduly tretích strán a podľa potreby ich zostavte pomocou <code>dkms autoinstall</code>."
|
||||
},
|
||||
{
|
||||
"title": "Výzva na reštart sa nezobrazila, hoci sa nainštalovalo nové jadro",
|
||||
"body": "Signály sú alternatívy: <code>/var/run/reboot-required</code> alebo rozdiel medzi spusteným a najnovšie nainštalovaným jadrom Proxmox. Hlavný skript neanalyzuje položky linux-image v zázname apt. Spustenú verziu overte cez <code>uname -r</code> a nainštalované balíky jadra cez <code>dpkg-query</code>. Potrebný reštart naplánujte alebo vo vhodnom čase spustite <code>shutdown -r now</code>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Príslušné súbory",
|
||||
"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": "Súvisiace",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Prechod z PVE 8 na PVE 9",
|
||||
"tail": " — pre prechod na novú hlavnú verziu s iným nástrojom a bezpečnostným postupom."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Inštalátor systémových nástrojov",
|
||||
"tail": " — na inštaláciu užitočných nástrojov CLI pre aktualizácie (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Prehľad pomocných nástrojov",
|
||||
"tail": " — Späť na prehľad sekcie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Inštalátor systémových nástrojov | Dokumentácia ProxMenux",
|
||||
"description": "Inštalátor nástrojov CLI pre Proxmox VE s 25 balíkmi v hlavnom zozname (htop, btop, iperf3, tmux, ...). Vlastný výber, inštalácia všetkého a preddefinované skupiny (základné, vývoj, kompresia, multiplexery, analýza, sieť). Skupiny môžu obsahovať ďalšie balíky. Používa ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Inštalátor systémových nástrojov | Dokumentácia ProxMenux",
|
||||
"ogDescription": "Nainštalujte vybrané nástroje CLI v Proxmox VE jedným kliknutím alebo vlastným výberom."
|
||||
},
|
||||
"header": {
|
||||
"title": "Inštalátor systémových nástrojov",
|
||||
"description": "Výber 25 nástrojov CLI z hlavného zoznamu PROXMENUX_UTILS. Ponúka vlastný výber, inštaláciu všetkého, šesť preddefinovaných skupín a overenie inštalácií. Skupiny môžu obsahovať nástroje mimo hlavného zoznamu. Používa spoločné funkcie ensure_repositories() + install_single_package() na jednotnú správu repozitárov a správy o jednotlivých balíkoch.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"info": {
|
||||
"title": "Čo to robí?",
|
||||
"body": "Inštaluje nástroje CLI zo zoznamu 25 balíkov. Každá inštalácia používa rovnaký postup: <code>ensure_repositories</code> overí použiteľný repozitár Proxmox pre spustenú hlavnú verziu PVE; potom <code>install_single_package</code> nainštaluje balík a overí dostupnosť príkazu v PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Otvorenie inštalátora",
|
||||
"intro": "Z menu Utilities vyberte <strong>System Utilities Installer</strong>. Hlavné menu ponúka deväť možností:",
|
||||
"imageAlt": "Menu inštalátora systémových nástrojov s vlastným výberom, ALL, preddefinovanými skupinami a overením"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "9 akcií menu",
|
||||
"headerOption": "Možnosť",
|
||||
"headerBehaviour": "Správanie",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Vlastný výber",
|
||||
"behaviourRich": "Výberový zoznam všetkých 25 balíkov. SPACE prepína označenie a ENTER potvrdzuje; nainštalujú sa iba vybrané balíky."
|
||||
},
|
||||
{
|
||||
"option": "2. Nainštalovať všetky nástroje",
|
||||
"behaviourRich": "Nainštaluje všetky balíky z <code>PROXMENUX_UTILS</code> naraz. Použite po novej inštalácii Proxmox."
|
||||
},
|
||||
{
|
||||
"option": "3. Základné",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Vývoj",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Kompresia",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Terminálne multiplexéry",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analýza",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Sieť",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Overiť inštalácie",
|
||||
"behaviourRich": "Prejde každú položku v <code>PROXMENUX_UTILS</code>, overí dostupnosť príkazu v PATH a vypíše súhrn Dostupné / Chýbajúce."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "25 balíkov",
|
||||
"intro": "Definované v spoločnom súbore <code>scripts/global/utils-install-functions.sh</code> ako <code>PROXMENUX_UTILS</code> (formát: <code>package:verify_command:description</code>). Ďalšie skripty ProxMenux, napríklad spúšťanie sieťových nástrojov iftop / iptraf-ng / iperf3, tieto položky používajú tiež, aby balík a overovací príkaz zostali zosúladené.",
|
||||
"headerPackage": "Balík",
|
||||
"headerVerify": "Overovací príkaz",
|
||||
"headerDescription": "Popis",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Urýchľovač sťahovania"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Sťahovanie z viacerých zdrojov"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Moderný monitor zdrojov"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Extrahovať CAB súbory"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Upraviť register Windows / heslá"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Previesť DOS / Unix textové súbory"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "Vytváranie obrazov ISO"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Všeobecné farebné zvýrazňovanie záznamov"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Interaktívny prehliadač procesov"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Používanie siete v reálnom čase"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Nástroje Intel GPU"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Monitorovanie diskových vstupov a výstupov"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Testovanie šírky pásma siete"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Správa množín IP adries"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Nástroj monitorovania siete"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Nástroje pre disky VM"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Prístup k registrom MSR procesora"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Staršie sieťové nástroje"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Rýchlo nájsť súbory"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Neinteraktívne prihlásenie SSH"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Terminálny multiplexer"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "Extrakcia ZIP súborov"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Správa obrazov WIM"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Vytvoriť ZIP súbory"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Ako funguje inštalácia jedného balíka",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> rozpozná PVE 8 alebo 9 a načíta repozitáre cez API Proxmox. Pri použiteľnom repozitári Proxmox nič nemení. Hostiteľ bez aktívneho predplatného s jediným repozitárom Enterprise musí potvrdiť prechod na no-subscription. Po potvrdenej zmene sa spustí <code>apt-get update</code>.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> spustí <code>apt-get install -y \"$pkg\"</code> so správami (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Po inštalácii sa overovací príkaz skontroluje pomocou <code>command -v \"$verify_cmd\"</code>. Možné sú tri výsledky:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (úspech):</strong> príkaz je dostupný a balík sa počíta ako <em>Úspešný</em>.",
|
||||
"<strong>1 (zlyhanie):</strong> apt zlyhal a balík sa počíta ako <em>Neúspešný</em>.",
|
||||
"<strong>2 (upozornenie):</strong> apt uspel, ale očakávaný príkaz sa nenašiel v PATH; balík sa počíta ako <em>S upozorneniami</em>."
|
||||
],
|
||||
"summary": "Na konci skupinovej/vlastnej inštalácie sa v súhrnnom dialógovom okne zobrazí počet <em>Úspešné / S upozorneniami / Neúspešné</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Overiť inštalácie",
|
||||
"intro": "Možnosť 9 je iba na čítanie: prejde <code>PROXMENUX_UTILS</code> a spustí <code>command -v</code> pre každý príkaz. Výstup vyzerá takto:",
|
||||
"code": "Total: 25\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": "Užitočné pred spustením skriptov závislých od týchto nástrojov. Napríklad <code>uup_dump_iso_creator.sh</code> potrebuje <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>. Ak niečo chýba, nainštalujte príslušnú skupinu alebo vyberte chýbajúce balíky jednotlivo."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Riešenie problémov",
|
||||
"reposTitle": "„Repozitáre sa nepodarilo nastaviť. Inštalácia sa zrušila.“",
|
||||
"reposBody": "Kontrola repozitárov zlyhala: prechod na no-subscription bol odmietnutý, stav predplatného sa nedal načítať alebo položka repozitára potrebuje zásah. Príčinu uvádza predchádzajúca správa. Repozitáre sú v <em>Node → Updates → Repositories</em>; príkaz <code>apt-get update</code> v konzole zobrazí chybu apt.",
|
||||
"warningsTitle": "Balíček je hlásený \"S upozorneniami,\" ale príkaz funguje po zatvorení menu",
|
||||
"warningsBody": "Po <code>apt-get install</code> funkcia spustí <code>hash -r</code>, krátko počká a overí očakávaný príkaz cez <code>command -v</code>. Upozornenie znamená, že kontrola stále zlyhala, ale neurčuje príčinu. Skúste nový shell a ak príkaz stále chýba, overte inštaláciu balíka a PATH.",
|
||||
"hangsTitle": "Apt inštalácia visí",
|
||||
"hangsBody": "Pravdepodobne je otázka debconf skrytá za potlačeným výstupom. Skript pri volaniach apt používa <code>DEBIAN_FRONTEND=noninteractive</code>, čo zvyčajne otázky potlačí, ale niektoré balíky stále potrebujú vstup. Zrušte operáciu pomocou <kbd>Ctrl</kbd>+<kbd>C</kbd> a ručne spustite <code>apt-get install -y <pkg></code> v shelli, aby ste otázku videli a mohli rozhodnúť."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Príslušné súbory",
|
||||
"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": "Súvisiace",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aktualizácia systému Proxmox",
|
||||
"tailRich": " — pre samotný <code>apt dist-upgrade</code> na hostiteľovi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Živé monitorovacie nástroje (Sieť)",
|
||||
"tailRich": " — používa iftop / iptraf-ng / iperf3 z rovnakého zoznamu."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Prehľad pomocných nástrojov",
|
||||
"tailRich": " — Späť na prehľad sekcie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aktualizácia PVE 8 na PVE 9 | Dokumentácia ProxMenux",
|
||||
"description": "Tri spôsoby prechodu z Proxmox VE 8 na 9 (Debian Bookworm na Trixie a PVE 8 na 9): automaticky, interaktívne alebo ručne podľa oficiálneho postupu. Kontrola pve8to9, migrácia repozitárov, dist-upgrade a záverečné overenie. Spustenie z webového terminálu je zablokované.",
|
||||
"ogTitle": "Aktualizácia PVE 8 na PVE 9 | Dokumentácia ProxMenux",
|
||||
"ogDescription": "Tri postupy (automatický, interaktívny a ručný) na prechod z Proxmox VE 8 na 9."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aktualizácia PVE 8 na PVE 9",
|
||||
"description": "Vykoná prechod z Proxmox VE 8 na 9 podľa oficiálneho postupu: Debian Bookworm na Trixie a PVE 8 na 9. Ponúka automatický, interaktívny a ručný postup aj samostatnú predbežnú kontrolu. Webový terminál blokuje, pretože prerušenie spojenia počas aktualizácie môže poškodiť systém hostiteľa.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"dangerCallout": {
|
||||
"title": "Prechod na novú hlavnú verziu je nevratný",
|
||||
"intro": "Táto operácia nahradí základ Debianu (Bookworm → Trixie) a súčasti Proxmoxu priamo v systéme. <strong>Návrat na pôvodnú verziu nie je možný</strong>. Pred začiatkom:",
|
||||
"items": [
|
||||
"<strong>Overené zálohy</strong> všetkých VM a CT (PBS, vzdump, snímky ZFS — overte aj obnovu).",
|
||||
"<strong>Prístup cez konzolu / IPMI / iKVM</strong> k hostiteľovi pre prípad výpadku SSH.",
|
||||
"Hostiteľ už používa aktuálnu PVE 8.4.x (skript to vynucuje).",
|
||||
"Ceph (ak je k dispozícii) vo verzii 19.x Squid.",
|
||||
"Aspoň <strong>5 GB voľného miesta</strong> v koreňovom súborovom systéme."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
"heading": "Menu režimu",
|
||||
"intro": "Voľba otvorí štyri položky: Automaticky, Interaktívne, Predbežná kontrola a Ručný návod. Tri možnosti aktualizáciu <em>vykonajú</em> alebo vysvetlia jej postup; samostatná kontrola <em>overí</em> pripravenosť a môže ponúknuť opravy.",
|
||||
"imageAlt": "Ponuka aktualizácie PVE 8 na 9: automaticky, interaktívne, predbežná kontrola a ručný návod"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Tri spôsoby aktualizácie",
|
||||
"intro": "Automatický a interaktívny režim používajú rovnaký postup s predbežnými aj záverečnými kontrolami. Líšia sa odpoveďami na otázky dpkg počas <code>dist-upgrade</code>. Ručný návod zobrazí príkazy vrátane kontrol; každý krok musíte vykonať sami.",
|
||||
"auto": {
|
||||
"title": "Automatické / bez dozoru",
|
||||
"summary": "Nastaví <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. Pri upravených konfiguračných súboroch použije dpkg predvolenú akciu, ak existuje; inak <strong>ponechá aktuálny súbor</strong> (<code>--force-confold</code>).",
|
||||
"items": [
|
||||
"Najrýchlejšie — počas aktualizácie žiadne otázky dpkg",
|
||||
"Vhodné pre štandardné inštalácie bez vlastných úprav konfigurácie",
|
||||
"Riziko: upravený súbor sa ponechá bez otázky a môže prekryť nové predvolené nastavenia"
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"title": "Interaktívny",
|
||||
"summary": "Rovnaký postup, ale na každú otázku dpkg o konflikte konfigurácie odpovedáte sami. Pomalšie, no s úplným prehľadom.",
|
||||
"items": [
|
||||
"Vidíte každý konflikt a rozhodnite sa.",
|
||||
"Najlepšie keď máte prispôsobené <code>/etc/lvm</code>, <code>/etc/ssh</code>, atď.",
|
||||
"Pozrite si tabuľku odporúčaných odpovedí v ručnom postupe nižšie"
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Príručka manuálnej aktualizácie",
|
||||
"summary": "Zobrazí oficiálny postup Proxmoxu v 17 krokoch bez jeho vykonania. Príkazy spúšťajte ručne v samostatnom shelli.",
|
||||
"items": [
|
||||
"Úplná kontrola — každý príkaz zadávate sami",
|
||||
"Najlepšie, keď sa chcete naučiť postup alebo neveríte ničomu",
|
||||
"Skript zobrazuje kroky; nič nie je spustené automaticky"
|
||||
]
|
||||
}
|
||||
},
|
||||
"precheckCallout": {
|
||||
"title": "Plus samostatná predbežná kontrola",
|
||||
"body": "Možnosť 3 — <strong>Spustiť kontrolu PVE 8 na 9</strong> — spustí oficiálny nástroj <code>pve8to9 --full</code>, ponúkne opravy bežných problémov a potom <strong>skončí</strong>. Použite ju pred aktualizáciou alebo po ručných opravách. Automatický a interaktívny režim kontrolu tiež spúšťajú; v ručnom návode ju spúšťate sami."
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Prečo je webový terminál zablokovaný?",
|
||||
"body": "Všetky tri režimy zistia <code>termproxy</code> / <code>vncshell</code> v reťazci rodičovských procesov a odmietnu spustenie. Webový terminál závisí od služby <code>pveproxy</code>, ktorá sa počas aktualizácie mení. Po reštarte <code>pveproxy</code> sa ukončí terminál aj skript v ňom. Hostiteľ môže zostať aktualizovaný iba čiastočne.",
|
||||
"warningTitle": "Použite SSH alebo fyzickú konzolu / IPMI / iKVM",
|
||||
"warningBody": "Najčastejšou voľbou je SSH. Spustite ho v <code>tmux</code> alebo <code>screen</code>, aby krátky výpadok siete neprerušil aktualizáciu. Pri bežnom SSH shelli skript najprv zobrazí pripomienku tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatický režim / Bezobslužne",
|
||||
"intro": "Otázky k balíkom a konfiguračným súborom používajú predvolené hodnoty z nasledujúcej tabuľky a odpoveď 401 z repozitára Enterprise prepne na no-subscription bez opýtania. Potvrdenie aktualizácie, súhrn aktualizácie PVE 8, opravy z predbežnej kontroly a otázka na reštart sa naďalej zobrazujú.",
|
||||
"behaviourHeading": "Správanie automatického režimu",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Nastavenie",
|
||||
"effectHeader": "Účinok",
|
||||
"rows": [
|
||||
{
|
||||
"settingRich": "<code>ASSUME_YES=1</code>",
|
||||
"effectRich": "Interná voľba — skript sám odpovie áno na svoje otázky, napríklad na prechod na no-subscription po chybe 401"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
|
||||
"effectRich": "apt / dpkg sa spúšťajú bez otázok debconf"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confdef</code>",
|
||||
"effectRich": "Pre nedotknuté konfiguračné súbory: nainštalujte novú verziu správcu"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confold</code>",
|
||||
"effectRich": "Pri upravených súboroch: predvolená akcia dpkg, ak existuje; inak <strong>ponechať vašu verziu</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"flowHeading": "Postup automatického režimu",
|
||||
"flowIntro": "Šesť po sebe idúcich fáz. Fáza 2 aktualizuje balíky PVE 8 a fáza 3 zapíše konfiguráciu repozitárov PVE 9. Chyba postup zastaví, tieto zmeny však nevráti; ak aktualizácia PVE 8 zlyhá alebo sa zruší, repozitáre zostanú nezmenené. Fáza 5 vykoná <code>dist-upgrade</code> na PVE 9.",
|
||||
"flowDiagram": "1. KONTROLY\nBlokuje termproxy / vncshell; potvrdí aktualizáciu; odmietne PVE 9.\n\n2. PRÍPRAVA PVE 8\nscripts/global/update-pve8.sh\nAktualizuje balíky PVE 8; zastaví sa, ak aktualizácia zlyhá alebo sa zruší.\npve8to9 --full (môže ponúknuť opravy).\nOverí miesto a pripojenie; Ceph 19.x Squid na hyperkonvergovaných uzloch.\n\n3. MIGRÁCIA REPOZITÁROV\nBookworm → Trixie; zapíše súbory deb822 .sources.\nZakomentuje staré súbory .list; apt-get update.\n\n4. OVERENIE KANDIDÁTA PVE 9\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nZastaví sa, ak kandidát nie je 9.x alebo by sa odstránil proxmox-ve.\n\n5. AKTUALIZÁCIA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nBez predplatného: vypne pve-enterprise.sources.\nProtokol: /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. OVERENIE A REŠTART\nEFI: apt install grub-efi-amd64\npve8to9 --full; skontrolujte výsledok a otázku na reštart.",
|
||||
"preflightHeading": "Kontroly pred aktualizáciou",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Kontrola",
|
||||
"whyHeader": "Prečo na tom záleží",
|
||||
"rows": [
|
||||
{
|
||||
"checkRich": "<strong>Blok webového terminálu</strong>",
|
||||
"whyRich": "Zabráni tomu, aby aktualizácia ukončila shell, v ktorom beží"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Už na 9.x</strong>",
|
||||
"whyRich": "Skončí, ak hostiteľ už používa PVE 9 — nie je čo aktualizovať"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Najnovšia verzia PVE 8.4.x</strong>",
|
||||
"whyRich": "Najprv aktualizuje PVE 8 na najnovšiu revíziu pomocou príslušného skriptu; staré verzie 8.x majú odlišné požiadavky"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>pve8to9 --full</strong>",
|
||||
"whyRich": "Kontrola pripravenosti od Proxmoxu; chyby FAIL blokujú aktualizáciu, kým ich neopravíte"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Miesto na disku</strong>",
|
||||
"whyRich": "≥ 1024 MB voľného miesta v <code>/var/cache/apt/archives</code> pre stiahnuté súbory .deb"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Pripojenie</strong>",
|
||||
"whyRich": "Ping na <code>download.proxmox.com</code> — pri zlyhaní sa aktualizácia nezačne"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ceph 19.x Squid</strong>",
|
||||
"whyRich": "Ak je Ceph nainštalovaný, musí už používať 19.x. PVE 9 nefunguje s Ceph 17/18. Voľby <code>--ignore-ceph-check</code> a <code>--warn-ceph-check</code> obchádzajú kontrolu; používajte ich len so znalosťou dôsledkov."
|
||||
}
|
||||
]
|
||||
},
|
||||
"distUpgradeHeading": "Príkaz dist-upgrade (automatický režim)",
|
||||
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
|
||||
"distUpgradeOutro": "Výstup sa zobrazuje v reálnom čase na stdout a ukladá sa aj do <code>/var/log/pve8-a-pve9-<timestamp>.log</code>. Vidíte všetko; vynechané sú len otázky.",
|
||||
"postHeading": "Úlohy po aktualizácii (automatický režim)",
|
||||
"postItems": [
|
||||
"<strong>Hostitelia EFI:</strong> nainštaluje <code>grub-efi-amd64</code> podľa známeho problému v dokumentácii Proxmoxu. Aktualizácia ho nepridá automaticky a pri ďalšom štarte môže byť potrebný.",
|
||||
"<strong>Repozitár Enterprise bez predplatného.</strong> pve-manager 9 počas aktualizácie pridá <code>pve-enterprise.sources</code>; v režime no-subscription ho skript nastaví na <code>Enabled: false</code>.",
|
||||
"<strong>Znova spustí <code>pve8to9 --full</code>.</strong> Zobrazí zostávajúce problémy. Pri chybách FAIL sa otvorí rovnaká ponuka opráv ako pri predbežnej kontrole.",
|
||||
"<strong>Otázka na reštart.</strong> Reštart sa odporúča na načítanie nového jadra a služieb. Odmietnite ho iba z konkrétneho dôvodu: ponechanie starého jadra po prechode na novú hlavnú verziu prináša riziko."
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"heading": "Interaktívny režim",
|
||||
"intro": "Rovnaký postup ako <autolink>automatický režim</autolink>: rovnaké kontroly, migrácia repozitárov aj záverečné overenie. Rozdiel je pri <code>dist-upgrade</code>: <strong>na každú otázku dpkg o konflikte konfigurácie odpovedáte sami</strong>. ProxMenux spustí <code>apt-get dist-upgrade</code> bez volieb <code>--force-conf*</code>.",
|
||||
"distUpgradeHeading": "Dist-upgrade príkaz (interaktívny režim)",
|
||||
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
|
||||
"whenHeading": "Keď interaktívne je správna voľba",
|
||||
"whenItems": [
|
||||
"Prispôsobili ste <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> alebo akýkoľvek iný konfiguračný súbor, ktorý sa dotkne aktualizácie.",
|
||||
"Chcete vidieť, ktoré balíky spôsobujú konflikty, a rozhodnúť o každom súbore.",
|
||||
"Vylepšujete producenta, kde je akákoľvek skrytá zmena neprijateľná."
|
||||
],
|
||||
"promptCalloutTitle": "Čo odpovedať na každú výzvu",
|
||||
"promptCalloutBody": "Platia rovnaké odporúčania ako pri ručnom postupe: pozrite <dpkglink>Odporúčané odpovede na otázky dpkg</dpkglink> nižšie. Pomocou <strong>D</strong> zobrazíte rozdiely, pomocou <strong>Z</strong> otvoríte shell."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Postup manuálnej aktualizácie",
|
||||
"intro": "Toto zobrazí možnosť <strong>Ručný návod na aktualizáciu</strong>: <wikilink>oficiálny wiki návod Proxmoxu z 8 na 9</wikilink>, rozdelený do štyroch fáz. Skript príkazy <em>zobrazí</em>; vykonáte ich sami v samostatnom shelli používateľa root. Každý krok máte pod kontrolou.",
|
||||
"rootCalloutTitle": "Všetky príkazy vyžadujú root",
|
||||
"rootCalloutBody": "Použite shell používateľa root aj pre presmerovania a dokumenty here-document. Pri <code>sudo</code> zabezpečte, aby sa s oprávneniami root vykonal celý príkaz.",
|
||||
"phase1Heading": "Fáza 1 — Príprava",
|
||||
"phase1Intro": "Aktualizujte hostiteľa na najnovšiu PVE 8.4.x, overte verziu a používaný Ceph, spustite kontrolu Proxmoxu a terminálový multiplexor na prežitie výpadkov spojenia.",
|
||||
"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": "Fáza 2 — Migrácia repozitárov",
|
||||
"phase2Intro": "Zmeňte všetky repozitáre Debianu a Proxmoxu z Bookworm na Trixie a zdroje Proxmoxu preveďte na deb822. <strong>Vyberte krok 7 ALEBO 8</strong> podľa predplatného Enterprise. Bez Ceph vynechajte krok 9.",
|
||||
"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": "Fáza 3 — dist-upgrade",
|
||||
"phase3Intro": "Samotná aktualizácia. Krok 12 je voliteľný, ale odporúčaný na obmedzenie správ auditu. Krok 13 trvá dlhšie: odpovedajte podľa tabuľky. Krok 13.1 je iba pre EFI a vychádza zo známych problémov v oficiálnom návode.",
|
||||
"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": "Odporúčané odpovede na otázky dpkg",
|
||||
"dpkgIntro": "Odporúčania Proxmoxu: <strong>Y</strong> nainštaluje nový súbor správcu balíka a prepíše váš; <strong>N</strong> ponechá aktuálny súbor. Pri pochybnostiach najprv skontrolujte rozdiely:",
|
||||
"dpkgTable": {
|
||||
"fileHeader": "Súbor / otázka",
|
||||
"answerHeader": "Odporúčaná odpoveď",
|
||||
"whyHeader": "Prečo?",
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "/etc/issue",
|
||||
"answerRich": "<strong>N</strong> (ponechať aktuálny súbor)",
|
||||
"whyRich": "Ponechá prihlasovací oznam, na ktorý ste zvyknutí",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/lvm/lvm.conf",
|
||||
"answerRich": "<strong>Y</strong> (verzia správcu balíka)",
|
||||
"whyRich": "PVE 9 potrebuje nové predvolené nastavenia LVM",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/ssh/sshd_config",
|
||||
"answerRich": "<strong>Y</strong> pri iba predvolených zmenách; vlastné úpravy najprv skontrolujte",
|
||||
"whyRich": "Pred nahradením súboru overte miestne nastavenia SSH a zachovajte prístup. Predvolené zmeny zahŕňajú premenované voľby a komentáre.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/default/grub",
|
||||
"answerRich": "<strong>N</strong> v prípade prispôsobenia",
|
||||
"whyRich": "Sú tu parametre zavádzania, napríklad IOMMU a PCI passthrough",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/chrony/chrony.conf",
|
||||
"answerRich": "<strong>Y</strong>, ak nebol upravený; miestne nastavenia najprv zachovajte",
|
||||
"whyRich": "Trixie mení predvolené nastavenia synchronizácie času. Pred prijatím nového súboru presuňte miestne nastavenia do adresárov conf.d / sources.d programu chrony.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "Reštarty služieb počas aktualizácie",
|
||||
"answerRich": "<strong>Áno</strong> (predvolené)",
|
||||
"whyRich": "Reštartuje väčšinu služieb bez reštartu hostiteľa",
|
||||
"fileFont": false
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>apt-listchanges</code>",
|
||||
"answerRich": "Stlačte <kbd>q</kbd>",
|
||||
"whyRich": "Ukončí iba prehliadač textu; zobrazené informácie sú súhrnom zmien",
|
||||
"fileFont": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"inspectCalloutTitle": "Kontrola špecifického dpkg konfliktu",
|
||||
"inspectCalloutBody": "Pri otázke dpkg o konfiguračnom súbore zobrazí <strong>D</strong> rozdiely medzi vaším súborom a novou verziou; <strong>Z</strong> otvorí shell na ďalšie overenie. Rozhodnutie tak nemusíte odhadovať.",
|
||||
"phase4Heading": "Fáza 4 — Po aktualizácii",
|
||||
"phase4Intro": "Overte úspešné dokončenie, reštartujte na jadro PVE 9 a potvrďte verziu. Potom môžete zostávajúce staré súbory <code>.list</code> previesť na 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": "Klaster a Ceph",
|
||||
"clusterCalloutTitle": "Klaster: aktualizujte uzly po jednom",
|
||||
"clusterCalloutBody": "Zistené cez <code>pvecm status</code>. <strong>Neaktualizujte</strong> viac uzlov naraz. Presuňte hostí, aktualizujte uzol, reštartujte a overte členstvo v klastri. Až potom pokračujte. Počas aktualizácie funguje živá migrácia zo staršej verzie PVE na novšiu; opačný smer spravidla nie je podporovaný. Skupiny HA sa automaticky prevedú na pravidlá HA, keď všetky uzly používajú PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: NAJPRV inovujte Ceph, potom Proxmox",
|
||||
"cephCalloutBody": "Ceph musí pred aktualizáciou Proxmoxu už používať 19.x Squid. Postupujte v oficiálnom poradí Quincy 17 → Reef 18 → Squid 19: aktualizujte balíky a postupne reštartujte démony Ceph podľa návodu. Pred každým uzlom Proxmoxu overte <code>ceph --version</code>. Celý postup: <cephlink>wiki aktualizácie Ceph Reef na Squid</cephlink>."
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Riešenie problémov",
|
||||
"items": [
|
||||
{
|
||||
"title": "Skript skončí: \"This script cannot be executed from the Proxmox web terminal\"",
|
||||
"bodyRich": "Otvorte SSH alebo konzolu / IPMI / iKVM a spustite ho odtiaľ. Najprv použite <code>tmux new -s pveupgrade</code>, aby krátky výpadok siete neprerušil beh."
|
||||
},
|
||||
{
|
||||
"title": "pve8to9 hlási FAIL a oprava cez možnosť 1 hlási \"command not found\"",
|
||||
"bodyRich": "Ak chyba spomína <code>configure_repositories</code>, kópia skriptu je zastaraná. Aktuálna oprava používa cleanup_duplicate_repos a ensure_repositories. Aktualizujte ju alebo cez možnosť 2 skontrolujte ručné príkazy. <code>apt-get update</code> obnoví zoznamy balíkov, ale nevyrieši všetky blokujúce kontroly."
|
||||
},
|
||||
{
|
||||
"title": "Simulácia apt hlási \"proxmox-ve will be REMOVED\"",
|
||||
"bodyRich": "Nové repozitáre sú nedostupné alebo sa nezmenil názov vydania. Skontrolujte <code>cat /etc/apt/sources.list.d/proxmox.sources</code>: riadok <code>Suites:</code> musí obsahovať <code>trixie</code>, nie <code>bookworm</code>. <code>apt-cache policy proxmox-ve</code> musí zobrazovať kandidáta 9.x z nového repozitára."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade zlyhá čiastočne cez",
|
||||
"bodyRich": "Opravte závislosti pomocou <code>apt-get -f install</code> a zopakujte aktualizáciu. Ak zlyhá, pozrite koniec protokolu <code>/var/log/pve8-a-pve9-<timestamp>.log</code>. Nereštartujte, kým <code>dpkg -l | grep ^iU</code> nevráti prázdny výstup."
|
||||
},
|
||||
{
|
||||
"title": "EFI host nebude štartovať po reštarte",
|
||||
"bodyRich": "Po aktualizácii sa inštaluje <code>grub-efi-amd64</code>. Ak ste krok vynechali alebo zlyhal, spustite ISO Proxmoxu v záchrannom režime, pripojte koreňový súborový systém, použite chroot a <code>apt-get install grub-efi-amd64 && update-grub</code>."
|
||||
},
|
||||
{
|
||||
"title": "GUI sa po aktualizácii nenačíta",
|
||||
"bodyRich": "Spustite <code>systemctl status pveproxy</code> a <code>systemctl restart pveproxy</code>. Ak problém pretrváva, pozrite chybu cez <code>journalctl -u pveproxy -b</code>."
|
||||
},
|
||||
{
|
||||
"title": "Sieť nefunguje po reštarte",
|
||||
"bodyRich": "Overte, že <code>/etc/network/interfaces</code> odkazuje na existujúce zariadenia a je nainštalovaný <code>ifupdown2</code>: <code>apt install ifupdown2</code>. Pri zmene názvov pozrite <netlink>Trvalé názvy sieťových rozhraní</netlink>."
|
||||
},
|
||||
{
|
||||
"title": "Split-brain klastra po aktualizácii jedného uzla",
|
||||
"bodyRich": "Zmiešané klastre PVE 8 / PVE 9 sú počas aktualizácie podporované. Živá migrácia zo starších na novšie verzie funguje; opačný smer spravidla nie je podporovaný. Ak sa uzol javí odpojený, skontrolujte <code>corosync</code> a konfiguráciu QDevice / siete. Na každom uzle spustite <code>pvecm status</code> na overenie kvóra."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Príslušné súbory",
|
||||
"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": "Oficiálne zdroje",
|
||||
"intro": "Ručný postup skriptu vychádza z týchto oficiálnych zdrojov. Pri pochybnostiach počas aktualizácie postupujte podľa oficiálneho wiki: ProxMenux pomáha s vykonaním, rozhodujúci je návod Proxmoxu.",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
|
||||
"title": "Aktualizácia z 8 na 9",
|
||||
"desc": "Hlavná stránka Proxmox wiki pre aktualizáciu 8 → 9. Zdroj pravdy pre každý príkaz v manuálnom postupe vyššie."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
|
||||
"title": "Aktualizácia na Ceph Squid (19.x)",
|
||||
"desc": "Povinný predbežný krok pre hyperkonvergované uzly Ceph. Pred PVE 9 musí Ceph používať 19.x Squid."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Roadmap",
|
||||
"title": "Plán Proxmox VE",
|
||||
"desc": "Poznámky k vydaniu PVE 9 a zmeny oproti 8.x — prečítajte si ich pred aktualizáciou."
|
||||
},
|
||||
{
|
||||
"href": "https://www.debian.org/releases/trixie/releasenotes",
|
||||
"title": "Poznámky k vydaniu Debianu Trixie",
|
||||
"desc": "PVE 9 vychádza z Debianu Trixie. Poznámky Debianu vysvetľujú zmeny operačného systému, ktoré ovplyvnia aj hostiteľa."
|
||||
},
|
||||
{
|
||||
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
|
||||
"title": "Inštalačné fórum Proxmox VE",
|
||||
"desc": "Pri problémoch počas aktualizácie najprv prehľadajte toto fórum; rovnaký problém už možno niekto riešil."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
|
||||
"title": "Zálohovanie a obnova",
|
||||
"desc": "Aktualizácia hlavnej verzie je nevratná. Pred začiatkom overte svoje zálohy."
|
||||
}
|
||||
]
|
||||
},
|
||||
"video": {
|
||||
"heading": "Videonávod",
|
||||
"intro": "Preferovať sledovanie upgrade spustiť end-to-end pred tým, než to urobiť sám? Tento prechod demonštruje tok upgrade ProxMenux v reálnom čase.",
|
||||
"title": "ProxMenux — Videonávod na aktualizáciu Proxmox VE 8 na 9",
|
||||
"caption": "Externé video na YouTube. Prehrávanie v režime rozšíreného súkromia, bez cookies až do spustenia videa."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Súvisiace",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aktualizácia systému Proxmox",
|
||||
"tail": " — pre bežné aktualizácie v rámci rovnakej hlavnej verzie (8.4.1 → 8.4.5 a podobne)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Prehľad pomocných nástrojov",
|
||||
"tail": " — späť na prehľad sekcie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Tvorba ISO cez UUP Dump | Dokumentácia ProxMenux",
|
||||
"description": "Vytvorte aktuálny inštalačný obraz ISO systému Windows na hostiteľovi Proxmox pomocou nástroja UUP Dump ISO Creator v ProxMenux. Automatizuje inštaláciu závislostí, sťahovanie a konverziu súborov UUP na zavádzací obraz ISO na vytvorenie VM.",
|
||||
"ogTitle": "Tvorba ISO cez UUP Dump | Dokumentácia ProxMenux",
|
||||
"ogDescription": "Vytvorte aktuálny obraz ISO systému Windows z UUP Dump pomocou ProxMenux. Závislosti, sťahovanie aj konverzia sú plne automatizované.",
|
||||
"ogImageAlt": "ProxMenux — Tvorca ISO UUP Dump"
|
||||
},
|
||||
"header": {
|
||||
"title": "Tvorba ISO cez UUP Dump",
|
||||
"description": "Vytvorte aktuálny inštalačný obraz ISO systému Windows na hostiteľovi Proxmox pomocou UUP Dump. ProxMenux spravuje závislosti, paralelne sťahuje súbory UUP, spustí konvertor UUP Dump a presunie obraz ISO do vybraného výstupného adresára. Predvolene je to rozpoznané úložisko ISO Proxmox.",
|
||||
"section": "Nástroje"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Čo robí tento skript",
|
||||
"body": "Zadajte URL vytvorenú službou uupdump.net po výbere zostavy, jazyka a edície. Skript nainštaluje chýbajúce závislosti, stiahne konvertor UUP Dump aj súbory UUP, vytvorí zavádzací obraz ISO systému Windows a presunie ho do vybraného výstupného adresára. Ako predvolený cieľ ponúkne rozpoznané úložisko ISO Proxmox."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "Položka UUP Dump ISO Creator v ProxMenux",
|
||||
"caption": "Položka UUP Dump ISO Creator v ProxMenux"
|
||||
},
|
||||
"what": {
|
||||
"heading": "Čo je UUP Dump?",
|
||||
"intro": "UUP Dump je komunitná služba na sťahovanie pôvodných súborov Unified Update Platform (UUP), ktoré Windows Update používa na distribúciu systému Windows. Tieto súbory možno zostaviť do štandardného zavádzacieho obrazu ISO. Umožňuje získať:",
|
||||
"items": [
|
||||
"Najnovšiu zostavu systému Windows vrátane kanálov Insider Preview.",
|
||||
"Konkrétnu staršiu zostavu, ktorú už Microsoft neuvádza na stránke na stiahnutie.",
|
||||
"Čisté, nemodifikované súbory pochádzajúce priamo zo serverov Microsoft.",
|
||||
"Presná kombinácia edícií a jazykov, ktoré chcete v jednom ISO."
|
||||
],
|
||||
"learnMore": "Viac informácií nájdete na <extlink>stránke projektu UUP Dump</extlink>."
|
||||
},
|
||||
"automates": {
|
||||
"heading": "Čo skript automatizuje"
|
||||
},
|
||||
"dependencies": {
|
||||
"heading": "Závislosti",
|
||||
"intro": "Skript najprv skontroluje nástroje potrebné na stiahnutie súborov UUP a vytvorenie obrazu ISO. Chýbajúce nástroje nainštaluje pomocou <code>apt-get</code>:",
|
||||
"headerPackage": "Balík",
|
||||
"headerRole": "Úloha",
|
||||
"rows": [
|
||||
{
|
||||
"pkg": "curl",
|
||||
"roleRich": "Sťahovanie cez HTTP na spustenie konvertora."
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"roleRich": "Paralelné sťahovanie všetkých súborov UUP."
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"roleRich": "Rozbalí balíky Microsoft CAB."
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"roleRich": "Buduje <code>install.wim</code> (wimlib-imagex)."
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"roleRich": "Vytvorí výsledný zavádzací obraz ISO (alebo <code>mkisofs</code>)."
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Počas vytvárania upravuje súbory registra Windows."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Ručný ekvivalent, ak budete musieť nástroje nainštalovať sami:",
|
||||
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Sťahovanie a konverzia",
|
||||
"steps": [
|
||||
"Rozpozná úložisko ISO Proxmox cez <code>pvesm status -content iso</code> alebo použije náhradnú cestu <code>/var/lib/vz/template/iso</code>.",
|
||||
"Vyžiada základný priečinok pre dočasné súbory (predvolene <code>/root/uup-temp</code>).",
|
||||
"Stiahne konvertor UUP Dump z <code>git.uupdump.net</code>.",
|
||||
"Z vloženej URL načíta <code>id</code>, <code>pack</code> a <code>edition</code>.",
|
||||
"Zavolá <code>https://uupdump.net/get.php?…&aria2=2</code> a vytvorí zoznam na sťahovanie cez aria2.",
|
||||
"Stiahne všetky súbory UUP do <code>UUPs/</code> pomocou aria2, paralelne a s možnosťou pokračovania.",
|
||||
"Spustí <code>convert.sh wim UUPs 1</code> z konvertora a vytvorí výsledný obraz ISO.",
|
||||
"Presunie obraz ISO do vybraného výstupného adresára a vyčistí dočasné súbory."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "Použité prepínače sťahovania Aria2",
|
||||
"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> — najviac 16 pripojení na server.",
|
||||
"<code>-s16</code> — rozdelí každý súbor na 16 segmentov.",
|
||||
"<code>-j5</code> — sťahuje 5 súborov súčasne.",
|
||||
"<code>-c</code> — pokračuje v neúplných sťahovaniach.",
|
||||
"<code>-R</code> — prenesie časovú značku vzdialeného súboru na stiahnutý súbor, ak je dostupná."
|
||||
],
|
||||
"runtime": "Bežný čas je približne 10 minút a závisí najmä od rýchlosti internetu a vyťaženia serverov na sťahovanie UUP Dump."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Krok 1 · Získajte UUP Dump URL",
|
||||
"intro": "Pred spustením skriptu potrebujete URL UUP Dump s parametrami <code>id</code>, <code>pack</code> a <code>edition</code>. Vytvorte ju na <extlink>uupdump.net</extlink>:",
|
||||
"stepBadge": "Krok",
|
||||
"items": [
|
||||
{
|
||||
"title": "Vyberte verziu Windows",
|
||||
"img": "/iso-creator/step-1-select-version-windows.png",
|
||||
"caption": "Hlavná stránka UUP Dump: vyberte verziu Windows",
|
||||
"body": "Otvorte domovskú stránku UUP Dump a vyberte verziu Windows, ktorú chcete."
|
||||
},
|
||||
{
|
||||
"title": "Vyberte konkrétnu zostavu",
|
||||
"img": "/iso-creator/step-2-select-version-windows.png",
|
||||
"caption": "Vyberte konkrétnu zostavu",
|
||||
"body": "Vyberte zostavu: najnovšiu, z kanála Insider Preview alebo konkrétnu staršiu, ktorá je ešte uvedená."
|
||||
},
|
||||
{
|
||||
"title": "Vybrať jazyk",
|
||||
"img": "/iso-creator/step-3-select-version-windows.png",
|
||||
"caption": "Vybrať jazyk",
|
||||
"body": "Vyberte jazyk, ktorý má obraz ISO obsahovať."
|
||||
},
|
||||
{
|
||||
"title": "Vybrať edície",
|
||||
"img": "/iso-creator/step-4-select-version-windows.png",
|
||||
"caption": "Vyberte edície, ktoré sa majú zahrnúť",
|
||||
"body": "Vyberte edície, ktoré chcete zahrnúť do obrazu ISO (Home, Pro, Enterprise, …). Môžete ich skombinovať viacero."
|
||||
},
|
||||
{
|
||||
"title": "Kopírovať URL",
|
||||
"img": "/iso-creator/step-5-select-version-windows.png",
|
||||
"caption": "Kopírovať URL z panela adries",
|
||||
"bodyRich": "Na poslednej stránke skopírujte URL <em>z panela s adresou prehliadača</em>. Musí obsahovať <code>id=…</code>, <code>pack=…</code> a <code>edition=…</code>. Tento reťazec skript spracuje."
|
||||
}
|
||||
]
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Krok 2 · Spustite tvorcu",
|
||||
"intro": "Po skopírovaní URL otvorte ProxMenux a spustite tvorbu ISO:",
|
||||
"stepBadge": "Krok",
|
||||
"items": [
|
||||
{
|
||||
"title": "Spustiť UUP Dump ISO Creator",
|
||||
"img": "/iso-creator/start-uupdump-iso-creator.png",
|
||||
"caption": "Spustiť UUP Dump ISO Creator z ProxMenux",
|
||||
"bodyRich": "V ProxMenux otvorte <strong>Utilities → UUP Dump ISO Creator</strong>. Skript skontroluje závislosti a adresár ISO pred vyžiadaním údajov."
|
||||
},
|
||||
{
|
||||
"title": "Vložiť UUP Dump URL",
|
||||
"img": "/iso-creator/add-url-iso-creator.png",
|
||||
"caption": "Vložte URL, ktoré ste skopírovali z uupdump.net",
|
||||
"body": "Vložte URL do vstupného dialógu. Skript potvrdzuje, že sú prítomné tri požadované parametre; ak nejaký chýba, preruší sa čisto."
|
||||
},
|
||||
{
|
||||
"title": "Počkajte na dokončenie vytvárania",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Vytváranie je dokončené — obraz ISO je pripravený v úložisku ISO Proxmox",
|
||||
"bodyRich": "Konzola zobrazuje priebeh aria2 a potom výstup konvertora. Hotový obraz ISO sa presunie do vybraného výstupného adresára. Ak je v nakonfigurovanom úložisku ISO Proxmox, možno ho vybrať cez <strong>Vytvoriť VM s Windows → Inštalovať z vlastného ISO</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Dočasné súbory",
|
||||
"body": "Predvolený dočasný priečinok je <code>/root/uup-temp</code>, so stiahnutými súbormi v <code>UUPs/</code> a konvertorom v <code>converter/</code>. Vlastná základná cesta dostane samostatný podadresár relácie. Vetvy úspešného vytvorenia a nevytvoreného ISO odstránia dočasnú reláciu. Skoršie chyby alebo zrušenie môžu zanechať dočasné súbory."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Exportera VM till OVA / OVF | ProxMenux-dokumentation",
|
||||
"description": "Exportera en Proxmox-VM till ett portabelt OVA-arkiv eller en OVF-katalog med DMTF-standardschemat. VMDK-diskar i formatet streamOptimized och SHA1-manifest. Kan importeras i VMware ESXi / Workstation / Fusion, VirtualBox och tillbaka i Proxmox.",
|
||||
"ogTitle": "Exportera VM till OVA / OVF | ProxMenux-dokumentation",
|
||||
"ogDescription": "Konvertera en Proxmox-VM till ett portabelt OVA- / OVF-paket som är kompatibelt med VMware och VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Exportera VM till OVA / OVF",
|
||||
"description": "Konverterar en Proxmox-VM till ett portabelt OVA-paket (ett enda TAR-arkiv) eller OVF-paket (beskrivningsfil och VMDK-filer) med DMTF:s OVF-standardschema. Diskarna konverteras med qemu-img till VMDK i formatet streamOptimized. Resultatet kan importeras i VMware (ESXi / Workstation / Fusion), VirtualBox och tillbaka i Proxmox med importverktyget.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Vad detta gör",
|
||||
"body": "Läser konfigurationen för en stoppad VM, konverterar varje disk till VMDK i formatet streamOptimized, skapar en OVF-beskrivningsfil och ett SHA1-manifest och paketerar allt som en enda <code>.ova</code>-fil eller en <code>-ovf</code>-katalog. Den ursprungliga virtuella maskinen ändras aldrig."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "VM-väljare",
|
||||
"body": "Vid start visar skriptet alla virtuella maskiner från <code>qm list</code> med VMID, namn och status. Välj den som ska exporteras:",
|
||||
"imgAlt": "Dialog för att välja en VM att exportera, med en lista över alla virtuella maskiner"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "Den virtuella maskinen måste vara stoppad",
|
||||
"intro": "En konsekvent diskavbildning kräver en stoppad VM. Om den valda virtuella maskinen körs erbjuder ProxMenux att stänga av den:",
|
||||
"items": [
|
||||
"Normal avstängning med <code>qm shutdown $VMID --timeout 120</code> (väntar 2 minuter på gästens ACPI-avstängning).",
|
||||
"Om väntetiden löper ut erbjuds ett tvångsstopp: <code>qm stop $VMID</code> (motsvarar att bryta strömmen).",
|
||||
"Om du avböjer båda avbryts exporten utan att några data ändras."
|
||||
],
|
||||
"warnTitle": "Ett tvångsstopp motsvarar att bryta strömmen",
|
||||
"warnBody": "<code>qm stop</code> motsvarar att dra ur strömkabeln. Gästens filsystem kan behöva repareras vid nästa start. Använd normal avstängning när det går och reservera tvångsstopp för gäster som inte svarar."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Formatval: OVA eller OVF",
|
||||
"headerFormat": "Format",
|
||||
"headerOutput": "Utdata",
|
||||
"headerPros": "Fördelar",
|
||||
"headerCons": "Nackdelar",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "En enda fristående fil som är lätt att flytta, överföra med sftp eller bifoga till ett supportärende.",
|
||||
"cons": "Kräver ~220% av den virtuella diskstorleken (extra utrymme för TAR-arkivet medan det skapas)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% av den virtuella diskstorleken. Lättare att granska eftersom beskrivningsfilen är vanlig XML-text. Kan redigeras före import.",
|
||||
"cons": "Flera filer som måste överföras tillsammans."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Destinationskatalog",
|
||||
"body": "Välj en förinställd sökväg (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) eller ange en egen. Skriptet kontrollerar att katalogen är skrivbar och varnar om det lediga utrymmet verkar otillräckligt innan du börjar.",
|
||||
"calloutTitle": "Tumregel för ledigt utrymme",
|
||||
"calloutBody": "För OVF-export av en VM med totalt 100 GB virtuell diskstorlek bör du ha ~120 GB ledigt; för OVA, ~220 GB. Den faktiska användningen kan bli lägre för nästan tomma diskar. OVA-arkivet skapas med okomprimerad TAR medan de tillfälliga VMDK-filerna finns kvar, så det behövs plats för båda. Om utrymmet tar slut under exporten städar EXIT-hanteraren den tillfälliga katalogen och du måste börja om."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Vad som hamnar i paketet",
|
||||
"intro": "För en OVA / OVF som heter <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": "Vad blir exporterat",
|
||||
"items": [
|
||||
"<strong>Diskar:</strong> alla poster av typen <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> och <code>ide*</code> i VM-konfigurationen, konverterade till VMDK i formatet streamOptimized.",
|
||||
"<strong>Antal vCPU:er</strong> (RASD ResourceType 3) och <strong>minne</strong> i MiB (ResourceType 4).",
|
||||
"<strong>Antal nätverkskort</strong> (ResourceType 10: endast antalet, inte bryggan eller modellen).",
|
||||
"<strong>VM-namn</strong> och en uppgift om typen av operativsystem."
|
||||
],
|
||||
"notTitle": "Vad exporteras INTE",
|
||||
"notItems": [
|
||||
"CD-ROM- / ISO-anslutningar (avsiktligt uteslutna).",
|
||||
"Cloud-init-enheter (avsiktligt uteslutna).",
|
||||
"Nätverkskortets specifika brygga och modell (endast antalet bevaras).",
|
||||
"Valet av BIOS / UEFI, som måste ställas in igen vid import.",
|
||||
"Konfiguration av PCI-genomkoppling.",
|
||||
"Snapshots - endast det nuvarande tillståndet fångas.",
|
||||
"Inställningar på VM-nivå (NUMA, hugepages, hotplug, …)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Diskkonvertering",
|
||||
"intro": "Varje disk konverteras med:",
|
||||
"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> är VMwares format som kan läsas i en enda genomgång. Det stöds av ESXi 6.7+, VMware Workstation, VirtualBox och Proxmox självt. Det är det VMDK-underformat som har bredast kompatibilitet och passar för flytt mellan system. Nackdelen är att det saknar direktåtkomst till godtyckliga positioner och därför inte kan monteras direkt utan konvertering."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "SHA1-manifest",
|
||||
"intro": "Varje paket innehåller en <code>.mf</code>-fil med SHA1-hashar för OVF-beskrivningsfilen och varje 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": "Manifestet är valfritt i OVF-specifikationen och många program ignorerar det, men det kan användas för att kontrollera att paketet överfördes oskadat. Verifiera manuellt med <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importera resultatet",
|
||||
"intro": "Det exporterade paketet kan importeras i:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — använd det tillhörande verktyget ",
|
||||
"linkLabel": "Importera VM från OVA / OVF",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; välj .ova- eller .ovf-filen."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open; välj .ova- eller .ovf-filen."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance; välj .ova- eller .ovf-filen."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Felsökning",
|
||||
"noSpaceTitle": "qemu-img convert misslyckas under konverteringen med \"No space left on device\"",
|
||||
"noSpaceBody": "Utrymmet tog slut på destinationen. EXIT-hanteraren städar automatiskt den tillfälliga katalogen. Välj en destination med mer ledigt utrymme (se tumregeln ovan) och kör exporten igen.",
|
||||
"unsupportedHwTitle": "Exporten slutförs men VMware vägrar importera: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Vissa ESXi-versioner avvisar OVF-beskrivningsfiler som anger en okänd maskinvarufamilj. Öppna .ovf-filen i en textredigerare, eller packa först upp .ova-filen, leta efter <code><vssd:VirtualSystemType></code> och ange ett värde som ESXi godtar, till exempel <code>vmx-13</code> för ESXi 6.5+. Prova VirtualBox som en snabb lösning; det är mindre strikt.",
|
||||
"nicTitle": "Den importerade virtuella maskinen använder ett annat nätverkskort eller en annan SCSI-styrenhet",
|
||||
"nicBody": "OVF bevarar antalet nätverkskort, men inte deras ursprungliga modell. Granska nätverksinställningarna för den importerade virtuella maskinen i destinationshypervisorn. Exporten anger en lsilogic-SCSI-styrenhet för VMware-kompatibilitet. Vid återimport i Proxmox med ProxMenux skapas den virtuella maskinen med en LSI-styrenhet och e1000-nätverkskort; byt sedan till <code>VirtIO SCSI</code> och VirtIO om gästen har lämpliga drivrutiner.",
|
||||
"runningTitle": "Den virtuella maskinen kördes och jag avböjde avstängning: exporten avbröts",
|
||||
"runningBody": "Skriptet kan inte skapa en konsekvent avbildning medan data skrivs till diskarna. Acceptera avstängningsfrågan nästa gång, eller stäng först av den virtuella maskinen manuellt (<code>qm shutdown $VMID</code>) och kör exporten igen.",
|
||||
"slowTitle": "Diskkonverteringen är långsam",
|
||||
"slowBody": "<code>qemu-img convert</code> använder en tråd och läser källan med full hastighet. Räkna med 15–30 minuter för en disk på 100 GB på en mekanisk hårddisk. Från NVMe till NVMe går det 5–10 gånger snabbare. Diskarna i en VM konverteras i följd; tiden ökar linjärt med den totala virtuella storleken."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Relaterat",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importera VM från OVA / OVF",
|
||||
"tail": " — det kompletterande verktyget för återimport."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Verktygsöversikt",
|
||||
"tail": " — tillbaka till avsnittsöversikten."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importera VM från OVA / OVF | ProxMenux-dokumentation",
|
||||
"description": "Importera en VM från VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux till Proxmox VE. Packar automatiskt upp OVA, läser OVF-metadata, skapar den virtuella maskinen och importerar varje disk i lagringens inbyggda format (qcow2 / raw).",
|
||||
"ogTitle": "Importera VM från OVA / OVF | ProxMenux-dokumentation",
|
||||
"ogDescription": "Importera virtuella maskiner från VMware-, VirtualBox- eller ProxMenux-exporter till Proxmox. Diskarna konverteras automatiskt till lagringens inbyggda format."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importera VM från OVA / OVF",
|
||||
"description": "Importerar ett OVA- / OVF-paket till Proxmox VE: packar upp OVA-arkiv, läser antalet vCPU:er, minne, nätverkskort och diskreferenser från OVF-filen, skapar sedan den virtuella maskinen och importerar varje disk med qm importdisk till vald lagring. Kompatibelt med exporter från VMware (ESXi / Workstation / Fusion), VirtualBox och ProxMenux.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Vad detta gör",
|
||||
"body": "Skapar en komplett VM i Proxmox från ett portabelt paket. Efter importen är den redo att startas. Vissa kontroller och justeringar av nätverkskortsmodell, firmware och operativsystemstyp rekommenderas för prestanda och kompatibilitet."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Filväljare",
|
||||
"intro": "Vid start erbjuder skriptet två förinställda kataloger eller en egen sökväg:",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> - standard Proxmox vzdump backup katalog.",
|
||||
"<code>/var/lib/vz/template/iso</code> — användbart om du överförde OVA-filen dit med sftp.",
|
||||
"Egen sökväg för OVA- / OVF-filer på andra platser på värden."
|
||||
],
|
||||
"outro": "Den listar sedan varje <code>.ova</code> och <code>.ovf</code>-fil i den valda katalogen.",
|
||||
"imageAlt": "Filvalsdialog för import av en VM"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Hur importen fungerar",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "OVA / OVF in",
|
||||
"detail": ".ova → tar xf till\n /tmp/.proxmenux-import-*\n.ovf → använd på plats",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Tolkning och dialoger",
|
||||
"detail": "AWK läser OVF\n(namn, vCPU, RAM, NIC,\ndiskar). Val av\nVMID / lagring / brygga",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → lagringsformat)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "OVF-tolkning",
|
||||
"intro": "En <strong>gawk</strong>-parser läser OVF-filen och hämtar VM-metadata. Den använder <code>match()</code> med tre argument, en gawk-funktion som inte stöds av mawk, standardvalet för <code>awk</code> i Debian / Proxmox. Om gawk saknas installeras det automatiskt vid första importen via <code>ensure_repositories</code> + <code>install_single_package</code>. Senare importer behöver inte det steget. Fält som läses:",
|
||||
"headerField": "Fält",
|
||||
"headerSource": "Källa i OVF",
|
||||
"headerDefault": "Standard om saknas",
|
||||
"rows": [
|
||||
{
|
||||
"field": "VM namn",
|
||||
"source": "<Name> (första matchen)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "Antal vCPU:er",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Minne (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "Antal nätverkskort",
|
||||
"source": "antal poster med ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "OS-typ",
|
||||
"source": "/Linux/ eller /Windows/ i beskrivning",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Diskreferenser",
|
||||
"source": "href attribut slutar i .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "Inga (importen avbryts)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Tvetydiga minnesenheter",
|
||||
"body": "Parsern konverterar kända minnesenheter till <strong>MiB</strong>, inklusive byte, KiB, MiB, GiB och stödda textetiketter. Saknade eller okända enheter <em>behandlas som MiB</em>. Jämför efter importen <code>qm config $VMID | grep memory</code> med källmaskinens dokumenterade RAM och korrigera vid behov med <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Importens dialogsteg",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — föreslår nästa lediga ID (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>VM-namn</strong> — använder namnet från OVF-filen som standard; du kan ändra det.",
|
||||
"<strong>Mållagring</strong> — meny med lagringar som stöder innehållet <code>images</code>, från <code>pvesm status -content images</code>.",
|
||||
"<strong>Nätverksbrygga</strong> — meny med bryggor från <code>ip link show type bridge</code>. En ensam brygga väljs automatiskt; standardvalet är <code>vmbr0</code>.",
|
||||
"<strong>Bekräftelse</strong> — sammanfattning med VMID, namn, vCPU:er, minne, nätverkskort, lagring, brygga och diskar att importera. Avbryt här så ändras inget."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "Skapa den virtuella maskinen",
|
||||
"intro": "Efter bekräftelsen kör skriptet:",
|
||||
"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": "SCSI controller standarder till <code>lsi</code> (LSI Logic) för VMDK kompatibilitet. NICs standard till <code>e1000</code> (universell kompatibilitet) på den valda bron."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "Importloop för diskar",
|
||||
"intro": "För varje diskreferens i OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importerar disken i ett format som stöds av mållagringen och skapar en post <code>unusedN:</code> i VM-konfigurationen.",
|
||||
"Skriptet söker med grep efter den nyskapade referensen <code>unusedN</code> i konfigurationen.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> fäster disken som <code>scsi0</code>, <code>scsi1</code>, …",
|
||||
"<code>qm set $VMID --delete unusedN</code> - rensar den numera oanvända markören."
|
||||
],
|
||||
"outro": "Boot är inställd på den första SCSI-skivan: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Rekommenderade justeringar efter import",
|
||||
"intro": "Importen använder brett kompatibla inställningar för att den virtuella maskinen ska kunna starta vid första försöket. När du har bekräftat att den startar kan du välja effektivare inställningar i Proxmox-gränssnittet eller via CLI:",
|
||||
"headerSetting": "Inställning",
|
||||
"headerDefault": "Standard efter import",
|
||||
"headerRecommended": "Rekommenderas (om gästen stöder)",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "NIC modell",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (mycket snabbare, kräver drivrutin i gästen)"
|
||||
},
|
||||
{
|
||||
"setting": "SCSI-kontroller",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (modern Linux eller Windows med VirtIO-drivrutiner)"
|
||||
},
|
||||
{
|
||||
"setting": "Fast programvara (BIOS / UEFI)",
|
||||
"default": "Proxmox standard (BIOS)",
|
||||
"recommended": "Använd källmaskinens firmware; ett felaktigt val kan hindra start"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU gästagent",
|
||||
"default": "Av",
|
||||
"recommendedRich": "På + installera <code>qemu-guest-agent</code> i gästen (bättre säkerhetskopior, IP-rapportering)"
|
||||
},
|
||||
{
|
||||
"setting": "OS-typ",
|
||||
"default": "l26 / win10 / other (heuristik)",
|
||||
"recommended": "Kontrollera mot gästens faktiska operativsystem"
|
||||
},
|
||||
{
|
||||
"setting": "Visning",
|
||||
"default": "Standard",
|
||||
"recommended": "VirtIO-GPU eller SPICE (bättre konsolprestanda)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Firmware mismatch = ingen start",
|
||||
"body": "Om källmaskinen använde UEFI men Proxmox skapar den med BIOS, eller tvärtom, hittar gästen ingen startbar disk. Kontrollera <em>FirmwareType / firmware</em> i OVF-filen eller ursprungsinställningarna och välj samma i Proxmox: <code>qm set $VMID --bios ovmf</code> för UEFI; standardvalet för BIOS är <code>seabios</code>."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Vad importeras INTE",
|
||||
"items": [
|
||||
"<strong>Specifika nätverksbryggor</strong> — bara antalet kort bevaras. Alla använder den brygga du valde vid importen.",
|
||||
"<strong>Nätverkskortsmodell</strong> — standardvalet är e1000.",
|
||||
"<strong>Firmwaretypen BIOS / UEFI</strong> — använder Proxmox standardval BIOS.",
|
||||
"<strong>Konfiguration av PCI-genomkoppling</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"<strong>Cloud-init</strong>-enheter.",
|
||||
"<strong>Snapshots</strong> - endast det nuvarande tillståndet.",
|
||||
"<strong>USB / seriella / parallella enheter</strong> förklaras i OVF.",
|
||||
"<strong>VM taggar / anteckningar / start-on-boot</strong> alternativ."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Felsökning",
|
||||
"orphanTitle": "VM skapades men diskimporten misslyckades: en ofullständig VM blev kvar",
|
||||
"orphanIntro": "När importen misslyckas erbjuder skriptet att ta bort den ofullständiga virtuella maskinen och dess importerade diskar. Om du avböjde eller automatisk radering misslyckades, granska maskinen och ta bort den manuellt med:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Fastställ sedan den underliggande orsaken (sannolikt diskutrymme på mållagringen) och återimportera.",
|
||||
"memTitle": "Importerad VM har 8 MB RAM (eller 8 TB)",
|
||||
"memIntro": "Parsern konverterar kända AllocationUnits till MiB. Saknade eller okända enheter behandlas som MiB. Granska OVF-filen och jämför det importerade minnet med källmaskinen. Korrigera vid behov:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "Den importerade virtuella maskinen startar inte: \"No bootable device\"",
|
||||
"bootIntro": "En vanlig orsak är fel val av BIOS / UEFI. Källmaskinen använde UEFI men Proxmox skapade den med BIOS. Välj matchande firmware:",
|
||||
"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": "En annan vanlig orsak: startordningen pekar på scsi0 medan operativsystemet ligger på scsi1. Ändra ordningen i VM-fliken Options.",
|
||||
"bsodTitle": "En Windows-VM exporterad från VMware visar blåskärm vid första starten",
|
||||
"bsodBody": "Windows är känsligt för byte av diskstyrenhet. Installera VirtIO-drivrutiner <em>före</em> exporten från VMware eller behåll standardstyrenheten <code>lsi</code>. Byt till VirtIO SCSI först efter att gästen startat och VirtIO-drivrutiner installerats i Windows.",
|
||||
"zeroTitle": "OVF-parsern rapporterar 0 diskar",
|
||||
"zeroBody": "OVF-filen kan använda diskreferenser som parsern inte känner igen. Öppna filen och leta efter varje disks post <code><File ovf:href=\"...vmdk\" ...></code>. Om disken faktiskt är VMDK men har ett ovanligt suffix som <code>.dat</code>, byt namn till <code>.vmdk</code> och uppdatera OVF-referensen. Ett namnbyte konverterar inte formatet.",
|
||||
"awkTitle": "awk: syntax error at or near , — parsern misslyckas med varje OVA / OVF",
|
||||
"awkIntro": "OVF-parsern använder gawk-syntaxen <code>match()</code> med tre argument, som saknas i mawk, standardvalet för <code>awk</code> i Debian / Proxmox. Nyare skriptversioner installerar gawk vid första användningen via <code>ensure_repositories</code> + <code>install_single_package</code>. Om du kör en äldre kopia, installera det manuellt:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Kör sedan importen igen.",
|
||||
"netTitle": "Nätverket fungerar inte efter första starten",
|
||||
"netBody": "Gästen kan sakna drivrutiner för e1000-modellen i Proxmox, eller den valda bryggan kan vara fel. Ändra Network Device → Model på VM-fliken Hardware. Kontrollera också <code>ip a</code> i gästen: gränssnittet kan ha fått namnet ens18 i stället för eth0, medan nätverkskonfigurationen fortfarande använder det gamla namnet."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Filer involverade",
|
||||
"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": "Relaterat",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Exportera VM till OVA / OVF",
|
||||
"tail": " — det kompletterande verktyget för export."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Verktygsöversikt",
|
||||
"tail": " — tillbaka till avsnittsöversikten."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox-verktyg — UUP Dump, uppgradering från PVE 8 till 9, OVA-export/-import | ProxMenux",
|
||||
"description": "Verktyg för vardagen i Proxmox VE: skapa Windows-ISO-filer med UUP Dump, installera utvalda CLI-verktyg, uppdatera Proxmox-systemet säkert, uppgradera från PVE 8 till PVE 9, exportera virtuella maskiner till OVA / OVF och importera OVA- / OVF-maskiner från VMware eller VirtualBox.",
|
||||
"ogTitle": "Proxmox-verktyg — UUP Dump, uppgradering från PVE 8 till 9, OVA-export/-import",
|
||||
"ogDescription": "Skapa Windows-ISO-filer, installera CLI-verktyg, kör en säker uppdatering, uppgradera från PVE 8 till PVE 9 och exportera eller importera virtuella maskiner i OVA / OVF.",
|
||||
"twitterTitle": "Proxmox-verktyg | ProxMenux",
|
||||
"twitterDescription": "ISO-skapande, CLI-verktyg, Proxmox-uppdatering, uppgradering PVE 8→9 och portabla virtuella maskiner i OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Hjälpverktyg",
|
||||
"description": "Sex verktyg kompletterar det dagliga arbetet i Proxmox VE: ISO-skapande, systemunderhåll och flytt av virtuella maskiner. Varje alternativ är fristående. Välj det du behöver; inget installeras förrän du begär det.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Vad denna meny är för",
|
||||
"body": "Tre grupper med fristående men ofta användbara verktyg: <strong>skapa en Windows-ISO</strong> med UUP Dump, <strong>underhåll Proxmox-värden</strong> (CLI-verktyg, uppdateringar och uppgradering av huvudversion) samt <strong>importera och exportera virtuella maskiner</strong> i Proxmox med standardformatet OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Öppna menyn",
|
||||
"body": "Välj <strong>Utilities</strong> i ProxMenux huvudmeny. Då visas följande:",
|
||||
"imageAlt": "Verktygsmenyn med UUP Dump, systemverktyg, uppdatering, uppgradering, export och import"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tre verktygsgrupper",
|
||||
"intro": "De sex verktygen är indelade i tre fristående grupper. Klicka på ett kort nedan för att gå till motsvarande avsnitt.",
|
||||
"iso": {
|
||||
"title": "Skapa ISO-filer",
|
||||
"body": "Skapa officiella Windows-ISO-filer med UUP Dump direkt på Proxmox-värden.",
|
||||
"bullets": [
|
||||
"Delad UUP Dump-länk → startbar ISO",
|
||||
"Beroenden installeras automatiskt",
|
||||
"Resultatet sparas i Proxmox katalog för ISO-mallar"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Systemunderhåll",
|
||||
"body": "Håll värden frisk: CLI-verktyg, regelbundna uppdateringar och storversionsuppgraderingen när det är dags.",
|
||||
"bullets": [
|
||||
"Installationsprogram för systemverktyg (25 CLI-verktyg)",
|
||||
"Proxmox systemuppdatering (apt + dist-upgrade)",
|
||||
"Uppgradering av huvudversion PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "Flytt av virtuella maskiner",
|
||||
"body": "Importera och exportera virtuella maskiner i Proxmox med standardformatet OVA / OVF.",
|
||||
"bullets": [
|
||||
"Exportera Proxmox-VM → OVA / OVF",
|
||||
"Importera OVA / OVF → Proxmox VM",
|
||||
"Kompatibel med VMware och VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "Uppgraderingen PVE 8 → 9 är destruktiv och går inte att ångra",
|
||||
"body": "En uppgradering av huvudversion ersätter Debianbasen (Bookworm → Trixie) och Proxmox-komponenterna i det befintliga systemet. Det finns ingen väg tillbaka: du behöver <strong>verifierade säkerhetskopior</strong> av varje VM och CT samt <strong>åtkomst via konsol / IPMI / iKVM</strong> innan du börjar. Därför vägrar uppgraderingsverktyget att köras från Proxmox webbterminal."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Skapa ISO-filer",
|
||||
"body": "Skapa en ny och aktuell Windows-installations-ISO direkt på Proxmox-värden. Skriptet automatiserar hela UUP Dump-flödet: installation av beroenden (aria2c, cabextract, wimlib-imagex, …), parallell nedladdning av uppdateringsfiler med aria2 och konvertering till en enda startbar ISO. Den sparas i <code>/var/lib/vz/template/iso</code> och är redo att anslutas till en VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "UUP Dump ISO-skapare",
|
||||
"description": "Skapa en aktuell Windows-installations-ISO från en delad UUP Dump-länk. Beroenden, nedladdning och konvertering hanteras helt automatiskt. Den färdiga ISO-filen sparas i /var/lib/vz/template/iso, redo för att skapa en VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Systemunderhåll",
|
||||
"body": "Tre verktyg täcker det dagliga och det mer sällsynta arbetet på värden. <strong>Installationsprogrammet för systemverktyg</strong> installerar de CLI-verktyg du använder efter en nyinstallation. <strong>Proxmox systemuppdatering</strong> sköter det veckovisa eller månatliga underhållet. <strong>Uppgradering från PVE 8 till PVE 9</strong> är det stora steget vid varje ny huvudversion, med extra säkerhetskontroller eftersom det inte går att ångra.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Installationsprogram för systemverktyg",
|
||||
"description": "Välj bland 25 utvalda CLI-verktyg (htop, btop, iperf3, tmux, ...) med eget urval eller fördefinierade grupper (grundläggande, utveckling, komprimering, multiplexrar, analys och nätverk). Använder standardflödet med paketförråd och verifieringskommando.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Proxmox systemuppdatering",
|
||||
"description": "Kontroll av paketförråd + apt update + apt dist-upgrade med bekräftelse före omstart. Identifierar PVE-huvudversionen (8 eller 9), behåller konfigurerade paketförråd och frågar innan en värd utan abonnemang byter till no-subscription-förrådet. Därefter körs autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Uppgradera PVE 8 till PVE 9",
|
||||
"description": "Uppgradering av huvudversion (Debian Bookworm → Trixie + PVE 8 → 9). Förkontroller, migrering av paketförråd, automatiskt eller interaktivt läge, validering efter uppgraderingen och omstart. Vägrar att köras från webbterminalen.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "Flytt av virtuella maskiner (OVA / OVF)",
|
||||
"body": "OVA och OVF är paketeringsformat för överföring mellan hypervisorer enligt DMTF-standarden. De stöds av VMware, VirtualBox och Proxmox. De två verktygen är avsedda för export och återimport: en VM som exporteras från Proxmox kan importeras tillbaka och tvärtom. Använd dem för att flytta arbetslaster från ESXi, skapa en portabel säkerhetskopia av en VM eller dela en förberedd VM med någon som använder VirtualBox.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Exportera VM till OVA / OVF",
|
||||
"description": "Konvertera en Proxmox-VM till ett portabelt OVA-arkiv eller en OVF-katalog. DMTF-standardschema, SHA1-manifest och VMDK-diskar i formatet streamOptimized. Kan importeras i VMware (ESXi / Workstation / Fusion), VirtualBox och tillbaka i Proxmox.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "Importera VM från OVA / OVF",
|
||||
"description": "Importera en export från VMware / VirtualBox / ProxMenux i Proxmox. Verktyget packar automatiskt upp OVA, läser OVF-metadata, skapar den virtuella maskinen och importerar varje disk i lagringens inbyggda format.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Om diskutrymme för export / import",
|
||||
"body": "Båda verktygen konverterar diskformat: exporten använder <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; importen använder <code>qm importdisk</code> för att konvertera tillbaka till lagringens inbyggda format (qcow2 / raw). Räkna vid export med <strong>~120% av den virtuella diskstorleken</strong> för OVF och <strong>~220%</strong> för OVA. OVA-arkivet använder okomprimerad TAR och skapas medan de tillfälliga VMDK-filerna finns kvar. Kontrollera att målkatalogen har tillräckligt med ledigt utrymme innan du börjar."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Så är menyn organiserad",
|
||||
"body": "Varje verktyg har ett eget skript under <code>scripts/utilities/</code>. Proxmox systemuppdatering anropar ett enda säkert arbetsskript i <code>scripts/global/</code>, update-pve-safe.sh, som identifierar huvudversionen och hanterar både PVE 8 och PVE 9. Uppgraderingen PVE 8 → 9 erbjuder två extra åtgärder i sin egen meny: en fristående <em>Kontroll före uppgradering</em> (kör <code>pve8to9 --full</code>) och en skrivskyddad <em>Guide för manuell uppgradering</em> (17 steg), för användare som vill granska processen eller utföra den för hand."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox systemuppdatering | ProxMenux-dokumentation",
|
||||
"description": "Uppdaterar paket inom den aktuella Proxmox-huvudversionen med apt-get update och apt full-upgrade -y. Kontrollerar diskutrymme och konfigurerade paketförråd, försöker återställa GPG-nycklar, kontrollerar och reparerar gamla LVM-PV-huvuden, bygger om hanterade DKMS-drivrutiner vid behov, kör autoremove/autoclean och erbjuder omstart när det behövs.",
|
||||
"ogTitle": "Proxmox systemuppdatering | ProxMenux-dokumentation",
|
||||
"ogDescription": "apt full-upgrade med kontroll av paketförråd, autoremove/autoclean och omstartsfråga vid behov."
|
||||
},
|
||||
"header": {
|
||||
"title": "Proxmox systemuppdatering",
|
||||
"description": "Anropar ett enda arbetsskript (<code>update-pve-safe.sh</code>) som identifierar den aktuella Proxmox-huvudversionen. Konfigurerade paketförråd läses via Proxmox API och bevaras. En värd utan abonnemang som bara använder Enterprise måste bekräfta ett byte till no-subscription. Skriptet uppdaterar paket och bygger om ProxMenux-hanterade DKMS-drivrutiner för en kärna som är klar för nästa start. Huvudskriptet erbjuder omstart om systemets omstartsmarkering finns eller om den senaste installerade kärnan skiljer sig från den som körs. Processen kan också startas med <em>Update Now</em> i ProxMenux Monitor-huvudet när väntande uppdateringar upptäcks.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Vad detta gör",
|
||||
"body": "Uppdaterar värden till den senaste korrigeringsnivån inom dess aktuella huvudversion. Uppgraderar <strong>inte</strong> till en annan huvudversion. För PVE 8 → PVE 9, se <link>Uppgradera PVE 8 till PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "Proxmox officiella rekommendation",
|
||||
"intro": "För att uppdatera en värd inom samma huvudversion rekommenderar Proxmox att du kör:",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Den här raden är det officiella kommandot för aktuella Proxmox-versioner. Du behöver också kontrollera att paketförråden är korrekta, att rätt förråd är aktiverade och att värden fungerar som den ska efter uppdateringen."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Vad ProxMenux lägger till: verifierat i skriptet",
|
||||
"intro": "Använder <strong>samma apt full-upgrade-åtgärd</strong>, med kontroll av paketförråd, DKMS-ombyggnad och efterföljande städning. Stegen nedan motsvarar <code>scripts/utilities/proxmox_update.sh</code> och dess enda arbetsskript <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Identifierar PVE-huvudversionen</strong> i arbetsskriptet (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Ett enda skript hanterar PVE 8 och PVE 9. Konfigurerade paketförråd bevaras om inte en värd utan abonnemang accepterar det erbjudna bytet.",
|
||||
"<strong>Behåller konfigurerade paketförråd.</strong> <code>ensure_repositories</code> läser förråd och abonnemangsstatus via Proxmox API. Med ett aktivt abonnemang eller ett redan använt no-subscription- eller testförråd ändras inget. En värd utan aktivt abonnemang som bara använder Enterprise måste bekräfta bytet till no-subscription. Ett nej avslutar uppdateringen utan att ändra några källor.",
|
||||
"<strong>Kör uppdateringen utan interaktion</strong> med <code>DEBIAN_FRONTEND=noninteractive</code> och <code>--force-confdef --force-confold</code>. För dpkg-konfigurationsfiler väljs standardåtgärden om en sådan finns; annars behålls den befintliga filen.",
|
||||
"<strong>Tvingar inte fram valfria verktyg.</strong> Arbetsskriptet installerar inte <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> eller liknande paket mot det tidigare valet. En Proxmox-installation som avstått från något av dem behåller det valet. Saknade paket visas av de överordnade installationsflödena, inte av uppdateringsflödet.",
|
||||
"<strong>Kontroll och reparation av LVM-metadata.</strong> Identifierar gamla PV-huvuden och kör vgck --updatemetadata och vgchange -ay för berörda volymgrupper. Detta kan ändra LVM-metadata; det är inte en kontroll som bara visar varningar.",
|
||||
"<strong>Rengör efteråt:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>DKMS byggs om före omstartsfrågan.</strong> Arbetsskriptet anropar <code>pmx_rebuild_dkms_after_kernel</code> när en nyare installerad kärna är klar. Huvudskriptet kontrollerar <code>/var/run/reboot-required</code> och använder <code>dpkg-query</code> för att jämföra kärnan från <code>uname -r</code> med det senaste installerade paketet <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code>. Markeringen kan saknas på värdar utan <code>needrestart</code>; kärnjämförelsen fungerar ändå."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "I en mening",
|
||||
"body": "Uppdaterar värdens paket, behåller paketförråd om du inte accepterar ett byte, kontrollerar LVM-metadata, bygger om hanterade DKMS-drivrutiner, städar med autoremove/autoclean och erbjuder omstart vid behov."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Bekräftelsedialog",
|
||||
"intro": "När du väljer alternativet öppnas en sammanfattning av de planerade åtgärderna som kräver en uttrycklig bekräftelse:",
|
||||
"imageAlt": "Bekräftelsedialog för Proxmox systemuppdatering med kontroll av paketförråd, paketuppdateringar och städning"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Så delegerar huvudskriptet arbetet",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Ett enda arbetsskript",
|
||||
"detail": "update-pve-safe.sh\n(detekterar PVE 8 / 9\ninternt)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Efter uppdatering",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nOmstartsfråga vid behov"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Vad arbetsskriptet gör",
|
||||
"intro": "Ett arbetsskript (<code>scripts/global/update-pve-safe.sh</code>) hanterar PVE 8 (<code>bookworm</code>) och PVE 9 (<code>trixie</code>). Det identifierar huvudversionen internt och kontrollerar befintliga paketförråd utan att skriva om Debians grundkällor. Stegen är:",
|
||||
"items": [
|
||||
"<strong>Förkontroller.</strong> Kontrollerar att minst ~1 GB är ledigt i <code>/var/cache/apt/archives</code>. Vid för lite utrymme avbryts processen tidigt med ett tydligt meddelande så att den inte misslyckas mitt i en apt-transaktion.",
|
||||
"<strong>Kontroll av paketförråd.</strong> <code>ensure_repositories</code> läser förråd och abonnemangsstatus. Med ett användbart Proxmox-förråd ändras inget. En värd utan aktivt abonnemang som bara använder Enterprise måste bekräfta bytet till no-subscription; ett nej avslutar uppdateringen.",
|
||||
"<strong>apt update med automatisk GPG-återställning.</strong> Vid <code>NO_PUBKEY</code> för ett paketförråd, även ett från tredje part, importerar arbetsskriptet den saknade nyckeln och försöker igen innan det rapporterar ett fel.",
|
||||
"<strong>Väntande uppdateringar och säkerhetsuppdateringar.</strong> Visar hur många paket som kommer att ändras och hur många som kommer från säkerhetssviten, så att bekräftelsedialogen visar konkreta antal.",
|
||||
"<strong>Bekräftelsedialog.</strong> Efter uppdatering av paketlistorna kräver arbetsskriptet ett uttryckligt ja innan paketen uppdateras.",
|
||||
"<strong>apt full-upgrade.</strong> Använder <code>DEBIAN_FRONTEND=noninteractive</code> och <code>--force-confdef --force-confold</code>. Dpkg följer standardåtgärden för konfigurationsfiler när en sådan finns och behåller annars den befintliga filen.",
|
||||
"<strong>LVM-kontroll.</strong> <code>lvm_repair_check</code> uppdaterar volymgruppernas metadata när diskar som genomkopplats till gäst-VM:er (DSM, TrueNAS eller lagringsapparater) återkommer med gamla PV-huvuden.",
|
||||
"<strong>DKMS-ombyggnad för ProxMenux-hanterade drivrutiner.</strong> När en ny kärna är klar läser <code>pmx_rebuild_dkms_after_kernel</code> de ProxMenux-installerade drivrutinerna i <code>components_status.json</code> (för närvarande <code>nvidia_driver</code> → modul <code>nvidia</code> och <code>coral_driver</code> → modul <code>gasket</code>), installerar matchande kärnheaders (<code>proxmox-headers-<newkver></code> om de finns, annars <code>pve-headers-<newkver></code>) och kör <code>dkms autoinstall -k <newkver></code>. Om <code>dkms status</code> därefter inte visar moduler byggda för den nya kärnan körs respektive installationsprogram igen med <code>--auto-reinstall</code>. Fel loggas men avbryter inte uppdateringen, som ändå når omstartsfrågan.",
|
||||
"<strong>Efterföljande städning.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> innan kontrollen lämnas tillbaka till huvudskriptet."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Rensning och omstart efter uppdatering",
|
||||
"intro": "När arbetsskriptet har avslutats kör huvudskriptet:",
|
||||
"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": "Huvudskriptet kontrollerar också om en omstart behövs. Var och en av följande signaler utlöser frågan:",
|
||||
"items": [
|
||||
"<code>/var/run/reboot-required</code> finns: ett paket eller systemverktyg har markerat att värden behöver startas om.",
|
||||
"Det senaste installerade Proxmox-kärnpaketet skiljer sig från kärnan som körs, enligt <code>dpkg-query</code> och uname -r."
|
||||
],
|
||||
"outro": "Om något av villkoren uppfylls frågar en whiptail-dialog <em>”Vissa ändringar kräver en omstart. Vill du starta om nu?”</em>. Avböj för att fortsätta med den aktuella kärnan tills du startar om manuellt, till exempel under ett planerat underhållsfönster."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Vad du ser i slutet",
|
||||
"intro": "När arbetsskriptet är klart visar terminalen resultatet av städningen och omstartsfrågan om en omstart behövs:",
|
||||
"imageAlt": "Slutsammanfattning för Proxmox systemuppdatering med städningsresultat och omstartsfråga"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Skjut bara upp omstarten om du har ett tydligt skäl",
|
||||
"body": "När du installerar ett nytt paket av typen <code>proxmox-kernel-*</code> ersätts den kärna som körs först efter en omstart. Den nya kärnan och dess matchande moduler aktiveras vid nästa start. Planera omstarten till ett lämpligt underhållsfönster och granska eventuella DKMS-byggvarningar i förväg."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Så hanterar arbetsskriptet Enterprise-förrådet",
|
||||
"intro": "Proxmox aktiverar Enterprise-förrådet som standard. Utan ett aktivt abonnemang returnerar det 401 vid <code>apt-get update</code>. Arbetsskriptet ändrar förråden endast i detta fall och efter bekräftelse, via Proxmox API som används av <em>Node → Updates → Repositories</em>. De olika fallen:",
|
||||
"items": [
|
||||
"Med ett <strong>aktivt abonnemang</strong> behålls förråden och Enterprise tillhandahåller uppdateringarna.",
|
||||
"Om <strong>no-subscription- eller testförrådet redan är aktiverat</strong> behålls förråden, oavsett vilka andra källor som har konfigurerats.",
|
||||
"Med <strong>inget aktivt abonnemang och enbart Enterprise-förrådet</strong> erbjuder en dialog ett byte. Om du accepterar inaktiveras Enterprise, no-subscription aktiveras och paketlistorna uppdateras. Ändringen registreras i vyn <em>Changes</em> i Audit & Report. Ett nej avslutar uppdateringen utan att ändra källorna.",
|
||||
"Befintliga <strong>Enterprise-källor för Ceph</strong> inaktiveras vid samma byte utan att någon annan Ceph-kanal väljs. En värd som använder Ceph konfigurerar dess kanal separat.",
|
||||
"Om <strong>ingen terminal finns för bekräftelsen</strong> ändras inga källor och uppdateringen avslutas med ett meddelande som hänvisar till <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Debians källor och övriga filer för paketförråd ändras aldrig av det här flödet. En post som blandar Enterprise med andra komponenter byts inte: uppdateringen avbryts och ber dig dela upp posten i Proxmox vy för paketförråd."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Att tänka på för kluster",
|
||||
"calloutTitle": "På kluster: uppdatera en nod i taget",
|
||||
"calloutBody": "Kör det här alternativet på <strong>en nod i taget</strong> i ett Proxmox-kluster och vänta tills omstarten är klar innan du fortsätter. Migrera först gäster från noden för att undvika tjänsteavbrott i hela klustret. Olika mindre versioner, till exempel 8.4.1 och 8.4.5, kan köras parallellt under några timmar. Olika kärnor kan ge oväntat beteende för HA-hanterade gäster."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Vad det inte gör",
|
||||
"items": [
|
||||
"<strong>Uppgradering av huvudversion.</strong> 8 → 9 är en separat åtgärd; se <link>Uppgradera PVE 8 till PVE 9</link>.",
|
||||
"<strong>Säkerhetskopiering.</strong> Inga ögonblicksbilder eller automatisk återgång. Apt-åtgärder är inte transaktionella. Behåll dina vanliga säkerhetskopieringsrutiner (PBS, vzdump, ZFS-ögonblicksbilder).",
|
||||
"<strong>Uppdateringar av containrar / VM:er.</strong> Bara värden uppdateras; gästerna lämnas oförändrade.",
|
||||
"<strong>Separat firmwareflashning.</strong> Detta är inget verktyg för att flasha BIOS eller enheters firmware. Installerade paket för firmware eller CPU-mikrokod kan fortfarande uppdateras via apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Felsökning",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update misslyckas med 401 Unauthorized",
|
||||
"body": "Enterprise-förrådet är aktiverat utan ett aktivt abonnemang. Före <code>apt-get update</code> erbjuder arbetsskriptet ett byte till no-subscription. Om du avböjde kan du köra uppdateringen igen och acceptera, eller inaktivera Enterprise i <em>Node → Updates → Repositories</em> och aktivera no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade fastnar vid \"Configuring grub-pc\"",
|
||||
"body": "Om en interaktiv GRUB-fråga visas frågar den vilka enheter som ska få starthanteraren. Alternativet <code>--force-confold</code> gäller konfigurationsfiler, inte det här enhetsvalet. Välj lämpliga startdiskar med <kbd>Tab</kbd> + <kbd>Space</kbd> och sedan OK. Du kan konfigurera valet i förväg med <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Kärnan har uppgraderats men nya moduler saknas för en extern drivrutin",
|
||||
"body": "För hanterade drivrutiner (<code>nvidia_driver</code> och <code>coral_driver</code>) kör hjälpfunktionen <code>dkms autoinstall -k <newkver></code> och kan försöka igen med deras installationsprogram och <code>--auto-reinstall</code>. Kontrollera resultatet med <code>dkms status</code>. Kommandot autoinstall kan också bygga om andra registrerade DKMS-moduler. Reservvägen via installationsprogram är begränsad till de hanterade posterna i <code>components_status.json</code>. Granska tredjepartsmoduler som fortfarande saknas och bygg om dem med <code>dkms autoinstall</code> vid behov."
|
||||
},
|
||||
{
|
||||
"title": "Omstartsfrågan visades inte trots att en ny kärna installerades",
|
||||
"body": "Signalerna är alternativ: <code>/var/run/reboot-required</code> eller en skillnad mellan den kärna som körs och den senaste installerade Proxmox-kärnan. Huvudskriptet tolkar inte linux-image-poster i apt-loggen. Kontrollera den aktuella versionen med <code>uname -r</code> och installerade kärnpaket med <code>dpkg-query</code>. Planera en nödvändig omstart eller kör <code>shutdown -r now</code> när du är redo."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Filer involverade",
|
||||
"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": "Relaterat",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Uppgradera PVE 8 till PVE 9",
|
||||
"tail": " — för uppgraderingen av huvudversion med ett annat verktyg och en annan säkerhetsmodell."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installationsprogram för systemverktyg",
|
||||
"tail": " — för att installera användbara CLI-verktyg för uppdateringar (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Verktygsöversikt",
|
||||
"tail": " — tillbaka till avsnittsöversikten."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installationsprogram för systemverktyg | ProxMenux-dokumentation",
|
||||
"description": "Installationsprogram för CLI-verktyg i Proxmox VE, med 25 paket i den gemensamma listan (htop, btop, iperf3, tmux, ...). Eget urval, installation av allt och fördefinierade grupper (grundläggande, utveckling, komprimering, multiplexrar, analys, nätverk). Grupper kan innehålla fler paket. Använder ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Installationsprogram för systemverktyg | ProxMenux-dokumentation",
|
||||
"ogDescription": "Installera utvalda CLI-verktyg i Proxmox VE med ett klick eller eget urval."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installationsprogram för systemverktyg",
|
||||
"description": "Välj bland 25 CLI-verktyg i den gemensamma listan PROXMENUX_UTILS. Erbjuder eget urval, installation av allt, sex fördefinierade grupper och installationskontroll. Grupper kan innehålla verktyg utanför listan. De gemensamma funktionerna ensure_repositories() + install_single_package() ger enhetlig hantering av paketförråd och återkoppling per paket.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"info": {
|
||||
"title": "Vad detta gör",
|
||||
"body": "Installerar CLI-verktyg från en lista med 25 paket. Varje installation följer samma flöde: <code>ensure_repositories</code> kontrollerar att värden har ett användbart Proxmox-förråd för den aktuella PVE-huvudversionen; sedan installerar <code>install_single_package</code> paketet och kontrollerar att kommandot finns i PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Öppna installationsprogrammet",
|
||||
"intro": "Från menyn Utilities väljer du <strong>System Utilities Installer</strong>. Huvudmenyn erbjuder nio alternativ:",
|
||||
"imageAlt": "Menyn för installation av systemverktyg med eget urval, ALL, fördefinierade grupper och verifiering"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Menyns 9 åtgärder",
|
||||
"headerOption": "Alternativ",
|
||||
"headerBehaviour": "Beteende",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Anpassat urval",
|
||||
"behaviourRich": "Urvalslista med alla 25 paket. Använd SPACE för att markera och ENTER för att bekräfta; bara valda paket installeras."
|
||||
},
|
||||
{
|
||||
"option": "2. Installera alla verktyg",
|
||||
"behaviourRich": "Installerar alla paket i <code>PROXMENUX_UTILS</code> i ett steg. Använd efter en ny Proxmox-installation."
|
||||
},
|
||||
{
|
||||
"option": "3. Grundläggande",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Utveckling",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Kompression",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Terminalmultiplexrar",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analys",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Nätverk",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Verifiera installationer",
|
||||
"behaviourRich": "Går igenom varje post i <code>PROXMENUX_UTILS</code>, kontrollerar om verifieringskommandot finns i PATH och visar en sammanfattning med Tillgängligt / Saknas."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "De 25 paketen",
|
||||
"intro": "Definieras i den gemensamma filen <code>scripts/global/utils-install-functions.sh</code> som <code>PROXMENUX_UTILS</code> (format: <code>package:verify_command:description</code>). Andra ProxMenux-skript, till exempel de som startar iftop / iptraf-ng / iperf3, återanvänder posterna så att paket och verifieringskommandon hålls samordnade.",
|
||||
"headerPackage": "Paket",
|
||||
"headerVerify": "Verifieringskommando",
|
||||
"headerDescription": "Beskrivning",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Nedladdningsaccelerator"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Nedladdare med flera källor"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Modern resursövervakning"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Extrahera CAB filer"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Redigera Windows-registret / lösenord"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Konvertera DOS / Unix textfiler"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "Skapa ISO-bilder"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Allmän färgmarkering av loggar"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Interaktiv processvisare"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Realtidsnätverksanvändning"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Intel GPU verktyg"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Övervaka diskarnas in- och utmatning"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Testning av nätverkets bandbredd"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Hantera mängder av IP-adresser"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Verktyg för nätverksövervakning"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Verktyg för VM-diskar"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Åtkomst till processorns MSR-register"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Äldre nätverksverktyg"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Hitta filer snabbt"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Icke-interaktiv SSH inloggning"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Terminalmultiplexer"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "Extrahera ZIP-filer"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Hantera WIM-avbildningar"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Skapa ZIP-filer"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Så installeras ett enskilt paket",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> identifierar PVE 8 eller 9 och läser paketförråden via Proxmox API. Med ett användbart Proxmox-förråd ändras inget. En värd utan aktivt abonnemang som bara använder Enterprise måste bekräfta ett byte till no-subscription; <code>apt-get update</code> körs efter ett godkänt byte.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> kör <code>apt-get install -y \"$pkg\"</code> med feedback (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Efter installationen kontrolleras verifieringskommandot med <code>command -v \"$verify_cmd\"</code>. Tre resultat:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (lyckat):</strong> kommandot finns tillgängligt och paketet räknas som <em>Lyckat</em>.",
|
||||
"<strong>1 (misslyckat):</strong> apt misslyckades och paketet räknas som <em>Misslyckat</em>.",
|
||||
"<strong>2 (varning):</strong> apt lyckades men det förväntade kommandot hittades inte i PATH; paketet räknas som <em>Med varningar</em>."
|
||||
],
|
||||
"summary": "Efter en gruppinstallation eller ett eget urval visar en dialog antalet <em>Lyckade / Med varningar / Misslyckade</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifiera installationer",
|
||||
"intro": "Alternativ 9 är skrivskyddat: det går igenom <code>PROXMENUX_UTILS</code> och kör <code>command -v</code> för varje verifieringskommando. Utdata ser ut så här:",
|
||||
"code": "Total: 25\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": "Användbart innan du kör skript som behöver verktygen. Till exempel kräver <code>uup_dump_iso_creator.sh</code> kommandona <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>. Om något saknas kan du installera motsvarande grupp eller välja de saknade paketen själv."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Felsökning",
|
||||
"reposTitle": "”Kunde inte konfigurera paketförråden. Installationen avbröts.”",
|
||||
"reposBody": "Kontrollen av paketförråd misslyckades: bytet till no-subscription avböjdes, abonnemangsstatusen kunde inte läsas eller en post kräver åtgärd. Föregående meddelande anger orsaken. Förråden visas i <em>Node → Updates → Repositories</em>; <code>apt-get update</code> i en konsol visar apt-felet.",
|
||||
"warningsTitle": "Ett paket rapporteras \"Med varningar\" men kommandot fungerar när jag stänger menyn",
|
||||
"warningsBody": "Efter <code>apt-get install</code> kör hjälpfunktionen <code>hash -r</code>, väntar kort och kontrollerar det förväntade kommandot med <code>command -v</code>. En varning betyder att kontrollen fortfarande misslyckades, utan att ange orsaken. Prova ett nytt skal och kontrollera paketinstallationen och PATH om kommandot fortfarande saknas.",
|
||||
"hangsTitle": "En apt-installation fastnar",
|
||||
"hangsBody": "En debconf-fråga är sannolikt dold av den tysta utmatningen. Skriptet använder <code>DEBIAN_FRONTEND=noninteractive</code> vid apt-anrop, vilket vanligen undviker frågor, men vissa paket kräver ändå inmatning. Avbryt med <kbd>Ctrl</kbd>+<kbd>C</kbd> och kör <code>apt-get install -y <pkg></code> manuellt i ett skal för att se frågan och välja åtgärd."
|
||||
},
|
||||
"files": {
|
||||
"heading": "Filer involverade",
|
||||
"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": "Relaterat",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox systemuppdatering",
|
||||
"tailRich": " — för den faktiska <code>apt dist-upgrade</code> på värden."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Verktyg för liveövervakning (nätverk)",
|
||||
"tailRich": " - använder iftop / iptraf-ng / iperf3 från samma lista."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Verktygsöversikt",
|
||||
"tailRich": " — tillbaka till avsnittsöversikten."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Uppgradera PVE 8 till PVE 9 | ProxMenux-dokumentation",
|
||||
"description": "Tre sätt att uppgradera Proxmox VE 8 till 9 (Debian Bookworm till Trixie och PVE 8 till 9): automatiskt, interaktivt eller manuellt enligt Proxmox officiella anvisningar. Kontroller med pve8to9, ändrade paketkällor, dist-upgrade och slutkontroll. Körning från webbterminalen blockeras.",
|
||||
"ogTitle": "Uppgradera PVE 8 till PVE 9 | ProxMenux-dokumentation",
|
||||
"ogDescription": "Tre metoder (automatisk, interaktiv och manuell) för att uppgradera Proxmox VE 8 till 9."
|
||||
},
|
||||
"header": {
|
||||
"title": "Uppgradera PVE 8 till PVE 9",
|
||||
"description": "Uppgraderar Proxmox VE 8 till 9 enligt de officiella anvisningarna: Debian Bookworm till Trixie och PVE 8 till 9. Välj automatisk, interaktiv eller manuell metod, eller en separat förkontroll. Webbterminalen blockeras eftersom en bruten anslutning under uppgraderingen kan göra värden obrukbar.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"dangerCallout": {
|
||||
"title": "En uppgradering till en ny huvudversion kan inte ångras",
|
||||
"intro": "Åtgärden ersätter Debian-basen (Bookworm → Trixie) och Proxmox-komponenterna på det befintliga systemet. Det finns <strong>ingen återgång till den gamla versionen</strong>. Innan du börjar:",
|
||||
"items": [
|
||||
"<strong>Verifierade säkerhetskopior</strong> av varje VM och CT (PBS, vzdump, ZFS-ögonblicksbilder — kontrollera även att de går att återställa).",
|
||||
"<strong>Åtkomst via konsol / IPMI / iKVM</strong> till värden om SSH kopplas ned under uppgraderingen.",
|
||||
"Värden ska redan vara uppdaterad till aktuell PVE 8.4.x, vilket skriptet kontrollerar.",
|
||||
"Ceph (om den finns) på version 19.x Squid.",
|
||||
"Minst <strong>5 GB ledigt</strong> i rotfilsystemet."
|
||||
]
|
||||
},
|
||||
"modeMenu": {
|
||||
"heading": "Menyn för val av läge",
|
||||
"intro": "Alternativet öppnar en meny med fyra val: Automatiskt, Interaktivt, Förkontroll och Manuell guide. Tre alternativ <em>utför</em> uppgraderingen eller visar hur den görs; den separata kontrollen <em>verifierar</em> förutsättningarna och kan erbjuda reparationer.",
|
||||
"imageAlt": "Meny för uppgradering av PVE 8 till 9 med automatiskt och interaktivt läge, förkontroll och manuell guide"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Tre sätt att uppgradera",
|
||||
"intro": "Automatiskt och interaktivt läge följer samma förlopp med förkontroller och slutkontroll. Skillnaden är hur dpkg-frågor under <code>dist-upgrade</code> besvaras. Den manuella guiden visar kommandona inklusive kontrollerna; du ansvarar för att utföra varje steg.",
|
||||
"auto": {
|
||||
"title": "Automatiskt / Utan tillsyn",
|
||||
"summary": "Anger <code>ASSUME_YES=1</code> + <code>DEBIAN_FRONTEND=noninteractive</code>. För ändrade konfigurationsfiler använder dpkg sin standardåtgärd om den finns; annars <strong>behålls den befintliga filen</strong> (<code>--force-confold</code>).",
|
||||
"items": [
|
||||
"Snabbast — inga dpkg-frågor under uppgraderingen",
|
||||
"Passar standardinstallationer utan anpassade konfigurationsfiler",
|
||||
"Risk: en anpassad konfiguration behålls utan fråga och kan dölja nya standardvärden"
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"title": "Interaktiv",
|
||||
"summary": "Samma förlopp, men du besvarar varje dpkg-fråga om konfigurationskonflikter. Långsammare, med full insyn.",
|
||||
"items": [
|
||||
"Du ser varje konfig konflikt och bestämmer",
|
||||
"Bäst när du har anpassat <code>/etc/lvm</code>, <code>/etc/ssh</code>, etc.",
|
||||
"Rådfråga tabellen rekommenderade svar i manuell procedur nedan"
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Manuell uppgraderingsguide",
|
||||
"summary": "Visar det officiella Proxmox-förfarandet i 17 steg utan att köra det. Kör kommandona själv i ett separat skal.",
|
||||
"items": [
|
||||
"Maximal kontroll - du skriver varje kommando",
|
||||
"Bäst när du vill lära dig förfarandet eller du litar på ingenting",
|
||||
"Skriptet visar stegen; ingenting utförs automatiskt"
|
||||
]
|
||||
}
|
||||
},
|
||||
"precheckCallout": {
|
||||
"title": "Plus en separat Pre-check",
|
||||
"body": "Alternativ 3 — <strong>Kör kontroll för PVE 8 till 9</strong> — kör Proxmox officiella <code>pve8to9 --full</code>, erbjuder guidade reparationer för vanliga problem och <strong>avslutas sedan</strong>. Använd det före uppgraderingen eller efter manuella reparationer. Automatiskt och interaktivt läge kör också kontrollen; den manuella guiden säger åt dig att köra den själv."
|
||||
},
|
||||
"webTerminal": {
|
||||
"heading": "Varför webbterminalen blockeras",
|
||||
"body": "Alla tre lägen upptäcker <code>termproxy</code> / <code>vncshell</code> i kedjan av överordnade processer och vägrar starta. Webbterminalen beror på <code>pveproxy</code>, en tjänst som uppdateras under förloppet. När <code>pveproxy</code> startas om avslutas terminalsessionen och skriptet i den. Värden kan då bli endast delvis uppgraderad.",
|
||||
"warningTitle": "Använd SSH eller fysisk konsol / IPMI / iKVM",
|
||||
"warningBody": "SSH är det vanligaste valet. Kör det i <code>tmux</code> eller <code>screen</code> så att uppgraderingen klarar korta nätavbrott. Om skriptet upptäcker ett vanligt SSH-skal visas först en påminnelse om tmux/screen."
|
||||
},
|
||||
"auto": {
|
||||
"heading": "Automatiskt läge / Utan tillsyn",
|
||||
"intro": "Frågor om paket och konfigurationsfiler använder standardvärdena i tabellen nedan, och ett 401 från Enterprise-källan byter till no-subscription utan att fråga. Bekräftelsen av uppgraderingen, sammanfattningen av PVE 8-uppdateringen, reparationer från förkontrollen och frågan om omstart visas fortfarande.",
|
||||
"behaviourHeading": "Beteende i automatiskt läge",
|
||||
"behaviourTable": {
|
||||
"settingHeader": "Inställning",
|
||||
"effectHeader": "Effekt",
|
||||
"rows": [
|
||||
{
|
||||
"settingRich": "<code>ASSUME_YES=1</code>",
|
||||
"effectRich": "Intern inställning — skriptet svarar själv ja på sina egna frågor, till exempel bytet till no-subscription efter ett 401"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>DEBIAN_FRONTEND=noninteractive</code>",
|
||||
"effectRich": "apt / dpkg körs utan debconf-frågor"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confdef</code>",
|
||||
"effectRich": "För orörda konfigfiler: installera underhållarens nya version"
|
||||
},
|
||||
{
|
||||
"settingRich": "<code>--force-confold</code>",
|
||||
"effectRich": "För ändrade filer: dpkg:s standardåtgärd om den finns; annars <strong>behåll din version</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"flowHeading": "Förlopp i automatiskt läge",
|
||||
"flowIntro": "Sex faser i följd. Fas 2 uppdaterar PVE 8-paketen och fas 3 skriver konfigurationen för PVE 9-paketkällorna. Ett fel stoppar förloppet men återställer inte ändringarna; om PVE 8-uppdateringen misslyckas eller avbryts lämnas paketkällorna orörda. Fas 5 kör <code>dist-upgrade</code> till PVE 9.",
|
||||
"flowDiagram": "1. KONTROLLER\nBlockera termproxy / vncshell; bekräfta uppgraderingen; avvisa PVE 9.\n\n2. FÖRBERED PVE 8\nscripts/global/update-pve8.sh\nUppdatera PVE 8-paket; stoppa om uppdateringen misslyckas eller avbryts.\npve8to9 --full (kan erbjuda reparationer).\nKontrollera utrymme och anslutning; Ceph 19.x Squid på hyperkonvergerade noder.\n\n3. ÄNDRA PAKETKÄLLOR\nBookworm → Trixie; skriv deb822-filer .sources.\nKommentera bort gamla .list-filer; apt-get update.\n\n4. KONTROLLERA PVE 9-KANDIDATEN\napt-cache policy proxmox-ve\napt-get -s dist-upgrade\nStoppa om kandidaten inte är 9.x eller om proxmox-ve skulle tas bort.\n\n5. UPPGRADERA\napt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade\nUtan prenumeration: inaktivera pve-enterprise.sources.\nLogg: /var/log/pve8-a-pve9-'<'timestamp'>'.log\n\n6. KONTROLLERA OCH STARTA OM\nEFI: apt install grub-efi-amd64\npve8to9 --full; granska resultatet och frågan om omstart.",
|
||||
"preflightHeading": "Förkontroll: vad som kontrolleras",
|
||||
"preflightTable": {
|
||||
"checkHeader": "Kontroll",
|
||||
"whyHeader": "Varför det spelar roll",
|
||||
"rows": [
|
||||
{
|
||||
"checkRich": "<strong>Webbterminalblock</strong>",
|
||||
"whyRich": "Förhindrar att uppgraderingen avslutar skalet som kör den"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong> Redan på 9.x</strong>",
|
||||
"whyRich": "Avslutas om värden redan kör PVE 9 — inget behöver göras"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Senaste versionen av PVE 8.4.x</strong>",
|
||||
"whyRich": "Uppdaterar först PVE 8 till senaste korrigeringsnivån med PVE 8-skriptet; gamla 8.x-versioner har andra förutsättningar"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>pve8to9 --full</strong>",
|
||||
"whyRich": "Proxmox egen kontroll av uppgraderingskraven; FAIL-fel blockerar uppgraderingen tills de åtgärdats"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Diskutrymme</strong>",
|
||||
"whyRich": "≥ 1024 MB ledigt i <code>/var/cache/apt/archives</code> för hämtade .deb-filer"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Anslutning</strong>",
|
||||
"whyRich": "Ping till <code>download.proxmox.com</code> — om det misslyckas startar inte uppgraderingen"
|
||||
},
|
||||
{
|
||||
"checkRich": "<strong>Ceph 19.x Squid</strong>",
|
||||
"whyRich": "Installerat Ceph måste redan vara 19.x. PVE 9 fungerar inte med Ceph 17/18. Alternativen <code>--ignore-ceph-check</code> och <code>--warn-ceph-check</code> kringgår kontrollen; använd dem endast om du förstår följderna."
|
||||
}
|
||||
]
|
||||
},
|
||||
"distUpgradeHeading": "Kommandot dist-upgrade (automatiskt läge)",
|
||||
"distUpgradeCode": "apt-get -y \\\n -o Dpkg::Options::='--force-confdef' \\\n -o Dpkg::Options::='--force-confold' \\\n dist-upgrade",
|
||||
"distUpgradeOutro": "Utdata visas i realtid på stdout och sparas även i <code>/var/log/pve8-a-pve9-<timestamp>.log</code>. Allt är synligt; endast frågorna hoppas över.",
|
||||
"postHeading": "Åtgärder efter uppgraderingen (automatiskt läge)",
|
||||
"postItems": [
|
||||
"<strong>EFI-värdar:</strong> installerar <code>grub-efi-amd64</code> enligt det kända problemet i Proxmox dokumentation. Uppgraderingen installerar inte paketet automatiskt och det kan behövas vid nästa start.",
|
||||
"<strong>Enterprise-källa utan prenumeration.</strong> pve-manager 9 lägger till <code>pve-enterprise.sources</code> under uppgraderingen; i no-subscription-läget sätter skriptet den till <code>Enabled: false</code>.",
|
||||
"<strong>Kör <code>pve8to9 --full</code> igen.</strong> Visar kvarstående problem. Vid FAIL-fel visas samma reparationsmeny som under förkontrollen.",
|
||||
"<strong>Fråga om omstart.</strong> Omstart rekommenderas för att läsa in den nya kärnan och tjänsterna. Avböj endast av ett konkret skäl: det innebär risker att använda den gamla kärnan efter ett huvudversionsbyte."
|
||||
]
|
||||
},
|
||||
"interactive": {
|
||||
"heading": "Interaktivt läge",
|
||||
"intro": "Samma förlopp som <autolink>automatiskt läge</autolink>: samma förkontroller, ändrade paketkällor och slutkontroll. Skillnaden gäller <code>dist-upgrade</code>: <strong>du besvarar själv varje dpkg-fråga om konfigurationskonflikter</strong>. ProxMenux kör <code>apt-get dist-upgrade</code> utan alternativen <code>--force-conf*</code>.",
|
||||
"distUpgradeHeading": "kommandot för dist-upgrade (interaktivt läge)",
|
||||
"distUpgradeCode": "apt-get dist-upgrade\n# (user answers each dpkg config-file conflict prompt as it appears)",
|
||||
"whenHeading": "När interaktivt är rätt val",
|
||||
"whenItems": [
|
||||
"Du har anpassat <code>/etc/lvm/lvm.conf</code>, <code>/etc/ssh/sshd_config</code>, <code>/etc/default/grub</code> eller någon annan konfigfil som blir rörd av uppgraderingen.",
|
||||
"Du vill se vilka paket som orsakar konflikter och fatta beslut för varje fil.",
|
||||
"Du uppgraderar en produktionsvärd där någon dold förändring är oacceptabel."
|
||||
],
|
||||
"promptCalloutTitle": "Vad du ska svara på varje fråga",
|
||||
"promptCalloutBody": "Samma rekommendationer gäller som för det manuella förfarandet: se <dpkglink>Rekommenderade svar på dpkg-frågor</dpkglink> nedan. Ange <strong>D</strong> för att se skillnaderna eller <strong>Z</strong> för att öppna ett skal."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Manuellt uppgraderingsförfarande",
|
||||
"intro": "Detta visar menyalternativet <strong>Manuell uppgraderingsguide</strong>: <wikilink>Proxmox officiella wiki för uppgradering från 8 till 9</wikilink>, uppdelad i fyra faser. Skriptet <em>visar</em> kommandona; du kör dem själv i ett separat root-skal. Varje steg är synligt.",
|
||||
"rootCalloutTitle": "Alla kommandon kräver root",
|
||||
"rootCalloutBody": "Använd ett root-skal för kommandona, även för omdirigeringar och here-dokument. Med <code>sudo</code> måste hela kommandot köras med root-behörighet.",
|
||||
"phase1Heading": "Fas 1 - Förberedelse",
|
||||
"phase1Intro": "Uppdatera värden till senaste PVE 8.4.x, verifiera version och Ceph om det används, kör Proxmox förkontroll och starta en terminalmultiplexer för att klara avbrutna anslutningar.",
|
||||
"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": "Fas 2 — Ändra paketkällor",
|
||||
"phase2Intro": "Byt från Bookworm till Trixie i alla Debian- och Proxmox-paketkällor och konvertera Proxmox-källorna till deb822. <strong>Välj steg 7 ELLER 8</strong> beroende på Enterprise-abonnemang. Hoppa över steg 9 om du inte använder 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": "Fas 3 — dist-upgrade",
|
||||
"phase3Intro": "Själva uppgraderingen. Steg 12 är valfritt men rekommenderas för att minska audit-meddelanden. Steg 13 tar längre tid: besvara dpkg-frågorna enligt tabellen. Steg 13.1 gäller endast EFI och följer de officiellt kända problemen.",
|
||||
"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": "Rekommenderade svar för dpkg-prompts",
|
||||
"dpkgIntro": "Rekommendationer från Proxmox: <strong>Y</strong> installerar paketunderhållarens nya fil och skriver över din; <strong>N</strong> behåller din befintliga fil. Granska skillnaderna först om du är osäker:",
|
||||
"dpkgTable": {
|
||||
"fileHeader": "Fil / prompt",
|
||||
"answerHeader": "Rekommenderat svar",
|
||||
"whyHeader": "Varför",
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "/etc/issue",
|
||||
"answerRich": "<strong>N</strong> (behåll befintlig fil)",
|
||||
"whyRich": "Banner du är van vid att se",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/lvm/lvm.conf",
|
||||
"answerRich": "<strong>Y</strong> (paketunderhållarens version)",
|
||||
"whyRich": "PVE 9 behöver de nya LVM-standardvärdena",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/ssh/sshd_config",
|
||||
"answerRich": "<strong>Y</strong> om endast standardändringar finns; granska anpassade filer först",
|
||||
"whyRich": "Granska lokala SSH-inställningar och säkerställ åtkomsten innan filen ersätts. Standardändringarna omfattar omdöpta alternativ och kommentarer.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/default/grub",
|
||||
"answerRich": "<strong>N</strong> om anpassad",
|
||||
"whyRich": "Här finns startparametrar, till exempel IOMMU och PCI-genomkoppling",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "/etc/chrony/chrony.conf",
|
||||
"answerRich": "<strong>Y</strong> om oförändrad; bevara lokala inställningar först",
|
||||
"whyRich": "Trixie uppdaterar standardvärdena för tidssynkronisering. Flytta lokala inställningar till chronys conf.d / sources.d innan den nya filen godtas.",
|
||||
"fileFont": true
|
||||
},
|
||||
{
|
||||
"fileRich": "Omstart av tjänster under uppgraderingen",
|
||||
"answerRich": "<strong>Ja</strong> (standard)",
|
||||
"whyRich": "Startar om de flesta tjänster utan att starta om värden",
|
||||
"fileFont": false
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>apt-listchanges</code>",
|
||||
"answerRich": "Tryck på <kbd>q</kbd>",
|
||||
"whyRich": "Avslutar endast textvisaren; informationen är en sammanfattning av ändringsloggen",
|
||||
"fileFont": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"inspectCalloutTitle": "Inspektera en specifik dpkg-konflikt",
|
||||
"inspectCalloutBody": "Vid en dpkg-fråga om konfigurationsfiler visar <strong>D</strong> skillnaderna mellan din fil och den nya versionen; <strong>Z</strong> öppnar ett skal för närmare granskning. Då kan du fatta ett underbyggt beslut.",
|
||||
"phase4Heading": "Fas 4 - Post-upgrade",
|
||||
"phase4Intro": "Verifiera att uppgraderingen slutförts, starta om med PVE 9-kärnan och kontrollera versionen. Därefter kan kvarvarande gamla <code>.list</code>-filer konverteras till 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": "Kluster och Ceph",
|
||||
"clusterCalloutTitle": "Cluster: uppgradera noder en i taget",
|
||||
"clusterCalloutBody": "Identifieras med <code>pvecm status</code>. <strong>Uppgradera inte</strong> flera noder samtidigt. Flytta gästerna, uppgradera noden, starta om och verifiera klustermedlemskapet innan du fortsätter. Under uppgraderingen fungerar livemigrering från äldre till nyare PVE-versioner; motsatt riktning stöds normalt inte. HA-grupper omvandlas automatiskt till HA-regler när alla noder kör PVE 9.",
|
||||
"cephCalloutTitle": "Ceph: uppgradera Ceph FÖRST, sedan Proxmox",
|
||||
"cephCalloutBody": "Ceph måste redan köra 19.x Squid före Proxmox-uppgraderingen. Följ den officiella ordningen Quincy 17 → Reef 18 → Squid 19: uppdatera paket och starta om Ceph-demoner stegvis i dokumenterad ordning. Kontrollera <code>ceph --version</code> före varje Proxmox-nod. Fullständigt förfarande: <cephlink>wikin för uppgradering av Ceph Reef till Squid</cephlink>."
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Felsökning",
|
||||
"items": [
|
||||
{
|
||||
"title": "Skriptet avbryts: \"This script cannot be executed from the Proxmox web terminal\"",
|
||||
"bodyRich": "Öppna en SSH-anslutning eller använd konsol / IPMI / iKVM och kör igen. Starta först <code>tmux new -s pveupgrade</code> för att klara korta nätavbrott."
|
||||
},
|
||||
{
|
||||
"title": "pve8to9 rapporterar FAIL och reparationsalternativ 1 ger \"command not found\"",
|
||||
"bodyRich": "Om felet nämner <code>configure_repositories</code> är skriptkopian gammal: aktuell reparation använder cleanup_duplicate_repos och ensure_repositories. Uppdatera kopian eller granska de manuella kommandona med alternativ 2. <code>apt-get update</code> uppdaterar paketlistor men löser inte alla blockerande kontroller."
|
||||
},
|
||||
{
|
||||
"title": "apt-simuleringen varnar för \"proxmox-ve will be REMOVED\"",
|
||||
"bodyRich": "De nya paketkällorna är oåtkomliga eller kodnamnet har inte ändrats. Kontrollera <code>cat /etc/apt/sources.list.d/proxmox.sources</code>: raden <code>Suites:</code> ska ange <code>trixie</code> i stället för <code>bookworm</code>. <code>apt-cache policy proxmox-ve</code> ska visa en 9.x-kandidat från den nya källan."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade misslyckas under körningen",
|
||||
"bodyRich": "Kör <code>apt-get -f install</code> för att lösa brutna beroenden, kör sedan om uppgraderingen. Om det misslyckas, kolla in loggen på <code>/var/log/pve8-a-pve9-<timestamp>.log</code> - de sista raderna brukar ange det förolämpande paketet. Starta inte om förrän <code>dpkg -l | grep ^iU</code> returnerar tomma (inga halvinstallerade paket)."
|
||||
},
|
||||
{
|
||||
"title": "EFI värd kommer inte starta efter omstart",
|
||||
"bodyRich": "Installationen av <code>grub-efi-amd64</code> efter uppgraderingen hanterar detta. Om steget hoppades över eller misslyckades, starta Proxmox-ISO:n i räddningsläge, montera rotfilsystemet, använd chroot och kör <code>apt-get install grub-efi-amd64 && update-grub</code>."
|
||||
},
|
||||
{
|
||||
"title": "GUI laddas inte efter uppgradering",
|
||||
"bodyRich": "Kör <code>systemctl status pveproxy</code> och <code>systemctl restart pveproxy</code>. Om problemet kvarstår, leta efter felet med <code>journalctl -u pveproxy -b</code>."
|
||||
},
|
||||
{
|
||||
"title": "Nätverk fungerar inte efter omstart",
|
||||
"bodyRich": "Kontrollera att <code>/etc/network/interfaces</code> anger befintliga enheter och att <code>ifupdown2</code> är installerat: <code>apt install ifupdown2</code>. Om namnen ändrats, se <netlink>Beständiga gränssnittsnamn</netlink>."
|
||||
},
|
||||
{
|
||||
"title": "Cluster split-brain efter att ha uppgraderat en nod",
|
||||
"bodyRich": "Blandade PVE 8 / PVE 9-kluster stöds under uppgraderingen. Livemigrering från äldre till nyare versioner fungerar; motsatt riktning stöds normalt inte. Om noden visas som frånkopplad, kontrollera <code>corosync</code> och QDevice-/nätverkskonfigurationen. Kör <code>pvecm status</code> på varje nod för att bekräfta kvorum."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "Filer involverade",
|
||||
"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": "Officiella referenser",
|
||||
"intro": "Skriptets manuella förfarande följer dessa officiella källor. Vid osäkerhet under en uppgradering gäller den officiella wikin: ProxMenux hjälper dig att utföra stegen, men Proxmox är referensen.",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Upgrade_from_8_to_9",
|
||||
"title": "Uppgradera från 8 till 9",
|
||||
"desc": "Den viktigaste Proxmox wiki sida för 8 → 9 uppgradering. Sanningens källa för varje kommando i det manuella förfarandet ovan."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid",
|
||||
"title": "Uppgradering till Ceph Squid (19.x)",
|
||||
"desc": "Obligatoriskt förberedande steg för hyperkonvergerade Ceph-noder. Ceph måste köra 19.x Squid före PVE 9."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Roadmap",
|
||||
"title": "Utvecklingsplan för Proxmox VE",
|
||||
"desc": "Versionsinformation för PVE 9 och ändringar sedan 8.x — läs före uppgraderingen."
|
||||
},
|
||||
{
|
||||
"href": "https://www.debian.org/releases/trixie/releasenotes",
|
||||
"title": "Versionsinformation för Debian Trixie",
|
||||
"desc": "PVE 9 bygger på Debian Trixie. Debians versionsinformation beskriver ändringar i operativsystemet som även påverkar din värd."
|
||||
},
|
||||
{
|
||||
"href": "https://forum.proxmox.com/forums/proxmox-ve-installation-and-configuration.16/",
|
||||
"title": "Proxmox VE installationsforum",
|
||||
"desc": "Om något går fel under uppgraderingen, sök först i forumet. Någon kan redan ha stött på samma problem."
|
||||
},
|
||||
{
|
||||
"href": "https://pve.proxmox.com/wiki/Backup_and_Restore",
|
||||
"title": "Säkerhetskopiering och återställning",
|
||||
"desc": "En storversionsuppgradering är inte reversibel. Kontrollera din backup disciplin innan du börjar."
|
||||
}
|
||||
]
|
||||
},
|
||||
"video": {
|
||||
"heading": "Videoguide",
|
||||
"intro": "Föredrar att titta på uppgraderingen kör slut innan du gör det själv? Denna genomgång visar ProxMenux uppgraderingsflöde i realtid.",
|
||||
"title": "ProxMenux — Videoguide för att uppgradera Proxmox VE 8 till 9",
|
||||
"caption": "Extern YouTube-video. Spelas i utökat integritetsläge, utan cookies tills du startar videon."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Relaterat",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Proxmox systemuppdatering",
|
||||
"tail": " — för vanliga uppdateringar inom samma huvudversion (8.4.1 → 8.4.5 osv.)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Verktygsöversikt",
|
||||
"tail": " — tillbaka till avsnittets översikt."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "UUP Dump ISO-skapare | ProxMenux-dokumentation",
|
||||
"description": "Skapa en aktuell Windows-installations-ISO på Proxmox-värden med ProxMenux UUP Dump ISO-skapare. Automatiserar installation av beroenden, nedladdning och konvertering av UUP-filer till en startbar ISO för att skapa en VM.",
|
||||
"ogTitle": "UUP Dump ISO-skapare | ProxMenux-dokumentation",
|
||||
"ogDescription": "Skapa en aktuell Windows-ISO med UUP Dump och ProxMenux. Beroenden, nedladdning och konvertering hanteras helt automatiskt.",
|
||||
"ogImageAlt": "ProxMenux — UUP Dump ISO-skapare"
|
||||
},
|
||||
"header": {
|
||||
"title": "UUP Dump ISO-skapare",
|
||||
"description": "Skapa en aktuell Windows-installations-ISO på Proxmox-värden med UUP Dump. ProxMenux hanterar beroenden, laddar ner UUP-filer parallellt, kör UUP Dump-konverteraren och flyttar ISO-filen till den valda utdatakatalogen. Standardvalet är den identifierade ISO-lagringen i Proxmox.",
|
||||
"section": "Verktyg"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Vad skriptet gör",
|
||||
"body": "Ange en URL som uupdump.net skapar efter val av version, språk och utgåva. Skriptet installerar saknade beroenden, laddar ner UUP Dump-konverteraren och UUP-filerna, skapar en startbar Windows-ISO och flyttar den till den valda utdatakatalogen. Den identifierade ISO-lagringen i Proxmox föreslås som standardmål."
|
||||
},
|
||||
"hero": {
|
||||
"imageAlt": "UUP Dump ISO Creator i ProxMenux-menyn",
|
||||
"caption": "UUP Dump ISO Creator i ProxMenux-menyn"
|
||||
},
|
||||
"what": {
|
||||
"heading": "Vad är UUP Dump?",
|
||||
"intro": "UUP Dump är en communitytjänst som låter dig ladda ner de ursprungliga Unified Update Platform-filerna (UUP) som Windows Update använder för att distribuera Windows. Filerna kan sammanställas till en vanlig startbar ISO. Det ger dig:",
|
||||
"items": [
|
||||
"Den senaste Windows-versionen, inklusive Insider Preview-kanaler.",
|
||||
"En viss äldre version som inte längre visas på Microsofts nedladdningssida.",
|
||||
"Rena, omodifierade filer som kommer direkt från Microsofts servrar.",
|
||||
"Den exakta kombinationen av utgåvor och språk du vill ha i en enda ISO."
|
||||
],
|
||||
"learnMore": "Läs mer på <extlink>UUP Dump-projektsidan</extlink>."
|
||||
},
|
||||
"automates": {
|
||||
"heading": "Vad skriptet automatiserar"
|
||||
},
|
||||
"dependencies": {
|
||||
"heading": "Beroenden",
|
||||
"intro": "Skriptet kontrollerar först verktygen som behövs för att ladda ner UUP-filer och skapa ISO-filen. Verktyg som saknas installeras med <code>apt-get</code>:",
|
||||
"headerPackage": "Paket",
|
||||
"headerRole": "Funktion",
|
||||
"rows": [
|
||||
{
|
||||
"pkg": "curl",
|
||||
"roleRich": "HTTP-nedladdningar för att starta konverteraren."
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"roleRich": "Parallell nedladdning av alla UUP-filer."
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"roleRich": "Extraherar Microsoft CAB-paket."
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"roleRich": "Bygger <code>install.wim</code> (wimlib-imagex)."
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"roleRich": "Skriver den slutliga startbara ISO (eller <code>mkisofs</code>)."
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"roleRich": "Ändrar Windows-registerfiler under skapandet."
|
||||
}
|
||||
],
|
||||
"manualIntro": "Manuell motsvarighet - om du någonsin behöver installera dem själv:",
|
||||
"manualCode": "apt-get install curl aria2 cabextract wimtools genisoimage chntpw"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Nedladdning och konvertering",
|
||||
"steps": [
|
||||
"Identifierar Proxmox ISO-lagring med <code>pvesm status -content iso</code> eller använder <code>/var/lib/vz/template/iso</code> som reserv.",
|
||||
"Begär en basmapp för tillfälliga filer (standard <code>/root/uup-temp</code>).",
|
||||
"Laddar ner UUP Dump-konverteraren från <code>git.uupdump.net</code>.",
|
||||
"Läser <code>id</code>, <code>pack</code> och <code>edition</code> från URL:en som du klistrar in.",
|
||||
"Anropar <code>https://uupdump.net/get.php?…&aria2=2</code> för att skapa en aria2-nedladdningslista.",
|
||||
"Laddar ner alla UUP-filer till <code>UUPs/</code> med aria2, parallellt och med möjlighet att återuppta.",
|
||||
"Kör <code>convert.sh wim UUPs 1</code> från omvandlaren för att producera den slutliga ISO.",
|
||||
"Flyttar ISO-filen till den valda utdatakatalogen och tar bort tillfälliga filer."
|
||||
]
|
||||
},
|
||||
"aria2": {
|
||||
"heading": "aria2-alternativ som används för nedladdning",
|
||||
"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> — upp till 16 anslutningar per server.",
|
||||
"<code>-s16</code> - delar upp varje fil i 16 segment.",
|
||||
"<code>-j5</code> — 5 filer som laddats ned parallellt.",
|
||||
"<code>-c</code> - återupptar partiella nedladdningar.",
|
||||
"<code>-R</code> — ger den nedladdade filen fjärrfilens tidsstämpel om den är tillgänglig."
|
||||
],
|
||||
"runtime": "En typisk körning tar omkring 10 minuter och beror framför allt på internetanslutningens hastighet och belastningen på UUP Dumps nedladdningsservrar."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Steg 1 · Få en UUP Dump URL",
|
||||
"intro": "Innan du kör skriptet behöver du en UUP Dump URL som innehåller <code>id</code>, <code>pack</code> och <code>edition</code> frågeparametrar. Skapa den på <extlink>uupdump.net</extlink>:",
|
||||
"stepBadge": "Steg",
|
||||
"items": [
|
||||
{
|
||||
"title": "Välj en Windows-version",
|
||||
"img": "/iso-creator/step-1-select-version-windows.png",
|
||||
"caption": "UUP Dump huvudsida - välj en Windows-version",
|
||||
"body": "Öppna UUP Dump hemsida och välj den Windows-version du vill ha."
|
||||
},
|
||||
{
|
||||
"title": "Välj en viss version",
|
||||
"img": "/iso-creator/step-2-select-version-windows.png",
|
||||
"caption": "Välj en viss version",
|
||||
"body": "Välj version: den senaste, en Insider Preview-kanal eller en viss äldre version som fortfarande visas."
|
||||
},
|
||||
{
|
||||
"title": "Välj ett språk",
|
||||
"img": "/iso-creator/step-3-select-version-windows.png",
|
||||
"caption": "Välj ett språk",
|
||||
"body": "Välj språket som ska ingå i ISO-filen."
|
||||
},
|
||||
{
|
||||
"title": "Välj utgåvor",
|
||||
"img": "/iso-creator/step-4-select-version-windows.png",
|
||||
"caption": "Välj utgåvorna att inkludera",
|
||||
"body": "Välj utgåvor för att bunta i ISO (Home, Pro, Enterprise, ...). Du kan kombinera flera."
|
||||
},
|
||||
{
|
||||
"title": "Kopiera URL",
|
||||
"img": "/iso-creator/step-5-select-version-windows.png",
|
||||
"caption": "Kopiera webbadressen från adressfältet",
|
||||
"bodyRich": "Kopiera URL:en <em>från webbläsarens adressfält</em> på den sista sidan. Den måste innehålla <code>id=…</code>, <code>pack=…</code> och <code>edition=…</code>. Det är den sträng som skriptet läser."
|
||||
}
|
||||
]
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Steg 2 · Kör skaparen",
|
||||
"intro": "När URL:en är kopierad öppnar du ProxMenux och startar ISO-skaparen:",
|
||||
"stepBadge": "Steg",
|
||||
"items": [
|
||||
{
|
||||
"title": "Starta UUP Dump ISO Creator",
|
||||
"img": "/iso-creator/start-uupdump-iso-creator.png",
|
||||
"caption": "Starta UUP Dump ISO Creator från ProxMenux",
|
||||
"bodyRich": "Öppna <strong>Utilities → UUP Dump ISO Creator</strong> i ProxMenux. Skriptet kontrollerar beroenden och ISO-katalogen innan det frågar efter uppgifter."
|
||||
},
|
||||
{
|
||||
"title": "Klistra in UUP Dump-URL:en",
|
||||
"img": "/iso-creator/add-url-iso-creator.png",
|
||||
"caption": "Klistra in URL:en som du kopierade från uupdump.net",
|
||||
"body": "Klistra in URL:en i inmatningsdialogen. Skriptet kontrollerar att de tre obligatoriska parametrarna finns och avslutar ordnat om någon saknas."
|
||||
},
|
||||
{
|
||||
"title": "Vänta tills ISO-filen är klar",
|
||||
"img": "/iso-creator/end-uupdump-iso-creator.png",
|
||||
"caption": "Skapandet är klart: ISO-filen finns i Proxmox ISO-lagring",
|
||||
"bodyRich": "Konsolen visar aria2-förloppet och sedan konverterarens utdata. Den färdiga ISO-filen flyttas till den valda utdatakatalogen. Om den ligger i konfigurerad Proxmox ISO-lagring kan du välja den via <strong>Skapa VM System Windows → Installera med personlig ISO</strong>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tempFiles": {
|
||||
"title": "Tillfälliga filer",
|
||||
"body": "Den tillfälliga standardmappen är <code>/root/uup-temp</code>, med nedladdningar i <code>UUPs/</code> och konverteraren i <code>converter/</code>. En egen bassökväg får en separat sessionsunderkatalog. Grenarna för lyckat skapande och utebliven ISO-fil tar bort den tillfälliga sessionen. Tidigare fel eller avbrott kan lämna kvar tillfälliga filer."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user