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

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
- DriverLoader ( archiviert am 17.05.2007 in der Wayback Machine) ist ein kommerzielles Tool von Linuxant für Linux, das scheinbar die gleiche Funktionalität wie NDISwrapper bietet.
- Unabhängig vom NDISwrapper-Projekt, aber etwa zeitgleich, entwickelte Bill Paul von Wind River Systems ein ähnliches System namens Project Evil oder The NDISulator für FreeBSD . [ 2 ] Es wurde später auf DragonFly BSD [ 3 ] und NetBSD [ 4 ] portiert .
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
- ^ "Welche Linux-Distribution funktioniert SOFORT mit dem D-Link USB-WLAN-Router DWL-g122 Rev. C1 (RT73)?" .
- ^ 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 .
- ^ "sys/dev/netif/ndis/" . Super User's BSD Cross Reference . DragonFly BSD . 08.12.2018 . Abgerufen am 04.03.2019 .
- ^ NetBSD-SoC: Portierung des NDIS-Netzwerktreibers von FreeBSD auf NetBSD
- ^ „Sourceforge.net: FAQ - ndiswrapper“ . ndiswrapper.sourceforge.net. 2010-01-20 . Abgerufen am 2011-08-05 .
- ^ „SourceForge.net: ndiswrapper FAQ“ . Ndiswrapper.sourceforge.net. 2010-01-20 . Abgerufen am 28.06.2024 .
- ^ „SourceForge.net: ndisv6 code branch“ . Ndiswrapper.sourceforge.net. 1. November 2013. Abgerufen am 1. November 2013 .
- ^ „SourceForge.net: Funktionsanfrage für ndiswrapper“ . Ndiswrapper.sourceforge.net. 12.04.2009 . Abgerufen am 28.07.2013 .
- ^ "Ndiswrapper / Diskussion / Hilfe: Treiber netr7364 konnte nicht geladen werden" .
Externe Links
- NDISwrapper Wiki
- NDISwrapper-Downloadbereich
- NDISwrapper-Installation – Ein leicht verständliches Video, das zeigt, wie man NDISwrapper installiert und in Betrieb nimmt.
- Ndisgtk
- NdisConfig
- Project Evil: The Evil Continues , 24.01.2004, Bill Paul auf einer FreeBSD- Mailingliste
- Zu böse, zu wütend , 25.04.2005, Bill Paul auf einer FreeBSD- Mailingliste
- NetBSD NDIS-Treiberport