NDISwrapper - это бесплатная программная оболочка драйверов, которая позволяет использовать драйверы сетевых устройств Windows XP (для таких устройств, как карты PCI , USB-модемы и маршрутизаторы ) в операционных системах Linux. NDISwrapper работает, реализуя ядро Windows и API NDIS и динамически связывая сетевые драйверы Windows с этой реализацией. В результате он работает только в системах, основанных на архитектурах набора команд, поддерживаемых Windows, а именно IA-32 и x86-64 .
![]() командная строка ndiswrapper | |
Разработчики) | Ян Кишка, Гиридхар Пеммасани, Понтус Фукс |
---|---|
Стабильный выпуск | 1.63 / 3 мая 2020 г . |
Операционная система | Linux только на архитектурах IA-32 и x86-64 |
Тип | Оболочка драйвера |
Лицензия | GNU GPL |
Веб-сайт | NDISwrapper вики , NDISwrapper ДЕМО |
Родные драйверы для некоторых сетевых адаптеров недоступны в Linux, поскольку некоторые производители поддерживают проприетарные интерфейсы и не пишут кроссплатформенные драйверы. NDISwrapper позволяет использовать драйверы Windows, которые доступны практически для всех современных сетевых адаптеров ПК.
Использовать
Есть три шага: создание драйвера Linux, его установка и использование. NDISwrapper состоит из двух основных частей: инструмента командной строки, используемого во время установки, и подсистемы Windows, используемой, когда приложение вызывает подсистему Wi-Fi.
Поскольку результатом установки NDISwrapper должен быть какой-то драйвер Linux для работы с приложениями Linux, первое действие, которое делает пользователь, - это «скомпилировать» пару или более файлов Windows, а версию Windows DDK от NDISwrapper в модуль ядра Linux. Это делается с помощью инструмента под названием «ndiswrapper». Полученный драйвер linux затем устанавливается (часто вручную) в ОС. Затем приложение Linux может отправить запрос этому драйверу Linux, который автоматически выполнит необходимые адаптации для вызова своего - теперь - внутреннего драйвера Windows и DDK.
Для достижения этой «компиляции» NDISwrapper требует, по крайней мере, файлов «.inf» и «.sys», неизменно поставляемых как части драйвера Windows. Например, если драйвер называется «mydriver» с файлами mydriver.inf и mydriver.sys и vendorid: productid 0000: 0000, то NDISwrapper устанавливает драйвер в / etc / ndiswrapper / mydriver /. Этот каталог содержит три файла:
- 0000: 0000.conf, который содержит информацию, извлеченную из файла inf
- mydriver.inf (исходный файл inf)
- mydriver.sys (файл драйвера)
Графические интерфейсы
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/d/d9/Ndisgtk.png/300px-Ndisgtk.png)
Существуют графические интерфейсы для NDISwrapper, такие как Ndisgtk и NdisConfig, которые позволяют устанавливать NDISwrapper с использованием графического пользовательского интерфейса, а не консольных команд.
Архитектура
NDISwrapper позволяет Unix-подобной системе использовать драйверы Windows типа NDIS и WIFI. Это было полезно в то время, когда не было драйверов Linux Wi-Fi для обычных карт Wi-Fi. В его состав входят:
- Драйвер NDIS, который является своего рода оверлеем для драйверов устройств Ethernet .
- Диспетчер Wi-Fi для управления радио и защитной частью карты Wi-Fi. Он предоставляет интерфейс «беспроводного расширения».
- Диспетчер USB и диспетчер PnP, позволяющие использовать карту Wi-Fi, встроенную в USB-накопители. Диспетчер USB состоит из двух частей: сначала крошечной реализации USBD (стек USB), а затем простого USB- драйвера модели драйвера Windows (WDM), который сам состоит из двух частей: передняя часть будет принимать вызовы из стека USB NDISwrapper (в факт из вызовов, исходящих от исходного драйвера Windows, которые обычно предназначались для перехода в стек Windows USB), а задняя часть использует стек Linux USB.
- Минимальный Ntoskrnl, имитирующий DDK для:
- управление звонками из драйвера Windows.
- управление IRP для драйвера Windows (на данный момент только WDM)
- упрощенное управление драйверами фильтров
- загрузка / выгрузка драйверов Windows
- Обертка, преобразующая вызовы Linux в Windows и наоборот, а также управляющая результатами и кодами ошибок.
Как это работает
Ndiswrapper использует файлы Windows INF . [1]
Когда приложение Linux вызывает устройство, которое зарегистрировано в Linux как устройство NDISwrapper, NDISwrapper определяет, какой драйвер Windows нацелен. Затем он преобразует запрос Linux в язык Windows, он вызывает драйвер Windows, ожидает результата и переводит его на язык Linux, а затем отправляет результат обратно в приложение Linux. Из драйвера Linux (NDISwrapper - это драйвер Linux) можно вызвать драйвер Windows, потому что они оба выполняются в одном адресном пространстве (так же, как ядро Linux). Если драйвер Windows состоит из многоуровневых драйверов (например, один для Ethernet, а другой для USB), это драйвер верхнего уровня, который вызывается, и этот верхний уровень будет создавать новые вызовы (IRP на языке Windows), вызывая "mini ntoskrnl" . Таким образом, «mini ntoskrnl» должен знать, что существуют другие драйверы, он должен заранее зарегистрировать их в своей внутренней базе данных, прочитав файлы «.inf» Windows.
Похожие программы
- DriverLoader - это коммерческий инструмент, созданный Linuxant для Linux, который, кажется, обеспечивает те же функции, что и NDISwrapper.
- Независимо от проекта NDISwrapper, но примерно одновременно с ним, Билл Пол из Wind River Systems разработал аналогичную систему, известную как Project Evil или The NDISulator для FreeBSD . [2] С тех пор он был перенесен на DragonFly BSD [3] и NetBSD . [4]
Ограничения
- NDISwrapper полагается на устаревшие «беспроводные расширения», чтобы дать приложениям доступ к Wi-Fi.
- Поскольку NDISwrapper полагается на драйверы Windows; он поддерживает только архитектуры i386 и x86_64. [5]
- NDISwrapper еще не реализует NDIS 6 (версия Windows Vista), ограничивая драйверы Windows XP. [6] По состоянию на октябрь 2013 г.[Обновить], ветвь кода на сайте проекта разрабатывалась с 2006 г. [7], но запрос функции от 2009 г. остался неназначенным. [8]
- Хотя это не является серьезной проблемой для архитектуры x86 из-за популярности Windows XP x86-32, многие поставщики предпочитают делать 64-разрядные версии драйверов только для Windows Vista, а это означает, что системы Linux, использующие архитектуру x86-64, не могут использовать такие сетевые устройства (они не могут использовать ни XP x86-32 NDIS5, потому что они 64-битные системы, ни 64-битные драйверы NDIS6, потому что они не могут использовать NDIS6). По-прежнему можно использовать 64-разрядные драйверы Windows XP, которые реализуют NDIS5 [9], однако для xp64 (NDIS5 / 64-разрядная версия) доступно меньше драйверов, чем для XP32 (NDIS5 / 32-разрядная версия).
- С 2006 года большинство драйверов Windows совместимы с Windows Driver Foundation (WDF), которую NDISWrapper не может использовать. Это делает NDISWrapper устаревшим, поскольку он поддерживает только предыдущую структуру драйверов WDM.
Смотрите также
- Список проектов прошивок беспроводных роутеров
- кабакэкстракт
- DebWRT
- INF файл
- LibreWRT
- Унифицированное ядро Linux
- ReactOS
Рекомендации
- ^ http://www.linuxquestions.org/questions/linux-hardware-18/which-linux-distro-works-out-of-the-box-with-d-link-usb-wifi-dwl-g122-rev -c1-rt73-590849 /
- ↑ Билл Пол (24 января 2004 г.). «Проект Зла: Зло продолжается» . freebsd-current (Список рассылки). Архивировано из оригинала 2 июля 2017 года . Проверено 9 сентября 2014 года .
- ^ "Системный / Девайс / Нэтиф / ndis /" . Перекрестная ссылка BSD суперпользователя . DragonFly BSD . 2018-12-08 . Проверено 4 марта 2019 .
- ^ NetBSD-SoC: перенос сетевого драйвера FreeBSD NDIS на NetBSD
- ^ «Sourceforge.net: FAQ - ndiswrapper» . ndiswrapper.sourceforge.net. 2010-01-20 . Проверено 5 августа 2011 .
- ^ «SourceForge.net: ndiswrapper FAQ» . Ndiswrapper.sourceforge.net. 2009-07-12 . Проверено 21 сентября 2009 .
- ^ "SourceForge.net: ветка кода ndisv6" . Ndiswrapper.sourceforge.net. 2013-11-01 . Проверено 1 ноября 2013 .
- ^ «SourceForge.net: запрос функции ndiswrapper» . Ndiswrapper.sourceforge.net. 2009-04-12 . Проверено 28 июля 2013 .
- ^ http://sourceforge.net/projects/ndiswrapper/forums/forum/323168/topic/3755985
Внешние ссылки
- NDISwrapper вики
- Область загрузки NDISwrapper
- Установка NDISwrapper - простой видеоролик, показывающий, как установить NDISwrapper и начать с ним работу.
- Ndisgtk
- NdisConfig
- Project Evil: The Evil Continues , 2004-01-24, Билл Пол в списке рассылки FreeBSD
- Too Evil, Too Furious , 2005-04-25, Билл Пол в списке рассылки FreeBSD
- Порт драйвера NetBSD NDIS