WikiDer > NDISwrapper

NDISwrapper
NDISwrapper
командная строка ndiswrapper
Разработчики)Ян Кишка, Гиридхар Пеммасани, Понтус Фукс
Стабильный выпуск
1.63 / 3 мая 2020 г.; 6 месяцев назад (2020-05-03)
Операционная системаLinux на IA-32 и x86-64 только архитектуры
ТипОболочка драйвера
ЛицензияGNU GPL
Интернет сайтВики по NDISwrapper, Область загрузки NDISwrapper

NDISwrapper это бесплатно программное обеспечение оболочка драйвера что позволяет использовать Windows XP сетевое устройство драйверы (для таких устройств как Карты PCI, USB-модемы, и маршрутизаторы) в операционных системах Linux. NDISwrapper работает за счет реализации Windows ядро и NDIS API и динамическое связывание сетевых драйверов Windows с этой реализацией. В результате он работает только в системах, основанных на архитектуры наборов команд поддерживается Windows, а именно IA-32 и x86-64.

Собственные драйверы для некоторых сетевых адаптеров недоступны в 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 (файл драйвера)

Графические интерфейсы

Графический интерфейс Ndisgtk

Существуют графические интерфейсы для NDISwrapper, такие как Ndisgtk и NdisConfig, которые позволяют устанавливать NDISwrapper с помощью графический интерфейс пользователя а не консольные команды.

Архитектура

NDISwrapper позволяет Unix-подобной системе использовать драйверы Windows типа NDIS и WIFI. Это было полезно в то время, когда не было драйверов Wi-Fi Linux для обычных карт Wi-Fi. Он состоит из:

  • Драйвер NDIS, который является своего рода оверлеем для Ethernet драйверы устройств.
  • Менеджер Wi-Fi для управления радио и защитной частью карты Wi-Fi. Он предоставляет интерфейс «беспроводного расширения».
  • Диспетчер USB и диспетчер PnP, чтобы можно было использовать карту Wi-Fi, встроенную в USB-накопители. Диспетчер USB состоит из двух частей: сначала крошечной реализации USBD (стек USB), а затем простой Модель драйвера Windows (WDM) USB-драйвер, который состоит из двух частей: передняя часть будет принимать вызовы из стека 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 разработал аналогичную систему, известную как Проект зла или же 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 (WDF), который NDISWrapper не может использовать. Это делает NDISWrapper устаревшим, поскольку он поддерживает только предыдущую структуру драйверов WDM.

Смотрите также

Рекомендации

  1. ^ 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 /
  2. ^ Билл Пол (24 января 2004 г.). «Проект Зла: Зло продолжается». freebsd-current (Список рассылки). Архивировано из оригинал 2 июля 2017 г.. Получено 9 сентября, 2014.
  3. ^ "sys / dev / netif / ndis /". Перекрестная ссылка BSD суперпользователя. DragonFly BSD. 2018-12-08. Получено 2019-03-04.
  4. ^ NetBSD-SoC: перенос сетевого драйвера FreeBSD NDIS на NetBSD
  5. ^ "Sourceforge.net: FAQ - ndiswrapper". ndiswrapper.sourceforge.net. 2010-01-20. Получено 2011-08-05.
  6. ^ "SourceForge.net: FAQ по ndiswrapper". Ndiswrapper.sourceforge.net. 2009-07-12. Получено 2009-09-21.
  7. ^ "SourceForge.net: ветка кода ndisv6". Ndiswrapper.sourceforge.net. 2013-11-01. Получено 2013-11-01.
  8. ^ "SourceForge.net: запрос функции ndiswrapper". Ndiswrapper.sourceforge.net. 2009-04-12. Получено 2013-07-28.
  9. ^ http://sourceforge.net/projects/ndiswrapper/forums/forum/323168/topic/3755985

внешняя ссылка