NDISwrapper ist ein kostenloser Treiber-Wrapper , der die Verwendung von Windows XP -Netzwerkgerätetreibern (z. B. für PCI-Karten , USB-Modems und Router ) unter Linux ermöglicht. NDISwrapper implementiert die Windows- Kernel- und NDIS- APIs und verknüpft Windows-Netzwerktreiber dynamisch mit dieser Implementierung. Daher funktioniert es nur auf Systemen, die auf den von Windows unterstützten Befehlssatzarchitekturen IA-32 und x86-64 basieren .

Für einige Netzwerkadapter sind unter Linux keine nativen Treiber verfügbar, da manche Hersteller proprietäre Schnittstellen verwenden und keine plattformübergreifenden Treiber entwickeln. NDISwrapper ermöglicht die Verwendung von Windows-Treibern, die für nahezu alle modernen PC-Netzwerkadapter verfügbar sind.

Verwenden

Es gibt drei Schritte: Erstellen eines Linux-Treibers, Installieren und Verwenden. NDISwrapper besteht aus zwei Hauptkomponenten: einem Befehlszeilentool, das bei der Installation verwendet wird, und einem Windows-Subsystem, das zum Einsatz kommt, wenn eine Anwendung das WLAN- Subsystem aufruft.

Da das Ergebnis einer NDISwrapper-Installation ein Linux-Treiber sein soll, der die Verwendung mit Linux-Anwendungen ermöglicht, besteht der erste Schritt darin, einige Windows-Dateien und die NDISwrapper-Version des Windows DDK in ein Linux-Kernelmodul zu kompilieren. Dies geschieht mit dem Tool „ndiswrapper“. Der resultierende Linux-Treiber wird anschließend (oft manuell) im Betriebssystem installiert. Eine Linux-Anwendung kann dann Anfragen an diesen Linux-Treiber senden, der automatisch die notwendigen Anpassungen vornimmt, um den nun internen Windows-Treiber und das zugehörige DDK aufzurufen.

Für diese „Kompilierung“ benötigt NDISwrapper mindestens die Dateien „.inf“ und „.sys“, die üblicherweise als Bestandteil des Windows-Treibers mitgeliefert werden. Wenn der Treiber beispielsweise „mydriver“ heißt und die Dateien mydriver.inf und mydriver.sys sowie die Hersteller-ID:Produkt-ID 0000:0000 enthält, installiert NDISwrapper den Treiber in /etc/ndiswrapper/mydriver/ . Dieses Verzeichnis enthält drei Dateien:

  • 0000:0000.conf , die Informationen enthält, die aus der INF-Datei extrahiert wurden
  • mydriver.inf (die ursprüngliche INF-Datei)
  • mydriver.sys (die Treiberdatei)

Grafische Benutzeroberflächen

Ndisgtk grafische Benutzeroberfläche

Es gibt grafische Benutzeroberflächen für NDISwrapper, wie zum Beispiel Ndisgtk und NdisConfig, die es ermöglichen, NDISwrapper über eine grafische Benutzeroberfläche anstatt über Konsolenbefehle zu installieren .

Architektur

NDISwrapper ermöglicht es einem Unix-ähnlichen System, Windows-Treiber vom Typ NDIS und WLAN zu verwenden. Es war nützlich, als es noch keine Linux-WLAN-Treiber für gängige WLAN-Karten gab. Es besteht aus:

  • Ein NDIS-Treiber, der eine Art Overlay für Ethernet -Gerätetreiber darstellt.
  • Ein Wi-Fi-Manager zur Steuerung der Funk- und Sicherheitsfunktionen der Wi-Fi-Karte. Er stellt eine Schnittstelle zur „drahtlosen Erweiterung“ bereit.
  • Ein USB-Manager und ein PnP-Manager ermöglichen die Nutzung von in USB-Sticks integrierten WLAN-Karten. Der USB-Manager besteht aus zwei Teilen: einer kleinen USBD-Implementierung (USB-Stack) und einem einfachen Windows Driver Model (WDM)-USB-Treiber, der wiederum aus zwei Teilen besteht: Der vordere Teil empfängt Aufrufe vom NDISwrapper-USB-Stack (genauer gesagt Aufrufe des ursprünglichen Windows-Treibers, die normalerweise an den Windows-USB-Stack gerichtet wären), während der hintere Teil den Linux-USB-Stack verwendet.
  • Ein minimales Ntoskrnl, das das DDK simuliert für:
    • Anrufe vom Windows-Treiber verwalten.
    • Verwaltung von IRP an den Windows-Treiber (derzeit nur WDM).
    • einfache Verwaltung von Filtertreibern
    • Laden/Entladen von Windows-Treibern
  • Ein Wrapper, der Linux-Aufrufe in Windows-Aufrufe und umgekehrt umwandelt und außerdem Ergebnisse und Fehlercodes verwaltet.

So funktioniert es

Ndiswrapper verwendet Windows INF-Dateien . [ 1 ]

Wenn eine Linux-Anwendung ein unter Linux als NDISwrapper-Gerät registriertes Gerät aufruft, ermittelt der NDISwrapper den Ziel-Windows-Treiber. Anschließend übersetzt er die Linux-Anfrage in Windows-Sprache, ruft den Windows-Treiber auf, wartet auf das Ergebnis, übersetzt es erneut in Linux-Sprache und sendet es an die Linux-Anwendung zurück. Ein Linux-Treiber (NDISwrapper ist ein Linux-Treiber) kann einen Windows-Treiber aufrufen, da beide im selben Adressraum (demselben wie der Linux-Kernel) ausgeführt werden. Besteht der Windows-Treiber aus mehreren Treiberschichten (z. B. einer für Ethernet über einem für USB), wird der Treiber der obersten Schicht aufgerufen. Dieser erzeugt dann neue Aufrufe (IRP in Windows-Sprache) durch den Aufruf des „mini ntoskrnl“. Daher muss das „mini ntoskrnl“ wissen, dass weitere Treiber vorhanden sind; es muss diese zuvor in seiner internen Datenbank durch Lesen der Windows-INF-Dateien registriert haben.

Ähnliche Programme

Einschränkungen

  • NDISwrapper ist auf die drahtlosen Erweiterungen älterer Menschen angewiesen, um Anwendungen den Zugriff auf WLAN zu ermöglichen.
  • Da NDISwrapper auf Windows-Treibern basiert, unterstützt es nur die Architekturen i386 und x86_64 . [ 5 ]
  • NDISwrapper implementiert NDIS 6 ( Windows Vista- Version) noch nicht , wodurch die Treiber auf Windows XP beschränkt sind. [ 6 ] Ein Codezweig auf der Projektseite wird seit 2006 weiterentwickelt, [ 7 ] jedoch wurde ein Funktionswunsch aus dem Jahr 2009 noch nicht bearbeitet. [ 8 ]
Für die x86-Architektur stellt dies aufgrund der weiten Verbreitung von Windows XP IA-32 kein gravierendes Problem dar. Viele Hersteller bieten 64-Bit-Treiber jedoch ausschließlich für Windows Vista an. Dies bedeutet, dass Linux-Systeme mit x86-64-Architektur solche Netzwerkgeräte nicht nutzen können (weder XP IA-32 NDIS5-Treiber, da sie 64-Bit-Systeme sind, noch NDIS6-Treiber, da sie NDIS6 nicht unterstützen). Zwar lassen sich weiterhin Windows XP 64-Bit-Treiber verwenden, die NDIS5 implementieren [ 9 ] , jedoch stehen für XP64 (NDIS5/64 Bit) weniger Treiber zur Verfügung als für XP32 (NDIS5/32 Bit).
  • Seit 2006 sind die meisten Windows-Treiber mit der Windows Driver Foundation (WDF) kompatibel, die NDISWrapper nicht nutzen kann. Dadurch ist NDISWrapper veraltet, da es nur das ältere WDM-Treiberframework unterstützt.

Siehe auch

Referenzen

  1. ^ "Welche Linux-Distribution funktioniert SOFORT mit dem D-Link USB-WLAN-Router DWL-g122 Rev. C1 (RT73)?" .
  2. ^ Bill Paul (24. Januar 2004). „Project Evil: The Evil Continues“ . freebsd-current (Mailingliste). Archiviert vom Original am 2. Juli 2017. Abgerufen am 9. September 2014 .
  3. ^ "sys/dev/netif/ndis/" . Super User's BSD Cross Reference . DragonFly BSD . 08.12.2018 . Abgerufen am 04.03.2019 .
  4. ^ NetBSD-SoC: Portierung des NDIS-Netzwerktreibers von FreeBSD auf NetBSD
  5. ^ „Sourceforge.net: FAQ - ndiswrapper“ . ndiswrapper.sourceforge.net. 2010-01-20 . Abgerufen am 2011-08-05 .
  6. ^ „SourceForge.net: ndiswrapper FAQ“ . Ndiswrapper.sourceforge.net. 2010-01-20 . Abgerufen am 28.06.2024 .
  7. ^ „SourceForge.net: ndisv6 code branch“ . Ndiswrapper.sourceforge.net. 1. November 2013. Abgerufen am 1. November 2013 .
  8. ^ „SourceForge.net: Funktionsanfrage für ndiswrapper“ . Ndiswrapper.sourceforge.net. 12.04.2009 . Abgerufen am 28.07.2013 .
  9. ^ "Ndiswrapper / Diskussion / Hilfe: Treiber netr7364 konnte nicht geladen werden" .