-
Hintergrund
-
Eine elektronische Vorrichtung kann verschiedene Module beinhalten, die maschinenlesbare Anweisungen, beispielsweise Boot-Code (z. B. Basic Input/Output System Code oder Unified Extensible Firmware Interface (UEFI) Code), ein Betriebssystem, eine Anwendung und dergleichen beinhalten. Wenn ein Modul in der elektronischen Vorrichtung einen Fehler aufweist, kann es sein, dass die elektronische Vorrichtung nicht mehr ordnungsgemäß funktioniert.
-
Kurze Beschreibung der Zeichnungen
-
Einige Ausführungsformen werden in Bezug auf die folgenden Figuren beschrieben:
-
1 ist ein Blockschema einer elektronischen Vorrichtung, die einige Implementierungen verkörpert;
-
2 ist ein Ablaufdiagramm eines Modulwiederherstellungsprozesses gemäß manchen Implementierungen; und
-
3 ist ein Blockschema einer elektronischen Vorrichtung gemäß weiteren Implementierungen.
-
Ausführliche Beschreibung
-
Ein Modul (das maschinenlesbare Anweisungen einschließt) in einer elektronischen Vorrichtung kann aus mehreren Gründen einen Fehler aufweisen. In manchen Beispielen kann dieser Fehler auf Korrumpierung zurückgehen, die durch Schadprogramme (z. B. einen Virus oder eine andere Art von bösartigem Code) verursacht wurde. Ein Fehler kann auch durch Korrumpierung in verschiedenen Datenstrukturen, die von dem Modul genutzt werden, verursacht werden. Es kann auch andere Ursachen für Fehler in einem Modul geben.
-
Beispiele für Module in einer elektronischen Vorrichtung können jedes beliebige oder eine Kombination der Folgenden beinhalten: einen Boot-Code (z. B. einen Basic Input/Output System(BIOS)-Code oder Unified Extensible Firmware Interface(UEFI)-Code), ein Betriebssystem, einen Gerätetreiber, eine Anwendung und dergleichen. Man beachte, dass UEFI-Code als Ersatz für herkömmlichen BIOS-Code bereitgestellt wird. In der nachfolgenden Erörterung soll eine Bezugnahme auf ”BIOS-Code” sowohl herkömmlichen BIOS-Code als auch UEFI-Code meinen. Ein Fehler in einem Modul der elektronischen Vorrichtung kann eine Fehlfunktion der elektronischen Vorrichtung bewirken oder kann zu einer schlechteren Leistung der elektronischen Vorrichtung führen. Wenn zum Beispiel der Boot-Code oder das Betriebssystem der elektronischen Vorrichtung abstürzt, dann wäre die elektronische Vorrichtung eventuell nicht mehr einsatzfähig, da die elektronische Vorrichtung nicht mehr in der Lage wäre, ordnungsgemäß zu starten. Wenn in einem anderen Beispiel ein Gerätetreiber einen Fehler aufzeigt, dann könnte es sein, dass nicht mehr auf eine entsprechende Hardware-Komponente der elektronischen Vorrichtung zugegriffen werden kann. Ein Fehler in einer Anwendung kann dazu führen, dass der Benutzer die Anwendung nicht mehr nutzen kann, um gewünschte Aufgaben auszuführen.
-
Als Antwort auf einen Fehler in einem Modul kann ein Benutzer versuchen, unter Verwendung eines Update-Moduls (Update-Code), das auf einem Speichermedium, beispielsweise einem Festplattenlaufwerk, einem Universal Serial Bus(USB)-Speichermedium oder einem anderen Wechseldatenträger bereitgestellt wird, ein Update des fehlerhaften Moduls durchzuführen (entweder durch Ersetzen des Moduls oder durch Reparieren des Moduls). Allerdings kann es für den Benutzer in Fällen, in denen ein Speichermedium mit einem Update-Modul nicht ohne weiteres verfügbar ist, schwierig sein, das fehlerhafte Modul wiederherzustellen.
-
Gemäß manchen Implementierungen ist es nicht nötig, ein fehlerhaftes Modul unter Verwendung eines Codes auf einem Speichermedium wiederherzustellen; stattdessen kann man einen Preboot-Netzwerkstapel der elektronischen Vorrichtung verwenden, um über ein Netzwerk ein Update-Modul zum Wiederherstellen des fehlerhaften Moduls abzurufen. Der Preboot-Netzwerkstapel kann Teil eines Management-Untersystems sein, in dem der Preboot-Netzwerkstapel unabhängig ist von einem Netzwerkstapel, der mit einem Betriebssystem der elektronischen Vorrichtung assoziiert ist. Ein ”Netzwerkstapel” kann Netzwerkkommunikationsschichten beinhalten, die die Kommunikation über ein Netzwerk ermöglichen. Ein Netzwerk kann ein drahtgebundenes Netzwerk, ein drahtloses Netzwerk oder eine Kombination aus drahtgebundenen und drahtlosen Netzwerken sein.
-
Unter Verwendung des Preboot-Netzwerkstapels kann ein Abrufen eines Update-Moduls in einem Preboot-Kontext der elektronischen Vorrichtung durchgeführt werden. Ein Preboot-Kontext bezeichnet einen Zustand der elektronischen Vorrichtung vor dem Abschluss eines Boot-Vorgangs und vor dem Laden eines Betriebssystems. Der Boot-Vorgang einer elektronischen Vorrichtung beinhaltet das Ausführen eines Boot-Codes (z. B. BIOS-Codes) und das Laden des Betriebssystems der elektronischen Vorrichtung. Dadurch, dass es möglich ist, den Preboot-Netzwerkstapel zu verwenden, um ein Update-Modul abzurufen, ist die Fähigkeit zur Wiederherstellung eines fehlerhaften Moduls nicht von der ordnungsgemäßen Ausführung eines Boot-Codes oder eines Betriebssystems in der elektronischen Vorrichtung abhängig.
-
Auch wenn auf einen ”Preboot-Netzwerkstapel” Bezug genommen wird, sei klargestellt, dass ein solcher Netzwerkstapel, der unabhängig ist von dem mit dem Betriebssystem assoziierten Netzwerkstapel, auch dazu verwendet werden kann, eine Kommunikation durchzuführen (einschließlich einer Kommunikation zum Abrufen eines Update-Moduls), nachdem das Booten der elektronischen Vorrichtung abgeschlossen und das Betriebssystem geladen worden ist. Somit bezeichnet ein Preboot-Netzwerkstapel einen Netzwerkstapel, der in der Lage ist, sowohl im Preboot-Kontext als auch nach dem erfolgreichen Booten der elektronischen Vorrichtung und dem Laden des Betriebssystems zu operieren.
-
1 ist ein Blockschema eines Beispiels für eine elektronische Vorrichtung 100, die einen Fehler-Manager 102, ein Betriebssystem (OS) 104 und einen mit dem OS 104 assoziierten Netzwerkstapel 106 beinhaltet. In der folgenden Erörterung wird der Netzwerkstapel 106 als ein ”mit dem OS assoziierter Netzwerkstapel” bezeichnet. Auch wenn der Netzwerkstapel 106 außerhalb des OS 104 dargestellt ist, sei klargestellt, dass der Netzwerkstapel 106 in manchen Implementierungen als Teil des OS 104 betrachtet werden kann.
-
Die elektronische Vorrichtung 100 weist ferner ein Management-Untersystem 108 auf, das einen anderen Netzwerkstapel 110 aufweist, der unabhängig ist von dem mit dem OS assoziierten Netzwerkstapel 106. Dieser Netzwerkstapel 110 kann als Preboot-Netzwerkstapel bezeichnet werden wie oben erörtert.
-
Das Management-Untersystem 108 wird verwendet, um verschiedene Managementaufgaben in Bezug auf die elektronische Vorrichtung 100 durchzuführen. Unter Verwendung des Netzwerkstapels 110, der unabhängig ist von dem mit dem OS assoziierten Netzwerkstapel 106, kann das Management-Untersystem 108 seine Managementaufgaben unter Verwendung von Out-of-Band-Netzwerkkonnektivität durchführen. Wenn die Netzwerkkonnektivität, die (unter Verwendung des mit dem OS assoziierten Netzwerkstapels 106) mit dem OS 104 assoziiert ist, als die In-Band-Netzwerkkonnektivität betrachtet wird (anders ausgedrückt wird diese Netzwerkkonnektivität dazu verwendet, die normalen Operationen der elektronischen Vorrichtung, die Netzwerkkommunikationen beinhalten, durchzuführen), dann bezeichnet die Out-of-Band-Netzwerkkonnektivität eine separate Konnektivität, die ohne die Beteiligung des mit dem OS assoziierten Netzwerkstapels 106 aufrechterhalten werden kann.
-
Wie weiter in 1 dargestellt ist, beinhaltet die elektronische Vorrichtung 100 eine physische Netzwerkschnittstelle 112, die eine Netzwerkkarte oder irgendeine Art von physischer Netzwerkschnittstelle sein kann. Sowohl der Netzwerkstapel 106 als auch der Netzwerkstapel 110 können über ein Netzwerk 114 durch die physische Netzwerkschnittstelle 112 kommunizieren. Obwohl in 1 nur eine physische Netzwerkschnittstelle dargestellt ist, sei klargestellt, dass in anderen Beispielen mehrere physische Netzwerkschnittstellen vorhanden sein können.
-
Beispiele für verschiedene Managementaufgaben, die unter Verwendung des Management-Untersystems 108 durchgeführt werden können, können jede beliebige oder eine Kombination der Folgenden beinhalten: Senden von Informationen über die elektronische Vorrichtung 100 als Antwort auf eine Abfrage von einem rechnerfernen Management-Server, Herunterladen von Schadprogramm-Signaturen von dem rechnerfernen Management-Server, Neustarten der elektronischen Vorrichtung als Antwort auf eine Aufforderung vom rechnerfernen Management-Server, Durchführen von Aufgaben zur Stellung der elektronischen Vorrichtung unter Quarantäne nach Erkennen einer Infektion durch Viren oder andere Schadprogramme und dergleichen.
-
Gemäß einigen Implementierungen kann das Management-Untersystem 108 (und insbesondere der Netzwerkstapel 110 im Management-Untersystem 108) vom Fehler-Manager 102 auch für den Zweck verwendet werden, ein Update-Modul 118 von einer rechnerfernen Netzwerkstelle 116 (die einen Server-Computer einschließt) zum Aktualisieren (oder Wiederherstellen) eines fehlerhaften Moduls der elektronischen Vorrichtung 100 zu beschaffen. Aktualisieren (oder Wiederherstellen) eines fehlerhaften Moduls kann das Ersetzen oder das Reparieren des fehlerhaften Moduls unter Verwendung des Update-Moduls bezeichnen.
-
Der Fehler-Manager 102 kann einen Fehler eines Moduls (beispielsweise des OS 104 oder irgendeines anderen Moduls in der elektronischen Vorrichtung 100) erkennen. Als Antwort auf die Erkennung des Fehlers kann der Fehler-Manager 102 den Netzwerkstapel 110 des Management-Untersystems 108 verwenden, um über das Netzwerk 114 auf die rechnerferne Netzwerkstelle 116 zuzugreifen, um das Update-Modul 118 an der Netzwerkstelle 116 abzurufen. Das abgerufene Update-Modul 118 kann verwendet werden, um das fehlerhafte Modul in der elektronischen Vorrichtung 100 wiederherzustellen.
-
Die Fähigkeit des Management-Untersystems 108 zur Durchführung von Netzwerkkommunikationen unter Verwendung seines Netzwerkstapels 110 (der unabhängig ist von dem mit dem OS assoziierten Netzwerkstapel 106) ermöglicht eine Abrufung des Update-Moduls 118 über das Netzwerk 114, auch wenn die elektronische Vorrichtung 100 nicht ordnungsgemäß starten kann. Tatsächlich kann das fehlerhafte Modul, das wiederhergestellt werden soll, das OS 104 oder der Boot-Code sein.
-
Der Netzwerkstapel 110 des Management-Untersystems 108 bietet auch eine größere Flexibilität, da der Netzwerkstapel 110 nicht von der Verwendung eines bestimmten rechnerfernen Boot-Protokolls, beispielsweise des Preboot Execution Environment(PXE)-Protokolls, abhängt. PXE-Kommunikationen können auf Kommunikationen zwischen PXE-Clients und PXE-Servern innerhalb eines sicheren Netzwerks, beispielsweise eines privaten Netzwerks eines Unternehmens (z. B. eines Unternehmenskonzerns, einer Bildungseinrichtung, einer Regierungsbehörde usw.) beschränkt sein.
-
Im Gegensatz dazu unterstützt der Netzwerkstapel 110 des Management-Untersystems 108 Kommunikationen in einer größeren Vielfalt von Umgebungen zum Zwecke des Abrufens des Update-Moduls 118 an der Netzwerkstelle 116. Die größere Vielfalt von Umgebungen kann eine Unternehmensumgebung und eine öffentliche Umgebung (beispielsweise das World Wide Web) beinhalten.
-
Die elektronische Vorrichtung 100 beinhaltet ferner einen Prozessor (oder mehrere Prozessoren) 118 und ein Speichermedium (oder Speichermedien) 120. Der Fehler-Manager 102 und das OS 104 sind auf dem Prozessor (den Prozessoren) 118 ausführbar. Obwohl dies nicht dargestellt ist, können auch andere Module in der elektronischen Vorrichtung 100 auf dem Prozessor (den Prozessoren) 118 ausführbar sein.
-
2 ist ein Ablaufdiagramm eines Modulwiederherstellungsprozesses 200 gemäß manchen Implementierungen. Der Prozess 200 kann in manchen Beispielen vom Fehler-Manager 102 ausgeführt werden. Der Prozess 200 erkennt (bei 202) einen Fehler eines bestimmten Moduls in der elektronischen Vorrichtung 100. In manchen Implementierungen kann die Erkennung des Fehlers innerhalb der elektronischen Vorrichtung 100 ohne Input von einem rechnerfernen Server stattfinden. Zum Beispiel kann der Fehler-Manager 102 einen Zeitnehmer starten, sobald das entsprechende Modul gestartet wird – wenn das entsprechende Modul nicht in der Lage ist, das Laden und die Ausführung innerhalb einer vorgegebenen Zeitspanne des Zeitnehmers abzuschließen, ist dies ein Hinweis auf einen Fehler des entsprechenden Moduls. In anderen Beispielen kann ein fehlerhaftes Modul eine Ausnahmemeldung oder eine andere Mitteilung ausgeben, die vom Fehler-Manager 102 empfangen wird. Unter Verwendung von Techniken gemäß manchen Implementierungen ist keine Beteiligung eines rechnerfernen Servers nötig, um eine Fehlererkennung an dem bestimmten Modul durchzuführen.
-
Als Antwort auf die Erkennung des Fehlers greift der Prozess 200 (bei 204) unter Verwendung von Netzwerkkommunikation über den Netzwerkstapel 110 des Management-Untersystems 108, der unabhängig ist von dem mit dem OS assoziierten Netzwerkstapel 106, auf die Netzwerkstelle 116 zu. Der Zugriff auf die Netzwerkstelle 116 unter Verwendung des Netzwerkstapels 110 des Management-Untersystems 108 kann im Preboot-Kontext durchgeführt werden. Als Antwort auf den Zugriff empfängt der Prozess 200 (bei 206) das Update-Modul 118 von der Netzwerkstelle 116, das verwendet werden kann, um das entsprechende fehlerhafte Modul zu aktualisieren. Das Aktualisieren des entsprechenden fehlerhaften Moduls beinhaltet das Ersetzen des entsprechenden Moduls und/oder das Reparieren des entsprechenden Moduls.
-
3 ist ein Blockschema einer elektronischen Vorrichtung 100' gemäß alternativen Implementierungen. Komponenten der elektronischen Vorrichtung 100', die den Komponenten der elektronischen Vorrichtung 100 gleich sind, haben die gleichen Bezugszeichen.
-
Die elektronische Vorrichtung 100' beinhaltet eine Management-Engine 302, die als Controller-Chip einer integrierten Schaltung, beispielsweise als Chip einer anwendungsspezifischen integrierten Schaltung (ASIC), als Chip eines programmierbaren Gatterfelds (PGA), als Mikrocontroller, Mikroprozessor und dergleichen implementiert sein kann. Die Management-Engine 302 ist eine Implementierung des Management-Untersystems 108 von 1.
-
Eine Programmierschnittstelle (API) 304 oder irgendeine andere Art von Schnittstelle, ist vorgesehen, um dem Fehler-Manager 102 den Zugriff auf Dienste der Management-Engine 302 zu gestatten. Gemäß manchen Implementierungen ist ein Dienst, auf den der Fehler-Manager 102 unter Verwendung der API 304 zugreifen kann, die Out-of-Band-Netzwerkkonnektivität (einschließlich des Netzwerkstapels 110), die von der Management-Engine 302 unterstützt wird, wodurch der Fehler-Manager 102 in der Lage ist, ein Update-Modul (z. B. 118 in 1) von der rechnerfernen Netzwerkstelle 116 abzurufen, ohne dass er dafür auf den mit dem OS assoziierten Netzwerkstapel 106 zurückgreifen muss. Die API 304 beinhaltet verschiedene Funktionen oder Routinen, die vom Fehler-Manager 102 aufgerufen werden können, um auf die Dienste der Management-Engine 302 zuzugreifen.
-
In 3 weist der Netzwerkstapel 110 in der Management-Engine 302 eine Hypertext Transfer Protocol(HTTP)-Schicht 306 auf, die es der Management-Engine 302 ermöglicht, HTTP-Kommunikationen über ein Netzwerk, beispielsweise das Netzwerk 114 von 1, durchzuführen. HTTP definiert verschiedene Anfragen und Antworten, die von der HTTP-Schicht 306 übermittelt werden können. Die HTTP-Anfragen können verwendet werden, um Informationen (beispielsweise das Update-Modul 118 in 1) von einer Netzwerkinstanz (beispielsweise einem Server-Computer an der Netzwerkstelle 116) zu erhalten. In anderen Beispielen muss kein HTTP verwendet werden, sondern der Netzwerkstapel 110 kann eine Komponente gemäß einem anderen Protokoll zum Managen von Anfrage-Antwort-Kommunikationen (oder anderen Arten von Kommunikationen) über ein Netzwerk beinhalten.
-
Der Netzwerkstapel 110 beinhaltet ferner einen Transmission Control Protocol/Internet Protocol(TCP/IP)-Stapel 308, der eine TCP-Schicht und eine IP-Schicht aufweist. Eine IP-Schicht wird verwendet, um IP-Pakete zu kommunizieren, die Ursprungs- und Ziel-IP-Adressen aufweisen, damit die Pakete durch ein Netzwerk zu einem Ziel gesendet werden können. Die TCP-Schicht sorgt für eine zuverlässige, geordnete Lieferung von Daten zwischen Netzwerkinstanzen.
-
Man beachte, dass der mit dem OS assoziierte Netzwerkstapel 106 ähnliche Schichten aufweisen kann wie der Netzwerkstapel 110 in der Management-Engine 302.
-
Die elektronische Vorrichtung 100' weist außerdem einen nicht-flüchtigen Speicher 310, beispielsweise einen Flash-Speicher oder eine andere Art von Speicher, auf. Der nicht-flüchtige Speicher 310 kann verwendet werden, um den BIOS-Code 312 und den Management-Engine-Code 314 zu speichern. Der BIOS-Code 312 kann als Firmware (die maschinenlesbare Anweisungen einschließt) betrachtet werden, die von dem Prozessor (den Prozessoren) 118 der elektronischen Vorrichtung 100' ausgeführt werden kann, beispielsweise um Boot-Aufgaben auszuführen. In manchen Beispielen kann der Fehler-Manager 102 Teil des BIOS-Codes 312 sein. In anderen Beispielen ist der Fehler-Manager 102 kein Teil des BIOS-Codes 312.
-
Der Management-Engine-Code 314 kann auch als Firmware betrachtet werden, die in der Management-Engine 302 ausführbar ist. Der Management-Engine-Code 314 kann verschiedene Dienste bereitstellen, die von der Management-Engine 302 angeboten werden, beispielsweise Dienste in Bezug auf Managementaufgaben, die von der Management-Engine 302 ausgeführt werden. In anderen Beispielen kann der Management-Engine-Code 314 in ein nicht-flüchtiges Speichermedium eingebettet sein, das Teil der Management-Engine 302 ist.
-
Maschinenlesbare Anweisungen verschiedener oben beschriebener Module (einschließlich des Fehler-Managers 102, des OS 104, der Anwendung 316, des BIOS-Codes 312 und des Management-Engine-Codes 314 von 1 oder 3) werden zur Ausführung in eine Verarbeitungsschaltung (beispielsweise den Prozessor (die Prozessoren) 118 oder die Management-Engine 102 in 1 oder 3) geladen.
-
Daten und Anweisungen werden in entsprechenden Speichervorrichtungen gespeichert, die als ein oder mehrere computerlesbare(s) oder maschinenlesbare(s) Speichermedium/Speichermedien implementiert sind. Die Speichermedien beinhalten verschiedene Formen von Speichern, einschließlich Halbleiterspeichervorrichtungen, wie dynamische oder statische RAMs, löschbare programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMS) und Flash-Speicher; magnetische Plattenlaufwerke wie Festplatten, Disketten und Wechselplatten; andere magnetische Medien, einschließlich Band; optische Medien, wie Compact Disks (CDs) oder Digital Video Disks (DVDs); oder andere Arten von Speichervorrichtungen. Man beachte, dass die oben erörterten Anweisungen auf einem computerlesbaren oder maschinenlesbaren Speichermedium bereitgestellt werden können oder dass sie alternativ dazu auf mehreren computerlesbaren und maschinenlesbaren Speichermedien, die in einem großen System mit möglicherweise mehreren Knoten verteilt sind, bereitgestellt werden können. Solch(e) (ein) computerlesbare(s) oder maschinenlesbare(s) Speichermedium/Speichermedien werden als Teil eines Artikels (oder Herstellungsartikels) betrachtet. Ein Artikel oder Herstellungsartikel kann jegliche hergestellte Einzelkomponente oder mehrere hergestellte Komponenten bezeichnen. Das Speichermedium oder die Speichermedien kann/können entweder in der Maschine angeordnet sein, die die maschinenlesbaren Anweisungen ausführt, oder an einem rechnerfernen Ort, von dem maschinenlesbare Anweisungen über ein Netzwerk zur Ausführung heruntergeladen werden können.
-
In der obigen Beschreibung werden zahlreiche Einzelheiten beschrieben, um ein Verständnis des hierin offenbarten Gegenstands zu ermöglichen. Jedoch können Implementierungen auch ohne einige oder alle dieser Einzelheiten in die Praxis umgesetzt werden. Andere Implementierungen können Modifikationen und Variationen der oben erörterten Details beinhalten. Die beigefügten Ansprüche sollen solche Modifikationen und Variationen abdecken.