ターミナルウィンドウで実行されるndiswrapperコマンドライン | |
| 開発者 | ヤン・キスカ、ギリダール・ペンマサニ、ポントゥス・フックス |
|---|---|
| 安定リリース | 1.63 / 2020年5月3日 |
| オペレーティング·システム | IA-32およびx86-64アーキテクチャ上のLinuxのみ |
| タイプ | ドライバーラッパー |
| ライセンス | GNU GPL |
| Webサイト | NDISwrapper wiki、NDISwrapper ダウンロード エリア |
NDISwrapper は、Windows XPネットワーク デバイスドライバー ( PCI カード、USB モデム、ルーターなどのデバイス用) を Linux オペレーティング システムで使用できるようにするフリー ソフトウェア ドライバー ラッパーです。NDISwrapper は、WindowsカーネルとNDIS API を実装し、 Windows ネットワーク ドライバーをこの実装に動的にリンクすることで機能します。そのため、 Windows でサポートされている命令セット アーキテクチャ( IA-32およびx86-64 )に基づくシステムでのみ機能します。
一部のネットワーク アダプタのネイティブ ドライバはLinux では利用できません。これは、一部の製造元が独自のインターフェイスを維持し、クロスプラットフォーム ドライバを作成しないためです。NDISwrapper を使用すると、事実上すべての最新の PC ネットワーク アダプタで利用できる Windows ドライバを使用できます。
使用
Linux ドライバーの作成、インストール、使用という 3 つの手順があります。NDISwrapper は、インストール時に使用されるコマンド ライン ツールと、アプリケーションがWi-Fiサブシステムを呼び出すときに使用される Windows サブシステムという 2 つの主要部分で構成されています。
NDISwrapper インストールの結果は、Linux アプリケーションで動作できるように何らかの Linux ドライバーになるはずなので、ユーザーが最初に行う操作は、2 つ以上の Windows ファイルと NDISwrapper バージョンの Windows DDK を Linux カーネル モジュールに「コンパイル」することです。これは、「ndiswrapper」というツールで行います。その結果生成された Linux ドライバーは、OS に (多くの場合は手動で) インストールされます。その後、Linux アプリケーションはこの Linux ドライバーに要求を送信できます。この Linux ドライバーは、(現在は) 内部の Windows ドライバーと DDK を呼び出すために必要な調整を自動的に行います。
この「コンパイル」を実行するには、NDISwrapper には少なくとも Windows ドライバの一部として必ず提供される「.inf」ファイルと「.sys」ファイルが必要です。たとえば、ドライバの名前が「mydriver」で、ファイルが mydriver.inf と mydriver.sys で vendorid:productid が 0000:0000 の場合、NDISwrapper はドライバを/etc/ndiswrapper/mydriver/にインストールします。このディレクトリには次の 3 つのファイルが含まれます。
- 0000:0000.conf には、infファイルから抽出された情報が含まれています。
- mydriver.inf (元の inf ファイル)
- mydriver.sys (ドライバー ファイル)
グラフィカルフロントエンド

NDISwrapper には、Ndisgtk や NdisConfig などのグラフィカル フロントエンドがあり、コンソール コマンドではなく グラフィカル ユーザー インターフェイスを使用して NDISwrapper をインストールできます。
建築
NDISwrapper は、Unix 系システムで NDIS および WIFI タイプの Windows ドライバーを使用できるようにします。これは、一般的な Wi-Fi カード用の Linux Wi-Fi ドライバーがなかった時代に役立ちました。次のもので構成されています。
- NDIS ドライバーは、イーサネットデバイス ドライバーの一種のオーバーレイです。
- Wi-Fi カードの無線およびセキュリティ部分を制御するための Wi-Fi マネージャー。「ワイヤレス拡張」インターフェイスを公開します。
- USB マネージャーと PnP マネージャーにより、USB スティックに埋め込まれた Wi-Fi カードを使用できるようになります。USB マネージャーは 2 つの部分で構成されます。最初は小さな USBD 実装 (USB スタック)、次にシンプルなWindows ドライバー モデル(WDM) USB ドライバーです。このドライバー自体も 2 つの部分で構成されています。前部は NDISwrapper USB スタックからの呼び出し (実際には、通常は Windows USB スタックに送られる元の Windows ドライバーからの呼び出し) を受け取り、後部は Linux USB スタックを使用します。
- 以下の DDK をシミュレートする最小限の Ntoskrnl:
- Windows ドライバーからの呼び出しを管理します。
- Windows ドライバーへの IRP の管理 (現時点では WDM のみ)
- フィルタドライバをシンプルな方法で管理する
- Windows ドライバーのロード/アンロード
- Linux 呼び出しを Windows に、またその逆に変換するラッパー。結果とエラー コードも管理します。
仕組み
NdiswrapperはWindows INFファイルを使用します。[1]
Linux アプリケーションが Linux に NDISwrapper デバイスとして登録されているデバイスを呼び出すと、NDISwrapper はどの Windows ドライバーがターゲットであるかを判断します。次に、Linux クエリを Windows 用語に変換し、Windows ドライバーを呼び出し、結果を待って Linux 用語に変換し、結果を Linux アプリケーションに返します。Linux ドライバー (NDISwrapper は Linux ドライバー) から Windows ドライバーを呼び出すことは可能です。これは、両方が同じアドレス空間(Linux カーネルと同じ) で実行されるためです。Windows ドライバーが階層化されたドライバー (たとえば、イーサネット用ドライバーの上位に USB 用ドライバー) で構成されている場合、呼び出されるのは上位層のドライバーであり、この上位層は「mini ntoskrnl」を呼び出すことによって新しい呼び出し (Windows 用語では IRP) を作成します。したがって、「mini ntoskrnl」は他のドライバーがあることを認識している必要があり、Windows の「.inf」ファイルを読み取って事前にそれらのドライバーを内部データベースに登録している必要があります。
類似プログラム
- Wayback Machineに 2007-05-17 にアーカイブされた DriverLoader は、Linuxant が Linux 用に作成した商用ツールで、NDISwrapper と同じ機能を提供するようです。
- NDISwrapperプロジェクトとは独立して、しかしほぼ同時期に、Wind River SystemsのBill PaulはFreeBSD用にProject EvilまたはThe NDISulatorと呼ばれる同様のシステムを開発しました。[2]その後、 DragonFly BSD [3]とNetBSD [4] に移植されました。
制限事項
- NDISwrapper は、アプリケーションが Wi-Fi にアクセスできるようにするために、古い「ワイヤレス拡張機能」に依存しています。
- NDISwrapperはWindowsドライバーに依存しているため、i386とx86_64アーキテクチャのみをサポートしています。[5]
- NDISwrapperはまだNDIS 6(Windows Vista版)を実装しておらず、ドライバーはWindows XPに限定されています。 [6] 2013年10月現在[アップデート]、プロジェクトサイトのコードブランチは2006年から開発中ですが、[7] 2009年の機能要求は未割り当てのままになっています。[8]
- x86 アーキテクチャでは Windows XP x86-32が普及しているため大きな問題にはなりませんが、多くのベンダーは Windows Vista のみに 64 ビット ドライバー バージョンを作成することを選択しています。つまり、x86-64 アーキテクチャを使用する Linux システムでは、このようなネットワーク デバイスを使用できません (64 ビット システムであるため XP x86-32 NDIS5 を使用できず、NDIS6 を使用できないため NDIS6 64 ビット ドライバーも使用できません)。NDIS5 を実装する Windows XP 64 ビット ドライバーを使用することは依然として可能ですが、[9] xp64 (NDIS5/64 ビット) 用の利用可能なドライバーは XP32 (NDIS5/32 ビット) 用よりも少なくなっています。
- 2006 年以降、ほとんどの Windows ドライバーはWindows Driver Foundation (WDF)に準拠していますが、NDISWrapper はこれを使用できません。以前の WDM ドライバー フレームワークのみをサポートするため、NDISWrapper は時代遅れになります。
参照
参考文献
- ^ 「D-link usb wifi DWL-g122 rev.c1 (Rt73) ですぐに使用できる Linux ディストリビューションはどれですか?」。
- ^ Bill Paul (2004年1月24日). 「Project Evil: The Evil Continues」. freebsd-current (メーリングリスト). 2017年7月2日時点のオリジナルよりアーカイブ。2014年9月9日閲覧。
- ^ "sys/dev/netif/ndis/".スーパーユーザーのBSD相互参照. DragonFly BSD . 2018-12-08 . 2019-03-04閲覧。
- ^ NetBSD-SoC: FreeBSD の NDIS ネットワーク ドライバーを NetBSD に移植する
- ^ 「Sourceforge.net: FAQ - ndiswrapper」 ndiswrapper.sourceforge.net. 2010-01-20 . 2011-08-05に閲覧。
- ^ 「SourceForge.net: ndiswrapper FAQ」。Ndiswrapper.sourceforge.net。2010-01-20。2024-06-28に閲覧。
- ^ 「SourceForge.net: ndisv6 コード ブランチ」。Ndiswrapper.sourceforge.net。2013 年 11 月 1 日。2013年 11 月 1 日に取得。
- ^ 「SourceForge.net: ndiswrapper 機能リクエスト」。Ndiswrapper.sourceforge.net。2009 年 4 月 12 日。2013年 7 月 28 日閲覧。
- ^ 「Ndiswrapper / ディスカッション / ヘルプ: ドライバー netr7364 をロードできませんでした」。
