NDISwrapper

редактировать
NDISwrapper
Командная строка ndiswrapper ndiswrapper командная строка
Разработчик (и) Ян Кишка, Гиридхар Пеммасани, Понтус Фукс
Стабильная версия 1.62 / 11 февраля 2019 г.; 20 месяцев назад (11.02.2019)
Операционная система Linux только на IA-32 и x86-64 архитектурах
Тип Оболочка драйвера
Лицензия GNU GPL
Веб-сайтВики-сайт NDISwrapper, Область загрузки NDISwrapper

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

Родные драйверы для некоторых сетей. адаптеры недоступны в Linux, поскольку некоторые производители поддерживают проприетарные интерфейсы и не пишут кроссплатформенные драйверы. NDISwrapper позволяет использовать драйверы Windows, которые доступны практически для всех современных сетевых адаптеров ПК.

Содержание
  • 1 Использование
  • 2 Графические интерфейсы
  • 3 Архитектура
  • 4 Как это работает
  • 5 Подобные программы
  • 6 Ограничения
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние ссылки
Использование

Есть три шага: создание драйвера 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. Это было полезно в то время, когда не было драйверов Linux Wi-Fi для обычных карт Wi-Fi. Он состоит из:

  • драйвера NDIS, который является своего рода оверлеем для драйверов устройств Ethernet.
  • Диспетчер Wi-Fi, для управления радиосвязью и частью безопасности устройства Карта Wi-Fi. Он предоставляет интерфейс «расширения беспроводной сети».
  • Диспетчер USB и диспетчер PnP, позволяющие использовать карту Wi-Fi, встроенную в USB-накопители. Диспетчер USB состоит из двух частей: сначала крошечной реализации USBD (стек USB), а затем простого USB-драйвера Windows Driver Model (WDM), который сам состоит из двух частей: Передняя часть будет принимать вызовы от стек USB-накопителя NDISwrapper (фактически из вызовов исходного драйвера Windows, которые обычно предназначались для перехода в стек USB-накопителя Windows), а задняя часть использует стек USB-накопителя Linux.
  • Минимальный Ntoskrnl, имитирующий DDK для :
    • управление вызовами из драйвера Windows.
    • управление IRP для драйвера Windows (на данный момент только WDM)
    • упрощенное управление драйверами фильтров
    • загрузка / выгрузка драйверов Windows
  • Обертка, преобразующая вызовы Linux в Windows и наоборот, а также управляющая результатами и кодами ошибок
Как это работает

Ndiswrapper использует файлы Windows INF.

Когда приложение 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, но примерно одновременно с ним, of Wind River Systems разработала аналогичную систему, известную как Project Evil или The NDISulator, для FreeBSD. С тех пор он был перенесен на DragonFly BSD и NetBSD.
Ограничения
  • NDISwrapper полагается на устаревшие «расширения беспроводной сети», чтобы предоставить приложениям доступ к Wi-Fi.
  • Поскольку NDISwrapper полагается на драйверы Windows; он поддерживает только архитектуры i386 и x86_64.
  • NDISwrapper пока не реализует NDIS 6 (версия Windows Vista), ограничивая драйверы Windows XP. По состоянию на октябрь 2013 г. ветвь кода на сайте проекта находилась в разработке с 2006 г., но запрос функции от 2009 г. остался неназначенным.
Хотя это не является серьезной проблемой для архитектуры x86 из-за популярности Windows XP x86-32, многие поставщики предпочитают делать 64-разрядные версии драйверов только для Windows Vista - это означает, что системы Linux, использующие архитектуру x86-64, не могут использовать такие сетевые устройства (они не могут использовать XP x86-32 NDIS5, потому что они являются 64-битными системами или 64-битными драйверами NDIS6, потому что они не могут использовать NDIS6). По-прежнему можно использовать 64-разрядные драйверы Windows XP, которые реализуют NDIS5, однако для xp64 (NDIS5 / 64-разрядная версия) доступно меньше драйверов, чем для XP32 (NDIS5 / 32-разрядная версия).
  • С 2006 года большинство драйверов Windows совместимо с Windows Driver Foundation (WDF), которую NDISWrapper не может использовать. Он делает NDISWrapper устаревшим, поскольку он поддерживает только предыдущую структуру драйверов WDM.
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-31 06:37:52
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте