Кіріспе

Linux-та қолданылатын Windows құрылғылары үшін драйвер қаптамасы. NDISwrapper – Linux операциялық жүйелерінде Windows XP желілік құрылғы драйверлерін (PCI карталары, USB модемдері және маршрутизаторлар сияқты құрылғылар үшін) пайдалануға мүмкіндік беретін ақысыз бағдарламалық қамтама. NDISwrapper Windows ядросы мен NDIS API-ларын іске асыру арқылы жұмыс істейді және Windows желілік драйверлерін осы іске асыруға динамикалық түрде қосады. Осының нәтижесінде, ол тек Windows қолдайтын нұсқаулар жиынтығы архитектураларында, атап айтқанда IA 32 және x86 64-те ғана жұмыс істейді. Кейбір желілік адаптерлерге арналған түпкілікті драйверлер Linux-та қолжетімді емес, себебі кейбір өндірушілер өнімдік интерфейстерін сақтайды және кросс-платформалық драйверлерді жазбайды. NDISwrapper барлық заманауи PC желілік адаптерлері үшін қолжетімді Windows драйверлерін пайдалануға мүмкіндік береді.

Қолдану

Үш қадам бар: Linux драйверін жасау, орнату және пайдалану. NDISwrapper екі негізгі бөліктен тұрады: орнату кезінде қолданылатын командалық жол құралы және Wi-Fi жүйесіне қолданба шақырғанда қолданылатын Windows жүйесі. NDISwrapper орнатудың нәтижесі Linux бағдарламаларымен жұмыс істей алатын Linux драйвері болуы керек болғандықтан, пайдаланушының бірінші әрекеті Windows файлдарының бірін немесе бірнешеуін және NDISwrapper-дің Windows DDK нұсқасын 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 (драйвер файлы).

Графикалық беткі жақтары

NDISwrapper үшін Ndisgtk және NdisConfig сияқты графикалық интерфейстер бар, олар NDISwrapper-ді консольдік командалардың орнына графикалық пайдаланушы интерфейсі арқылы орнатуға мүмкіндік береді.

Қалай жұмыс істейді

Ndiswrapper Windows INF файлдарын қолданады. Linux қолданбасы Linux жүйесінде NDISwrapper құрылғысы ретінде тіркелген құрылғыны шақырғанда, Ndiswrapper қандай Windows драйверіне жүгіну керектігін анықтайды. Одан кейін Linux сұранысын Windows тіліне аударады, Windows драйверін шақырады, нәтижесін күтеді және оны Linux тіліне аударғаннан кейін Linux қолданбасына қайтарады. Ndiswrapper Linux драйвері болғандықтан, Linux драйверінен Windows драйверін шақыру мүмкін, себебі екеуі де бірдей адрестік кеңістікте жұмыс істейді (Linux ядросымен бірдей). Егер Windows драйвері қабатталған драйверлерден тұрса (мысалы, Ethernet үшін USB драйверінің үстінде), жоғарғы қабаттағы драйвер шақырылады, ал ол "mini ntoskrnl" арқылы жаңа шақыруларды (Windows терминологиясында IRP) жасайды. Сондықтан "mini ntoskrnl" басқа драйверлердің бар екенін білуі керек, ол оларды Windows ".inf" файлдарын оқып, алдын ала ішкі дерекқонына тіркеген болуы керек.

Ұқсас бағдарламалар

DriverLoader – Linuxant компаниясы Linux жүйесі үшін шығарған коммерциялық құрал, ол NDISwrapper сияқты мүмкіндіктерді ұсынады. NDISwrapper жобасынан тәуелсіз, бірақ оған шамамен бір уақытта Wind River Systems компаниясының Билл Пол FreeBSD үшін Project Evil немесе The NDISulator деп аталатын ұқсас жүйені жасады. Кейіннен ол DragonFly BSD және NetBSD жүйелеріне көшірілді.

Шектеулер

NDISwrapper қолданбалар Wi-Fi-ға қол жеткізу үшін ескі "сызбалы кеңейтулерге" сүйенеді. NDISwrapper Windows драйверлеріне тәуелді болғандықтан, ол тек i386 және x86 64 архитектураларын қолдайды. NDISwrapper әлі NDIS 6 (Windows Vista нұсқасы) іске асырмады, сондықтан драйверлер Windows XP-мен шектелген. 2013 жылдан бері жоба сайтында 2006 жылдан бастап дамытылып келе жатқан код тармағы бар, бірақ 2009 жылғы мүмкіндік туралы өтініш әлі тағайындалмаған. Windows XP x86 32 кең таралғандықтан бұл x86 архитектурасы үшін үлкен мәселе болмаса да, көптеген өндірушілер тек Windows Vista үшін 64 биттік драйверлерді жасауды қалайды, яғни x86 64 архитектурасын қолданатын Linux жүйелері мұндай желілік құрылғыларды пайдалана алмайды (олар 64 биттік жүйе болғандықтан XP x86 32 NDIS5 драйверлерін де, NDIS6 64 биттік драйверлерін де қолдана алмайды). Windows XP 64 биттік драйверлерін, NDIS5-ті қолдайтын драйверлерді пайдалану әлі де мүмкін, бірақ XP64 (NDIS5/64 бит) үшін XP32 (NDIS5/32 бит) драйверлеріне қарағанда аз драйверлер бар. 2006 жылдан бері көптеген Windows драйверлері Windows Driver Foundation (WDF) стандартына сәйкес келеді, бірақ NDISWrapper оны қолдана алмайды. Бұл NDISWrapper-ді қолданыстан шығарады, өйткені ол тек ескі WDM драйверлік фреймворкін қолдайды.