NDISобертка
![]() ndiswrapper, Командная строка работающая в окне терминала | |
Разработчик(и) | Ян Кишка, Гиридхар Пеммасани, Понтус Фукс |
---|---|
Стабильная версия | 1,63 / 3 мая 2020 г |
Операционная система | Linux только на IA-32 и x86-64. архитектурах |
Тип | Оболочка драйвера |
Лицензия | GNU GPL |
Веб-сайт | Вики-сайт NDISwrapper , область загрузки NDISwrapper |
NDISwrapper — это бесплатная программная оболочка для драйверов , которая позволяет использовать Windows XP драйверы сетевых устройств (для таких устройств, как карты PCI , USB-модемы и маршрутизаторы ) в операционных системах Linux. Windows NDISwrapper работает путем реализации ядра и 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 и идентификатором поставщика:productid 0000:0000, то NDISwrapper устанавливает драйвер в /etc/ndiswrapper/mydriver/. Этот каталог содержит три файла:
- 0000:0000.conf, содержащий информацию, извлеченную из inf-файла.
- mydriver.inf (исходный inf-файл)
- mydriver.sys (файл драйвера)
Графические интерфейсы
[ редактировать ]
Для 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, которые обычно предназначались для передачи в USB-стек Windows), а задняя часть использует USB-стек Linux.
- Минимальный Ntoskrnl, имитирующий DDK для:
- управление вызовами из драйвера Windows.
- управление IRP для драйвера Windows (на данный момент только WDM)
- упрощенное управление драйверами фильтров
- загрузка/выгрузка драйверов Windows
- Оболочка, преобразующая вызовы Linux в Windows и наоборот, а также управляющая результатами и кодами ошибок.
Как это работает
[ редактировать ]Ndiswrapper использует файлы INF Windows . [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» должен знать, что существуют другие драйверы, он должен заранее зарегистрировать их в своей внутренней базе данных, прочитав файлы Windows «.inf».
Похожие программы
[ редактировать ]- DriverLoader, заархивированный 17 мая 2007 г. на Wayback Machine, представляет собой коммерческий инструмент, созданный Linuxant для Linux, который, похоже, обеспечивает ту же функциональность, что и NDISwrapper.
- Независимо от проекта NDISwrapper, но примерно одновременно с ним, Билл Пол из Wind River Systems разработал аналогичную систему, известную как Project Evil или The NDISulator , для FreeBSD . [2] С тех пор он был портирован на DragonFly BSD. [3] и НетБСД . [4]
Ограничения
[ редактировать ]- NDISwrapper использует устаревшие «беспроводные расширения», позволяющие приложениям получать доступ к Wi-Fi.
- Поскольку NDISwrapper использует драйверы Windows; он поддерживает только архитектуры i386 и x86_64. [5]
- NDISwrapper пока не поддерживает NDIS 6 (версия для Windows Vista), ограничивая драйверы Windows XP. [6] По состоянию на октябрь 2013 г. [update], ветка кода на сайте проекта находится в разработке с 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-файл
- LibreCMC
- Единое ядро Linux
- РеактОС
Ссылки
[ редактировать ]- ^ «Какой дистрибутив Linux работает ИЗ КОРОБКИ с D-link usb wifi DWL-g122 rev.c1 (Rt73)??» .
- ^ Билл Пол (24 января 2004 г.). «Проект Зло: Зло продолжается» . freebsd-current (список рассылки). Архивировано из оригинала 2 июля 2017 года . Проверено 9 сентября 2014 г.
- ^ "sys/dev/netif/ndis/" . Перекрестная ссылка BSD суперпользователя . Драгонфлай БСД . 08.12.2018 . Проверено 4 марта 2019 г.
- ^ NetBSD-SoC: перенос сетевого драйвера NDIS FreeBSD на NetBSD
- ^ «Sourceforge.net: Часто задаваемые вопросы — ndiswrapper» . ndiswrapper.sourceforge.net. 20 января 2010 г. Проверено 5 августа 2011 г.
- ^ «SourceForge.net: Часто задаваемые вопросы по ndiswrapper» . Ndiswrapper.sourceforge.net. 20 января 2010 г. Проверено 28 июня 2024 г.
- ^ «SourceForge.net: ветка кода ndisv6» . Ndiswrapper.sourceforge.net. 01.11.2013 . Проверено 1 ноября 2013 г.
- ^ «SourceForge.net: запрос на добавление функции ndiswrapper» . Ndiswrapper.sourceforge.net. 12 апреля 2009 г. Проверено 28 июля 2013 г.
- ^ «Ndiswrapper/Обсуждение/Справка: Не удалось загрузить драйвер netr7364» .
Внешние ссылки
[ редактировать ]- NDISwrapper вики
- Область загрузки NDISwrapper
- Установка NDISwrapper — простое видео, показывающее, как установить NDISwrapper и начать работу с ним.
- Раскопать
- Ндисконфиг
- Project Evil: The Evil Continues , 24 января 2004 г., Билл Пол в FreeBSD. списке рассылки
- Too Evil, Too Furious , 25 апреля 2005 г., Билл Пол в FreeBSD. списке рассылки
- Порт драйвера NetBSD NDIS