DE60317654T2 - Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen - Google Patents

Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen Download PDF

Info

Publication number
DE60317654T2
DE60317654T2 DE60317654T DE60317654T DE60317654T2 DE 60317654 T2 DE60317654 T2 DE 60317654T2 DE 60317654 T DE60317654 T DE 60317654T DE 60317654 T DE60317654 T DE 60317654T DE 60317654 T2 DE60317654 T2 DE 60317654T2
Authority
DE
Germany
Prior art keywords
kernel
target system
module
compiled
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60317654T
Other languages
English (en)
Other versions
DE60317654D1 (de
Inventor
Thomas San Diego HANDAL
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
Computer Associates Think Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Computer Associates Think Inc filed Critical Computer Associates Think Inc
Application granted granted Critical
Publication of DE60317654D1 publication Critical patent/DE60317654D1/de
Publication of DE60317654T2 publication Critical patent/DE60317654T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht den Nutzen der gemeinsam übertragenen vorläufigen US-Patentanmeldung Nr. 60/373,120 mit dem Titel „APPARAUTS AND METHOD FOR MODIFYING A KERNEL MODULE TO RUN ON MULTIPLE KERNEL VERSIONS", eingereicht am 17. April 2002,.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Anmeldung betrifft Computerbetriebssysteme. Insbesondere betrifft die Anmeldung das Anpassen eines Kernelmoduls an einen Betriebssystemkern (-kernel) eines Zielsystems.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Ein Betriebssystem besteht aus einem oder mehreren Computerprogrammen (zum Beispiel Sammlungen von Computerbefehlen, die einen Computer anleiten, einen oder mehrere Aufgaben auszuführen), die Computerbetriebshardware nutzbar macht. DOS, Windows, Mac, Unix und Palm sind Beispiele solcher Betriebssystemfamilien.
  • Der hauptsächliche Aufgabenbereich von Betriebssystemen ist die Verwaltung der Computerressourcen. Die Ressourcen können zum Beispiel Prozessor(en), Speicher (wie etwa Datenspeicher, Festplatten usw.), Eingabe-/Ausgabegeräte (wie etwa Drucker, Monitore usw.) und Kommunikationsgeräte (wie etwa Modems, Netzwerkschnittstellen usw.) umfassen. Ressourcenverwaltungsaufgaben sind zum Beispiel das Bereitstellen des Zugriffs auf Daten und andere Ressourcen durch mehrere Nutzer, das Handhaben des Handshakings (Übergabequittierung) und anderer Netzwerkkommunikationsaufgaben usw.
  • Aufgaben des Betriebssystems wie die Ressourcenverwaltung werden üblicherweise in einer Weise ausgeführt, die für den durchschnittlichen Computernutzer transparent sind. Zum Beispiel dient ein Betriebssystem, obwohl die meisten Nutzer dies nicht wahrnehmen, als eine Schnittstelle zwischen Computerressourcen einerseits und Anwendungsprogrammen andererseits (wie etwa Textverarbeitungsprogrammen, Tabellenkalkulationen, Web-Browsern usw.), die ein Nutzer möglicherweise verwendet. Betriebssysteme haben außerdem weitere Aufgaben wie das Bereitstellen einer Benutzerschnittstelle, das Beheben von Systemfehlern usw.
  • Ein Betriebssystemkernel ist der Nukleus oder die Kernkomponente eines Betriebssystems. Die Aufgabenbereiche eines Kernels können die Prozessverwaltung, die Interprozesskommunikation, die Interrupt-Verarbeitung, die Unterstützung der Speicherzuweisung/-freigabe, die Unterstützung von Eingabe- und Ausgabeaktivitäten, Systemsicherheitsmaßnahmen usw. umfassen. Jeder dieser Aufgabenbereiche umfasst viele Aufgaben. Zum Beispiel können Sicherheitsaufgaben die Zugangssteuerung, die Protokollierung und Überwachung, die Speicher- und Dateisystemverwaltung und die Überwachung der Netzwerk- und Modemkommunikation usw. umfassen.
  • Linux ist ein Mitglied der Familie der UNIX-Betriebssysteme und kann auf einer Vielzahl von Computerplattformen einschließlich Personalcomputern mit einem x86-Prozessor ausgeführt werden. Linux ist eine freie, erweiterbare Implementierung von UNIX. Insbesondere ist der Quellcode für einen Linuxkernel für die breite Öffentlichkeit verfügbar und wird kontinuierlich verbessert oder anderweitig verändert. Indem Verbesserungen und/oder andere Änderungen des Linuxkernels erstellt und allgemein von der Öffentlichkeit übernommen werden, werden neue Linuxversionen herausgegeben. Eine öffentlich herausgegebene Linuxkernelversion ist durch eine entsprechende zugeordnete Kernelversionskennung erkennbar.
  • Ein Linuxkernel besteht in ähnlicher Weise wie einige andere Betriebssystemkernels aus mehreren Kernelmodulen. Ein Kernelmodul ist ein Programm zur Ausführung einer oder mehrerer entsprechender Kernelaufgaben. Eine Kernelversion kann eine Kombination von Kernelmodulen sein, die dem konkreten System entsprechend ausgewählt werden, auf dem die Kernelversion installiert werden soll. Zwei Kernelversionen können sich dadurch unterscheiden, dass (a) einer Version zusätzliche Module aufweist, die in der anderen Version nicht enthalten sind, und/oder (b) zwei Module der jeweiligen Versionen die gleiche(n) Aufgabe(n) ausführen, allerdings in unterschiedlicher (aber vielleicht gleichermaßen zufriedenstellender) Weise.
  • Wenn einem Betriebssystemkernel ein neues Kernelmodul hinzugefügt wird (oder ein vorhandenes Modul ersetzt), muss möglicherweise der Kernel mit dem neuen Modul neu kompiliert werden. Das Kompilieren eines Kernels ist eine zeitaufwendige Aufgabe. Bei Betriebssystemen wie Linux, in denen mehrere Kernelversionen aktiv verwendet werden, kann ein neues Kernelmodul (zum Beispiel eine Firewall) mehrere Kernelkompilierungen durchlaufen, entsprechend den mehreren (kundenspezifischen oder öffentlich herausgegebenen) Kernelversionen, denen das neue Modul hinzugefügt werden kann.
  • Linux ermöglicht eine dynamische Verlinkung ladbarer Kernelmodule. Selbst wenn ein Kernel dynamisch verlinkbare Kernelmodule verwendet, wird jedes dynamisch verlinkbare Kernelmodul in ein ladbares Modul kompiliert. Obwohl ein Kernel, in den ein neues dynamisch verlinkbares Kernelmodul geladen werden kann, möglicherweise nicht neu kompiliert werden muss, wird das neue dynamisch verlinkbare Kernelmodul üblicherweise mehrere (unter einigen Umständen hunderte) Male kompiliert, wobei jede Kompilierung ein entsprechendes ladbares Modul bereitstellt, auf das eine entsprechende (öffentliche oder kundenspezifische) Kernelversion dynamisch verlinken kann. Die mehrfachen Kompilierungen sind zeitaufwendig und können unnötige Speicherbelegung verursachen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt eine Kernelmodul-Modifikationsvorrichtung zur Anpassung für einen Kernel auf einem Zielsystem eines kompilierten Kernelmoduls bereit, das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet. In einer Ausführungsform enthält die Vorrichtung einen Kernel-Analysator und eine Modulanpassungskomponente. Der Kernel-Analysator extrahiert von dem Kernel auf dem Zielsystem einen Fehlerprüfungsgrößenwert und eine Kernelversionskennung. Die Modulanpassungskomponente fügt in das kompilierte Kernmodul einen Fehlerprüfungsparameter ein, der dem Fehlerprüfungsgrößenwert entspricht, der vom Kernel-Analysator von dem Kernel auf dem Zielsystem extrahiert wurde und ersetzt eine Versionskennung in dem kompilierten Kernelmodul durch die Kernelversionskennung, die vom Kernel-Analysator von dem Kernel auf dem Zielsystem extrahiert wurde.
  • Die Anmeldung stellt außerdem ein Verfahren zur Anpassung für einen Kernel auf einem Zielsystem eines kompilierten Kernelmoduls bereit, das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet. Dieses Verfahren umfasst gemäß einer Ausführungsform das Extrahieren eines Fehlerprüfungsgrößenwerts und einer Kernelversionskennung aus dem Kernel auf dem Zielsystem, das Einfügen eines Fehlerprüfungsparameters, der dem Fehlerprüfungsgrößenwert entspricht, der vom Kernel auf dem Zielsystem extrahiert wurde, in das kompilierte Kernmodul, und das Ersetzen einer Versionskennung in dem kompilierten Kernelmodul durch die Kernelversionskennung, die vom Kernel auf dem Zielsystem extrahiert wurde. Das kompilierte Kernelmodul, in das der Fehlerprüfungsparameter eingefügt wird, kann ein ladbares Linuxkernelmodul und/oder binär sein. Das geänderte kompilierte Kernelmodul, in das der Fehlerprüfungsparameter eingefügt ist und das die Kernelversionskennung umfasst, die vom Kernel auf dem Zielsystem extrahiert wurde, kann in den Kernel auf dem Zielsystem geladen werden.
  • Gemäß einer weiteren Ausführungsform kann der Fehlerprüfungsgrößenwert eine oder mehrere Prüfsummen enthalten, die vom Kernel auf dem Zielsystem extrahiert wurden. Das Verfahren kann ferner die Ermittlung einer Symboltabelle im kompilierten Kernelmodul und die Durchführung einer Analyse des Symbolnamens für jeden Symbolnamen in der Symboltabelle umfassen. Die Symbolnamenanalyse kann das Vergleichen des Symbolnamens mit den Symbolen im Kernel auf dem Zielsystem umfassen. Wenn der Symbolname mit einem Symbol im Kernel auf dem Zielsystem übereinstimmt, kann eine Prüfsumme, die dem übereinstimmenden Symbol zugeordnet ist, extrahiert und an den Symbolnamen in der Symboltabelle des kompilierten Kernelmoduls angehängt werden. Das Verfahren kann außerdem das Anpassen eines oder mehrerer Versätze der Symboltabelle, nachdem die Symbolnamen analysiert wurden, umfassen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung anhand der beigefügten Zeichnungen leichter verständlich. Es zeigen:
  • 1 ein Blockdiagramm einer Kernelmodul-Modifikationsvorrichtung gemäß einer Ausführungsform der vorliegenden Anmeldung,
  • 2 ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Anmeldung zur Anpassung für ein Kernel auf einem Zielsystem eines kompilierten Kernelmoduls, das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet,
  • 3 ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Anmeldung zur Anpassung für einen Linuxkernel auf einem Zielsystem eines kompilierten Linuxkernelmoduls, das einer anderen Linuxkernelversion entspricht, und
  • 4 ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Anmeldung zum Analysieren von Symbolnamen.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Anmeldung stellt Werkzeuge (in Form von Verfahren und Vorrichtungen) zum Ändern eines Kernelmoduls solcherart bereit, dass es auf mehreren Kernelversionen ausgeführt werden kann. Die Werkzeuge können in einem Softwaredienstprogramm (zum Beispiel in einem oder mehreren Computerprogrammen), die auf einem computerlesbaren Medium gespeichert sind und/oder über ein Computernetzwerk oder ein anderes Übertragungsmedium übertragen werden, umgesetzt sein. Der Computer oder das Computersystem, auf dem das Softwaredienstprogramm ausgeführt wird, kann das Zielsystem sein.
  • Gemäß einer in 1 gezeigten Ausführungsform passt eine Kernelmodul-Modifikationsvorrichtung 10 für ein Kernel auf einem Zielsystem ein kompiliertes Kernelmodul an, das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet. Die Vorrichtung 10 umfasst einen Kernel-Analysator 11 und eine Modulanpassungskomponente 12. Der Kernel-Analysator und die Modulanpassungskomponente können Module oder Codeabschnitte in einem Softwaredienstprogramm sein.
  • Ein Verfahren gemäß einer Ausführungsform zur Anpassung für einen Kernel auf einem Zielsystem eines kompilierten Kernelmoduls, das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet, wird anhand 1 und 2 beschrieben. Die Kernel-Analysatorkomponente 11 extrahiert vom Zielsystemkernel 5 einen Fehlerprüfungsgrößenwert 5a und eine Kernelversionskennung 5b (Schritt S21). Die Modulanpassungskomponente 12 fügt in das kompilierte Kernelmodul 20 einen Fehlerprüfungsparameter ein, der dem vom Kernel-Analysator vom Kernel auf dem Zielsystem extrahierten Fehlerprüfungsgrößenwert entspricht (Schritt S22) und ersetzt eine Versionskennung in dem kompilierten Kernelmodul 20 durch die Kernelversionskennung, die vom Kernel-Analysator vom Kernel auf dem Zielsystem extrahiert wurde (Schritt S23).
  • Das kompilierte Kernmodul, in das der Fehlerprüfungsparameter eingefügt ist, kann ein ladbares Linuxkernelmodul und/oder binär sein. Das geänderte kompilierte Kernelmodul, in das der Fehlerprüfparameter eingefügt ist und das die Kernelversionskennung umfasst, die vom Kernel auf dem Zielsystem extrahiert wurde, kann in den Kernel auf dem Zielsystem geladen werden.
  • Die vom Zielsystemkernel extrahierte Versionskennung kann eine Versionsnummer oder eine andere Versionskennung (wie etwa ein oder mehrere Symbole) sein.
  • Der aus dem Zielsystemkernel extrahierte Fehlerprüfungsgrößenwert kann eine oder mehrere Prüfsummen sein. Wenn der Fehlerprüfungsgrößenwert eine Prüfsumme ist, kann der Fehlerprüfungsparameter, der in das kompilierte Kernelmodul eingefügt ist, identisch mit oder komplementär zu dem Fehlerprüfungsgrößenwert oder anderweitig von ihm abgeleitet sein. Prüfsummentechniken sind auf dem Fachgebiet bekannt. Zum besseren Verständnis verzichtet die vorliegende Offenbarung auf eine ausführliche Beschreibung dieser Techniken. Auf jeden Fall sollte das geänderte Kernelmodul mit dem Fehlerprüfungsparameter, der auf der Grundlage des Fehlerprüfungsgrößenwerts ermittelt wurde, welcher vom Zielsystemkernel extrahiert wurde, die Fehlerprüfungskriterien des Kernels erfüllen.
  • Im Folgenden wird eine beispielhafte Ausführungsform für ein Linuxkernel erläutert. Es versteht sich jedoch, dass der Gegenstand der vorliegenden Offenbarung auch auf andere Arten von Betriebssystemkerneln angewandt werden kann.
  • Die Kernelmodul-Modifikationsvorrichtung kann ein Softwaredienstprogramm zur Anpassung eines kompilierten Linuskernelmoduls einer bestimmten Kernelversion und zum Erzeugen eines geänderten Kernelmoduls sein, das zum Laden in eine andere Kernelversion auf einem Zielsystem angepasst ist. Die Änderungen umfassen Veränderungen in einer Symboltabelle in einem Symboltabellenkopf des Kernelmoduls und in einer Versionskennung im Modulinformationsabschnitt des Kernelmoduls.
  • Linuxkernelmodule können in ein Format kompiliert werden, das „Executable and Linkable Format" (ELF) genannt wird. Das ELF-Format weist viele Sektionen und Header (Dateiköpfe) auf, die die richtigen Ausführungs- und Verlinkungsinformationen für das Modul/Executable beschreiben. Die Sektionen umfassen die Symboltabelle und die Modulinformationssektionen.
  • Eine Symboltabelle in einem kompilierten Kernelmodul ist eine Liste von Kennungen (d. h. Symbole, zum Beispiel Namen, Kennsätze usw.), die im Kernelmodul verwendet werden, von den Speicherorten der Kennungen im Modul und von Attributen der Kennungen. In der Symboltabelle eines Linuxkernelmoduls ist eine Prüfsumme an das Ende jedes Symbolnamens angehängt. Der Prüfsummenwert kann verwendet werden, um zu überprüfen, dass das Kernelmodul die gleichen Symbolprototypen, Prozessorbefehlscodes usw. verwendet, wenn das Modul in ein Zielkernel eingefügt wird. Unterscheiden sich diese Werte, stellt der Kernel fest, dass ungeklärte Symbole vorhanden sind und bricht den Vorgang des Ladens des Kernelmoduls ab. Um dieses Problem zu umgehen, können Prüfsummen aus den Symbolen im Kernelmodul entfernt werden und durch Prüfsummen ersetzt werden, die im Zielkernel gespeichert sind. Die Prüfsummenersetzung ermöglicht das Laden des Moduls ohne Fehler durch ungeklärte Symbole.
  • Im Folgenden wird anhand der 3 und 4 ein Verfahren zur Anpassung für einen Linuxkernel auf einem Zielsystem eines kompilierten Linuxkernelmoduls, das einer anderen Linuskernelversionen entspricht, beschrieben.
  • Der Sektionsheader des Kernelmoduls im ELF-Format wird vom Dienstprogramm gelesen und geparst (Schritt S31). Basierend auf der Information im Sektionsheader findet das Dienstprogramm einen Versatz der Symboltabelle im Kernelmodul und der Versatz wird verwendet, um die Symboltabelle im Kernelmodul zu lokalisieren (Schritt S32). Die Symboltabelle wird dann vom Dienstprogramm gelesen und geparst (Schritt S33). Aus der Symboltabelleninformation wird ein Versatz bestimmt, in den Symbolnamen in dem Modul gespeichert sind und der als „String-Tabelle" (Zeichenfolge-Tabelle) bezeichnet wird (Schritt S34). Die Symbolnamen werden dann einzeln und nacheinander aus der String-Tabelle gelesen und analysiert (Schritt S35).
  • Die Analyse der Symbolnamen in der String-Tabelle kann auf folgende Weise durchgeführt werden (4). Ein Symbolname in der String-Tabelle wird ausgewählt (Schritt S351). Der ausgewählte Symbolname wird geprüft um zu bestimmen, ob eine Prüfsumme angehängt ist (Schritt S352). Wenn keine Prüfsumme gefunden wird (Schritt S352), wird der Symbolname übersprungen und der nächste Symbolname wird ausgewählt. Wenn der Symbolname eine angehängte Prüfsumme enthält (Schritt S352), so wird die Prüfsumme abgestreift (Schritt S353) und der verbleibende Name wird dann mit den Symbolen verglichen, die sich im Kernel des Zielsystems befinden (Schritt S354). Wird eine Übereinstimmung gefunden (Schritt S354), so wird eine Prüfsumme, die an das übereinstimmende Symbol im Zielsystemkernel angehängt ist, extrahiert und an den ausgewählten Symbolnamen in der String-Tabelle des Kernelmoduls angehängt (Schritt S355). Wenn keine Übereinstimmung gefunden wurde (Schritt S354), wird eine Fehlernachricht erzeugt, die anzeigt, dass ein ungeklärtes Symbol vorliegt (Schritt S356) und der Vorgang der Symbolnamenanalyse läuft nicht weiter. Anderenfalls dauert der Vorgang an, bis alle Symbolnamen geprüft und geändert wurden (Schritt S357). Wenn eine Änderung an der String-Tabelle stattgefunden hat (Schritt S358), kann sich die Größe der String-Tabelle verändert haben. Deshalb müssen möglicherweise die Versätze des ELF-Format-Headers angepasst werden, um die geänderte Größe in der String-Tabelle wiederzugeben (Schritt S359).
  • Der folgende Pseudocode beschreibt diesen Vorgang:
    Figure 00100001
    Figure 00110001
  • Als nächstes wird die Modulinformationssektion geändert. Die Modulinformationssektion enthält Informationen, die die Kernelversion kennzeichnen, für die das Kernelmodul kompiliert wurde. In die Modulinformation ist eine Versionskennung eingebettet, die durch die Kernelversionskennung des Kernels auf dem Zielsystem ersetzt wird. Die Änderung der Versionskennung ermöglicht das Laden des Kernelmoduls in den Kernel auf dem Zielsystem ohne Fehlermeldungen wegen Nichtübereinstimmung der Kernelversion.
  • Das oben beschriebene Parsen des ELF-Formats (Schritt S31) liefert auch einen Versatz der Modulinformationssektion des Moduls (Schritt S32). Die Modulinformationssektion wird gelesen und geparst (Schritt S36), um einen Versatz zu einer String-Tabelle (der sich von der Symbolnamen-String-Tabelle unterscheidet) zu finden, die der Modulinformationssektion zugeordnet ist (Schritt S37). Die Modulinformation-String-Tabelle wird gelesen und geparst (Schritt S38). Die String-Tabelle wird dann auf die Versionskennung durchsucht. Zum Beispiel folgt in einem kompilierten Linuxkernelmodul die Versionskennung dem String „kernet version=" (Schritt S39). Wenn dieser String gefunden wird, folgt die Versionskennung der Kernelversion, für die das Linuxkernelmodul kompiliert wurde, dem „="-Zeichen. Danach wird die Versionskennung durch die Kernelversionskennung des Zielsystems ersetzt, was zum Beispiel durch einen „uname"-Systemabruf auf dem Zielsystem erreicht werden kann (Schritt S40). Die Versionskennungsänderung kann die Größe der String-Tabelle verändern (Schritt S41). Deshalb müssen möglicherweise die Größe der String-Tabelle neu berechnet und die ELF-Headerversätze geändert werden, um eine geänderte Größe der String-Tabelle wiederzugeben (Schritt S42).
  • Der geänderte Kernelversions-String wird als das neue Kernelmodul ausgegeben (Schritt S43). Das geänderte Kernelmodul kann in den Kernel auf dem Zielsystem geladen werden.
  • Der folgende Quellcode ist für ein beispielhaftes Softwaredienstprogramm.
  • Figure 00120001
  • Figure 00130001
  • Diese Funktion benötigt einen Datei-Deskriptor, einen Versatz und eine Größe als Argumente. Sie weist im Grunde einen Zwischenspeicher der Größe „Größe" zu und geht dann zu dem angegebenen „Versatz" des Datei-Deskriptors und kopiert die Lesewerte in den Zwischenspeicher des Datei-Deskriptors.
  • Setzt einen Pointer zum neu zugewiesenen Zwischenspeicher mit den Daten zurück.
    Figure 00130002
    Figure 00140001
    Figure 00150001
    Figure 00160001
    Figure 00170001
    Figure 00180001
    Figure 00190001
    Figure 00200001
    Figure 00210001
    Figure 00220001
    Figure 00230001
    Figure 00240001
    Figure 00250001
    Figure 00260001
    Figure 00270001
    Figure 00280001
    Figure 00290001
  • Obwohl in der oben beschriebenen Ausführungsform zum Beispiel die Versionskennungsänderung auf die Symboltabellenänderung folgt, kann die Modulinformationsänderung der Fehlerprüfungsanpassung vorausgehen. Obwohl als weiteres Beispiel das Softwaredienstprogramm auf dem Zielsystem laufen kann, kann die Kernelmodul-Modifikationsvorrichtung dafür angepasst sein, auf einem System zu laufen (mit mindestens einem Prozessor und einem Programmspeichergerät), das nicht das Zielsystem ist, wenn die Kernelversionskennung des Zielsystems bekannt ist und der Fehlerprüfungsgrößenwert des Kernels auf dem Zielsystem ebenfalls verfügbar ist.

Claims (20)

  1. Kernelmodul-Modifikationsvorrichtung (10) zur Anpassung für einen Kernel auf einem Zielsystem (5) eines kompilierten Kernelmoduls (20), das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem unterscheidet, gekennzeichnet durch: einen Kernel-Analysator (11), der angepasst ist, um von dem Kernel auf dem Zielsystem (5) einen Fehlerprüfungsgrößenwert (5a) und eine Kernelversionskennung (5b) zu extrahieren; und eine Modulanpassungskomponente (12), die angepasst ist, um in das kompilierte Kernelmodul (20) einen Fehlerprüfungsparameter einzufügen, der dem extrahierten Fehlerprüfungsgrößenwert (5a) entspricht, der vom Kernel-Analysator (11) von dem Kernel auf dem Zielsystem (5) extrahiert wurde, und um eine Versionskennung in dem kompilierten Kernelmodul (20) durch die Kernelversionskennung (5b) zu ersetzen, die vom Kernel-Analysator (11) vom Kernel auf dem Zielsystem (5) extrahiert wurde.
  2. Vorrichtung nach Anspruch 1, wobei das kompilierte Kernelmodul (20), in das der Fehlerprüfparameter eingefügt wird, binär ist.
  3. Vorrichtung nach Anspruch 1, wobei das geänderte kompilierte Kernelmodul (20), in das der Fehlerprüfparameter eingefügt ist und das die Kernelversionskennung (5b) umfasst, die vom Kernel auf dem Zielsystem (5) extrahiert wurde, in den Kernel auf dem Zielsystem (5) geladen werden kann.
  4. Vorrichtung nach Anspruch 1, wobei der Fehlerprüfungsgrößenwert (5a) eine oder mehrere Prüfsummen enthält, die vom Kernel-Analysator (11) vom Kernel auf dem Zielsystem (5) extrahiert wurden.
  5. Vorrichtung nach Anspruch 1, wobei der Kernel-Analysator (11) eine Symboltabelle im kompilierten Kernelmodul (20) ermittelt, und für jeden Symbolnamen in der Symboltabelle eine Analyse des Symbolnamens durchführt.
  6. Vorrichtung nach Anspruch 5, wobei die durch den Kernel-Analysator (11) durchgeführte Symbolnamenanalyse das Vergleichen des Symbolnamens mit Symbolen im Kernel auf dem Zielsystem (5) umfasst.
  7. Vorrichtung nach Anspruch 6, wobei, wenn der Symbolname mit einem Symbol im Kernel auf dem Zielsystem (5) übereinstimmt, der Kernel-Analysator (11) eine Prüfsumme, die dem übereinstimmenden Symbol zugeordnet ist, extrahiert und die Modulanpassungskomponente (12) die extrahierte Prüfsumme an den Symbolnamen in der Symboltabelle des kompilierten Kernelmoduls (20) anhängt.
  8. Vorrichtung nach Anspruch 5, wobei die Modulanpassungskomponente (12) einen oder mehrere Versätze der Symboltabelle, nachdem die Symbolnamen analysiert werden, anpasst.
  9. Vorrichtung nach Anspruch 1, wobei das kompilierte Kernelmodul (20) ein ladbares Linux-Kernelmodul ist.
  10. Verfahren zur Anpassung für einen Kernel auf einem Zielsystem (5) eines kompilierten Kernelmoduls (20), das einer anderen Kernelversion entspricht, die sich von dem Kernel auf dem Zielsystem (5) unterscheidet, wobei das Verfahren folgende Verfahrensschritte umfasst: Extrahieren eines Fehlerprüfungsgrößenwerts (5a) und einer Kernelversionskennung (5b) aus dem Kernel auf einem Zielsystem (5); Einfügen eines Fehlerprüfungsparameters, der dem Fehlerprüfungsgrößenwert (5a) entspricht, der vom Kernel auf dem Zielsystem (5) extrahiert wurde, in das kompilierte Kernelmodul (20); und Ersetzen einer Versionskennung in dem kompilierten Kernelmodul (20) durch die Kernelversionskennung (5b), die vom Kernel auf dem Zielsystem (5) extrahiert wurde.
  11. Verfahren nach Anspruch 10, wobei das kompilierte Kernelmodul (20), in das der Fehlerprüfparameter eingefügt wird, binär ist.
  12. Verfahren nach Anspruch 10, wobei das geänderte kompilierte Kernelmodul (20), in das der Fehlerprüfparameter eingefügt ist und das die Kernelversionskennung (5b) umfasst, die vom Kernel auf dem Zielsystem (5) extrahiert wurde, in den Kernel auf dem Zielsystem (5) geladen werden kann.
  13. Verfahren nach Anspruch 10, wobei der extrahierte Fehlerprüfungsgrößenwert (5a) eine oder mehrere Prüfsummen enthält, die vom Kernel auf dem Zielsystem (5) extrahiert wurden.
  14. Verfahren nach Anspruch 10 ferner umfassend die Ermittlung, einer Symboltabelle im kompilierten Kernelmodul (20), und Durchführung einer Analyse des Symbolnamens für jeden Symbolnamen in der Symboltabelle.
  15. Verfahren nach Anspruch 14, wobei die Symbolnamenanalyse das Vergleichen des Symbolnamens mit den Symbolen im Kernel auf dem Zielsystem (5) umfasst.
  16. Verfahren nach Anspruch 15, wobei, wenn der Symbolname mit einem Symbol im Kernel auf dem Zielsystem (5) übereinstimmt, eine Prüfsumme, die dem übereinstimmenden Symbol zugeordnet ist, extrahiert und dann an den Symbolnamen in der Symboltabelle des kompilierten Kernelmoduls (20) angehängt wird.
  17. Verfahren nach Anspruch 14, wobei Versätze der Symboltabelle, nachdem die Symbolnamen analysiert wurden, angepasst werden.
  18. Verfahren nach Anspruch 10, wobei das kompilierte Kernelmodul (20) ein ladbares Linux-Kernelmodul ist.
  19. Computer-lesbares Medium, das Computer-ausführbare Anweisungen umfasst, die, wenn sie auf einer Computer-Workstation ausgeführt werden folgende Verfahrensschritte durchführen: Extrahieren eines Fehlerprüfungsgrößenwerts (5a) und einer Kernelversionskennung (5b) von dem Kernel auf einem Zielsystem (5); Einfügen eines Fehlerprüfungsparameters, der dem Fehlerprüfungsgrößenwert (5a) entspricht, die vom Kernel auf dem Zielsystem (5) extrahiert wurde, in das kompilierte Kernelmodul (20); und Ersetzen einer Versionskennung in dem kompilierten Kernelmodul (20) durch die Kernelversionskennung (5b), die vom Kernel auf dem Zielsystem (5) extrahiert wurde.
  20. Computerdatensignal, das Computer-ausführbare Anweisungen umfasst, die, wenn sie auf einer Computer-Workstation ausgeführt werden folgende Verfahrensschritte durchführen: Extrahieren eines Fehlerprüfungsgrößenwerts (5a) und einer Kernelversionskennung (5b) von dem Kernel auf einem Zielsystem (5); Einfügen eines Fehlerprüfungsparameters, der dem Fehlerprüfungsgrößenwert (5a) entspricht, die vom Kernel auf dem Zielsystem (5) extrahiert wurde, in das kompilierte Kernelmodul (20); und Ersetzen einer Versionskennung in dem kompilierten Kernelmodul (20) durch die Kernelversionskennung (5b), die vom Kernel auf dem Zielsystem (5) extrahiert wurde.
DE60317654T 2002-04-17 2003-04-17 Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen Expired - Lifetime DE60317654T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37312002P 2002-04-17 2002-04-17
US373120P 2002-04-17
PCT/US2003/012202 WO2003090077A1 (en) 2002-04-17 2003-04-17 Apparatus and method for modifying a kernel module to run on multiple kernel versions

Publications (2)

Publication Number Publication Date
DE60317654D1 DE60317654D1 (de) 2008-01-03
DE60317654T2 true DE60317654T2 (de) 2008-10-30

Family

ID=29250968

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60317654T Expired - Lifetime DE60317654T2 (de) 2002-04-17 2003-04-17 Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen

Country Status (11)

Country Link
US (1) US7076770B2 (de)
EP (1) EP1495402B1 (de)
JP (1) JP2005523516A (de)
KR (1) KR20040099439A (de)
CN (1) CN1650264A (de)
AU (1) AU2003222657A1 (de)
BR (1) BR0309323A (de)
CA (1) CA2480441A1 (de)
DE (1) DE60317654T2 (de)
IL (1) IL164607A0 (de)
WO (1) WO2003090077A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568188B2 (en) * 2003-03-07 2009-07-28 Microsoft Corporation Method for testing a software shim
US7634770B2 (en) * 2003-05-19 2009-12-15 Hewlett-Packard Development Company, L.P. Kernel module interface dependencies
US7954086B2 (en) * 2003-05-19 2011-05-31 Hewlett-Packard Development Company, L.P. Self-describing kernel modules
US20060015860A1 (en) * 2004-07-15 2006-01-19 Sony Corporation And Sony Electronics, Inc. System and method for storing attributes in a file for processing an operating system
US8042188B2 (en) * 2005-07-15 2011-10-18 Sony Corporation Information processing apparatus, information recording medium manufacturing apparatus, information recording medium, method and computer program
US7581141B2 (en) * 2006-03-01 2009-08-25 Sun Microsystems, Inc. Kernel module compatibility validation
US20090271780A1 (en) * 2008-04-24 2009-10-29 Moschip Semiconductor Technology Limited Automatic complete firmware upgrade
US8689206B2 (en) * 2009-03-05 2014-04-01 International Business Machines Corporation Isolating operating system in-memory modules using error injection
KR101042979B1 (ko) * 2009-10-23 2011-06-21 한국항공대학교산학협력단 임베디드 시스템의 신뢰성 평가를 위한 시뮬레이션 커널을 이용하는 오류주입시험 장치
US8914815B2 (en) * 2013-05-18 2014-12-16 Red Hat, Inc. Automated framework for tracking and maintaining kernel symbol list types
CN103312706B (zh) * 2013-06-04 2017-05-10 百度在线网络技术(北京)有限公司 网络访问控制的方法和装置
CN104679532B (zh) * 2013-11-27 2018-12-11 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN104021023A (zh) * 2014-06-24 2014-09-03 浪潮电子信息产业股份有限公司 一种突破内核模块版本控制解决方法
CN104375874B (zh) * 2014-12-11 2017-05-17 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置
CN104572235B (zh) * 2014-12-31 2019-02-26 北京奇虎科技有限公司 一种可加载内核模块的编译方法和装置
CN105549965A (zh) * 2015-12-09 2016-05-04 浪潮电子信息产业股份有限公司 一种将驱动集成到不同Linux内核版本的方法
CN105893085A (zh) * 2016-03-30 2016-08-24 百度在线网络技术(北京)有限公司 内核模块加载方法和装置
CN106815031B (zh) * 2017-02-22 2020-03-24 百度在线网络技术(北京)有限公司 内核模块加载方法和装置
CN108052327A (zh) * 2017-12-11 2018-05-18 北京奇虎科技有限公司 一种内核模块编译、加载方法及装置
CN109992293B (zh) * 2018-01-02 2023-06-20 深圳市宇通联发科技有限公司 Android系统组件版本信息的组装方法及装置
CN111382063B (zh) * 2018-12-30 2023-09-08 贝壳技术有限公司 一种react兼容的校验方法及装置
CN111752620A (zh) * 2019-03-26 2020-10-09 阿里巴巴集团控股有限公司 内核模块的处理方法和加载方法
CN111767072B (zh) * 2019-04-02 2023-03-14 浙江宇视科技有限公司 客户端制作方法及装置
US20220147636A1 (en) * 2020-11-12 2022-05-12 Crowdstrike, Inc. Zero-touch security sensor updates
CN113220303A (zh) * 2021-04-21 2021-08-06 北京麟卓信息科技有限公司 一种内核模块的编译方法和系统
CN116243971B (zh) * 2023-05-10 2023-07-28 北京麟卓信息科技有限公司 一种基于静态依赖自举的内核无关的模块构建方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US6199203B1 (en) * 1998-07-21 2001-03-06 Hewlett-Packard Company Memory management techniques for on-line replaceable software
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US7287259B2 (en) * 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs

Also Published As

Publication number Publication date
CN1650264A (zh) 2005-08-03
KR20040099439A (ko) 2004-11-26
US7076770B2 (en) 2006-07-11
WO2003090077A1 (en) 2003-10-30
AU2003222657A1 (en) 2003-11-03
JP2005523516A (ja) 2005-08-04
IL164607A0 (en) 2005-12-18
EP1495402A1 (de) 2005-01-12
EP1495402B1 (de) 2007-11-21
DE60317654D1 (de) 2008-01-03
US20040221275A1 (en) 2004-11-04
CA2480441A1 (en) 2003-10-30
BR0309323A (pt) 2007-02-21

Similar Documents

Publication Publication Date Title
DE60317654T2 (de) Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69636887T2 (de) System und Verfahren,um verschiedenen Anbietern von Namen zu ermöglichen,sich dynamisch einer Namensföderation anzuschliessen
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
EP1176482B1 (de) Verfahren und Computerprogramm zum Herstellen einer Regelung oder Steuerung
DE69735343T2 (de) System, Verfahren und Vorrichtung zum direkten Ausführen eines architekturunabhängigen binären Programms
DE60001916T2 (de) Plattformunabhängige speicherabbild analysearchitektur zur programmfehlerbeseitigung
DE69819188T2 (de) Programmschnittstellenumsetzer für rechner mit mehreren umgebungen
DE69932371T2 (de) Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms
DE60021066T2 (de) Prüfung eines Softwarepakets
DE10101346B4 (de) Verfahren zum automatischen Umsetzen von Daten, die in einem bestimmten Laufzeitcodierungssystem erzeugt wurden, für die Verarbeitung in einem anderen Laufzeitcodierungssystem
DE10348591A1 (de) Automatically identifying a program error in a computer program
DE60103521T2 (de) Vorladen von klassen in einer datenverarbeitungseinrichtung ohne virtueller speicherverwalter
DE10158984A1 (de) Drucksystem und Verfahren zur Individualisierung eines Druckauftrags
DE102008061480A1 (de) Verfahren und Vorrichtung zum Austauschen einer Komponente eines Computersystems
DE3842289C2 (de) Verfahren zur Entwicklung von Programmen für ein verteiltes Datenverarbeitungssystem
EP3217236B1 (de) Verfahren und system zur generierung eines bedienprogramms in form einer auf einem mobilen gerät lauffähigen mobilen applikation
DE10303054A1 (de) Verifizieren einer Programmversion
EP1701266A1 (de) Testvorrichtung zur Überprüfung einer Stapelverarbeitung
DE102005018074A1 (de) Testsequenzer und Verfahren für die Verwaltung und Ausführung von Sequenzelementen
DE69933323T2 (de) Kompiler
DE10120867B4 (de) Computersystem, Verfahren zum Betrieb eines Computersystems, sowie Maschinenlesbare Speichervorrichtung
DE10003268A1 (de) Verfahren und Vorrichtung zum Feststellen der Laufwerksbuchstaben-Bezeichnung eines CD-Rom-Laufwerks während der anfänglichen Systemvorbereitung eines Computersystems
DE112010003774T5 (de) Kompatibilität auf objektebene und klassenskalierung unter verwendung semantischer werte
DE69731574T2 (de) Kompiliergerät und -verfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition