Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Betriebssystemprobleme

Der Harvester läuft auf einem OpenSUSE-basierten Betriebssystem. Das Betriebssystem ist ein Artefakt, das von dem elemental-toolkit erzeugt wurde. Die folgenden Abschnitte enthalten Informationen und Tipps, um Benutzern bei der Fehlersuche von betriebssystembezogenen Problemen zu helfen.

Wie man sich in einen Harvester-Knoten einloggt

Benutzer können sich mit dem Benutzernamen rancher und dem während der Installation bereitgestellten Passwort oder SSH-Schlüsselpaar in einen Harvester-Knoten einloggen. Der Benutzer rancher kann privilegierte Befehle ausführen, ohne ein Passwort einzugeben:

# Run a privileged command
rancher@node1:~> sudo blkid

# Or become root
rancher@node1:~> sudo -i
node1:~ # blkid

Wie kann ich Pakete installieren? Warum sind einige Pfade schreibgeschützt?

Das Dateisystem des Betriebssystems ist, ähnlich wie ein Container-Image, bildbasiert und unveränderlich, außer in einigen Verzeichnissen.

Wir empfehlen, einen Toolbox-Container zu verwenden, um Programme, die nicht im Harvester-Betriebssystem verpackt sind, zu Debugging-Zwecken auszuführen. Bitte siehe diesen Artikel, um zu lernen, wie man einen Toolbox-Container erstellt und ausführt.

Das Harvester-Betriebssystem bietet auch eine Möglichkeit, den Lese- und Schreibzugriff vorübergehend zu aktivieren. Bitte folgen Sie den folgenden Schritten:

Das Aktivieren des Lese- und Schreibzugriffs könnte Ihr System beschädigen, wenn Dateien geändert werden. Bitte verwenden Sie es auf eigenes Risiko.

  • Für die Version v0.3.0 müssen wir zunächst einen Workaround anwenden, um nach Aktivierung des Lese- und Schreibzugriffs einige Verzeichnisse vom Overlay auszunehmen. Führen Sie auf einem laufenden Harvester-Knoten den folgenden Befehl als Root aus:

      cat > /oem/91_hack.yaml <<'EOF'
      name: "Rootfs Layout Settings for debugrw"
      stages:
        rootfs:
          - if: 'grep -q root=LABEL=COS_STATE /proc/cmdline && grep -q rd.cos.debugrw /proc/cmdline'
            name: "Layout configuration for debugrw"
            environment_file: /run/cos/cos-layout.env
            environment:
              RW_PATHS: " "
      EOF
  • Starten Sie das System neu, um zum GRUB-Menü zu gelangen. Drücken Sie ESC, um im Menü zu bleiben.

    grub menu
  • Drücken Sie e im ersten Menüeintrag. Fügen Sie rd.cos.debugrw zur linux (loop0)$kernel $kernelcmd Zeile hinzu. Drücken Sie Ctrl + x, um das System zu starten.

    edit boot parameter

Wie man Kernel-Parameter dauerhaft bearbeitet.

Die folgenden Schritte sind eine Umgehungslösung. Harvester wird die Gemeinschaft informieren, sobald eine dauerhafte Lösung implementiert ist.

  • Mounten Sie das Zustandsverzeichnis im Lese- und Schreibzugriffsmodus neu:

      # blkid -L COS_STATE
      /dev/vda2
      # mount -o remount,rw /dev/vda2 /run/initramfs/cos-state
  • Bearbeiten Sie die GRUB-Konfigurationsdatei und fügen Sie Parameter zur linux (loop0)$kernel $kernelcmd Zeile hinzu. Das folgende Beispiel fügt einen nomodeset Parameter hinzu:

      # vim /run/initramfs/cos-state/grub2/grub.cfg
      menuentry "${display_name}" --id cos {
        # label is kept around for backward compatibility
        set label=${active_label}
        set img=/cOS/active.img
        loopback $loopdev /$img
        source ($loopdev)/etc/cos/bootargs.cfg
        linux ($loopdev)$kernel $kernelcmd ${extra_cmdline} ${extra_active_cmdline} nomodeset
        initrd ($loopdev)$initramfs
      }
  • Starten Sie neu, damit die Änderungen wirksam werden.

Wie man den Standard-GRUB-Bootmenüeintrag ändert.

Um den Standardeintrag zu ändern, überprüfen Sie zuerst das --id Attribut eines Menüeintrags. GRUB-Menüeinträge befinden sich in den folgenden Dateien:

  • /run/initramfs/cos-state/grub2/grub.cfg: Enthält die Standard-, Fallback- und Wiederherstellungseinträge.

  • /run/initramfs/cos-state/grubcustom: Enthält den Debug-Eintrag.

Im folgenden Beispiel hat der Eintrag die ID debug.

# cat \
    /run/initramfs/cos-state/grub2/grub.cfg \
    /run/initramfs/cos-state/grubcustom

<...>
menuentry "${display_name} (debug)" --id debug {
  search --no-floppy --set=root --label COS_STATE
  set img=/cOS/active.img
  set label=COS_ACTIVE
  loopback loop0 /$img
  set root=($root)
  source (loop0)/etc/cos/bootargs.cfg
  linux (loop0)$kernel $kernelcmd ${extra_cmdline} ${extra_passive_cmdline} ${crash_kernel_params}
  initrd (loop0)$initramfs
}

Sie können den Standardeintrag konfigurieren, indem Sie die folgenden Befehle ausführen:

# mount -o remount,rw /run/initramfs/cos-state
# grub2-editenv /run/initramfs/cos-state/grub_oem_env set saved_entry=debug

Falls erforderlich, können Sie die Änderung mit dem Befehl grub2-editenv /run/initramfs/cos-state/grub_oem_env unset saved_entry rückgängig machen.

Wie man einen Systemabsturz oder -hänger debuggt.

Sammeln Sie das Absturzprotokoll

Wenn Kernel-Panik-Spuren im Systemprotokoll nicht aufgezeichnet werden, wenn ein System abstürzt, ist eine zuverlässige Möglichkeit, das Absturzprotokoll zu finden, die Verwendung einer seriellen Konsole.

Um die Ausgabe von Kernel-Nachrichten an eine serielle Konsole zu aktivieren, verwenden Sie bitte die folgenden Schritte:

  • Starten Sie das System im GRUB-Menü. Drücken Sie ESC, um im Menü zu bleiben.

    grub menu

  • Drücken Sie e im ersten Menüeintrag. Fügen Sie console=ttyS0,115200n8 zur linux (loop0)$kernel $kernelcmd Zeile hinzu. Drücken Sie Ctrl + x, um das System zu starten.

    edit boot parameter serial

    Passen Sie die Konsoleinstellungen an Ihre Umgebung an. Stellen Sie sicher, dass Sie die console= Zeichenfolge am Ende der Zeile anhängen.

  • Verbinden Sie sich mit dem seriellen Port, um Protokolle zu erfassen.

Sammeln Sie Absturzabbilder

Für Kernel-Panik-Abstürze können Sie kdump verwenden, um Absturzabbilder zu sammeln.

Standardmäßig wird das Betriebssystem ohne aktivierte kdump-Funktion gestartet. Benutzer können die Funktion aktivieren, indem sie den debug Menüeintrag beim Booten auswählen, wie im folgenden Beispiel:

grub menu debug

Wenn ein System abstürzt, wird ein Absturzabbild im /var/crash/<time> Verzeichnis gespeichert. Die Bereitstellung des Absturzabbilds an die Entwickler hilft ihnen, Probleme zu beheben und zu lösen.