FreeDOS ile Ağa Bağlanmak - NDIS sürücü kurulumu
Genel Bakış
(Resim: NDIS mimarisine genel bakış)
"Network Driver Interface Specification" (NDIS)'e dayalı sürücüler,
Windows dünyasında varsayılandır. En yeni sürüm, Windows Vista'da
kullanılan NDIS 6'dır. Windows 98, NDIS 5 ile, Windows 95 ise NDIS
3.1 ile satılmıştır. DOS üzerinde gerçek kipte NDIS2 sürücüsünü
kullanmak gerekir.
Nerede bulunurlar
Ağ kartınız için bir NDIS sürücüsü çok büyük ihtimalle mevcuttur.
Kartın kurulum dosyalarında "NDIS2" adlı bir dizin arayın. Eğer bir
sürücü bulamazsanız, şu siteye bir göz atın: (bkz.: http://
drivesnapshot.de/en/makebootdisk.htm (*01)). Sürücü isminin sonu
*.DOS olmalıdır, mesela 3Com 3C574 PC-Card'ın sürücüsünün ismi şu
şekildedir: "EL3C574.DOS".
Nasıl çalışırlar
NDIS mimarisi dilinde bu sürücülere "Media Access Control" (MAC)
yani Ortam Erişim Kontrolü sürücüleri denir.
Yukarıdaki resimde görebileceğiniz üzere MAC sürücüsü, NDIS
mimarisinin sadece bir unsurudur. NDIS 2.1 belgelendirmesine göre,
(bkz.: http://www.ndis.com/faq/ndis201.txt (*02)) NDIS şu
şekilde çalışıyor gibi görünmektedir:
* FDCONFIG.SYS (FreeDOS) veya CONFIG.SYS (diğer DOS sistemleri)
dosyalarındaki komutlar, Protokol Yönetici sürücüsü PROTMAN.DOS
dosyasını, MAC sürücüsünü ve protokol sürücüsünü yüklerler.
Bu, her bir sürücü için bir satır kullanılarak veya PROTOCOL.INI
dosyasına göre "DEVICEHIGH=IFSHLP.SYS" tarafından yüklenen
"Installable File System Helper" (yani Kurulabilir Dosya Sistemi
Yardımcısı) sürücüsünü, MAC ve protokol sürücülerini
başlatarak yapılabilir.
* Protokol yöneticisi, yapılandırmayı PROTOCOL.INI dosyasından okur ve
bunu kendisinden sonra yüklenen MAC ile protokol sürücüleri için
erişilebilir kılar.
* MAC ile protokol sürücüleri kendilerini bu bilgiye istinaden
yüklerler ve yapılandırırlar. Kendilerini Protokol Yöneticisi'ne
tanımlarlar.
* MAC ile protokol sürücüleri iletişim kurabilmeden evvel,
birbirlerine bağlanmaları gerekir, ki her biri diğerinin "giriş
noktalarına" (iletişim portlarına) erişebilsin. Bu bağlanma süreci,
PROTOCOL.INI bilgilerine dayalı olarak Protokol Yöneticisi
tarafından kontrol edilir.
* Bağlanma süreci NET.EXE VEYA NETBIND.COM tarafından tetiklenebilir
(ki bu, AUTOEXEC.BAT içinde yapılabilir).
* Protokol Yöneticisi (PROTMAN.DOS) o zaman bellekte yerleşik (yani
Terminate and Stay Resident - TSR) program PROTMAN.EXE'yi, bağlanma
komutunu çalıştırması ve sürücülerin doğru sıralanmalarını kontrol
etmesi için başlatır.
* Bağlanmanın ardından, MAC ve protokol sürücüleri birbirleriyle
doğrudan iletişim kurar. Protokol Yöneticisi bu iletişim sürecine
artık dahil olmaz, dolayısıyla NETBIND.COM Protokol Yöneticisi
tarafından ayrılan belleğin ekseriyetini boşaltır.
DOS üzerinde NDIS yapılandırması paketin değişik sürümleriyle zaman
içinde değişmiştir. Bu değişikliklere dair bazı ipuçları şurada
bulunabilir (bkz.: http://www.yale.edu/pclt/WINWORLD/NDIS.HTM (*03)).
Bu belgede, MS client 3.0 ile beraber gelen NDIS
dosyalarını kullandığımızı varsayıyorum.
Bu bölüm, paket sürücülerine dayalı TCP/IP uygulamalarının DOS ile
çalıştırılmaları hakkında olduğu için, burada MS istemcisi
ayrıntılarına girmeyeceğiz, bu zaten başka yerlerde açıklanmıştır.
Gerekli ilave dosyalar
Peki ağ arayüz kartıyla gelen NDIS2 MAC sürücüsünü TCP/IP ile ağa
bağlanmak için nasıl kullanacağız? Yukarıdaki açıklamadan öğrendiğimiz
üzere daha fazla dosyaya ihtiyacımız var. Bunlar şunlardır:
* Protokol Yöneticisi (yani Protocol Manager ("PROTMAN.DOS" ve
"PROTMAN.EXE"))
* Bağlanma yardımcı aracı ("NETBIND.COM")
Bu dosyalar, şuradan indirilebilecek olan MS istemcisi 3.0'ın
bir parçasıdır:
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-1.EXE (*04)
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-2.EXE (*05)
Mevzubahis üç dosya, "DSK3-1.EXE" dosyasının bir parçasıdır. Bu
dosyaları açmak için ilk diskteki "EXPAND.EXE" yardımcı aracını
kullanın.
* DSK3-1.EXE dosyasını C:\MSCLIENT1 gibi bir dizine kopyalayın. Bunu
Windows ile yapıyorsanız uzun bir dosya isminden kaçının. 16 bit
yazılımlar yol çok uzunsa çalıştırılamazlar.
* İçeriğini açmak için DSK3-1.EXE dosyasını çalıştırın.
* PROTMAN.DO_ ve PROTMAN.EX_ dosyalarını çıkarın.
expand -r protman.do_
expand -r protman.ex_
* NETBIND.COM zaten çıkarılmıştır. Şimdi bu üç dosyayı alıp
kullanabilirsiniz.
Bu dosyaları kullanmadan evvel LICENSE.TXT dosyasını okuyun. Yazılım,
dahili kullanım için ücretsizdir. Ne dağıtım, ne de değiştirme izni
yoktur.
Dönüştürücü/"shim" veya takoz
İhtiyacımız olan son parça, "Paket Sürücüsünden NDIS'e Dönüştürücü"dür.
Yaygın kullanılan "DIS_PKT9.DOS" dosyasını edinin (9. sürüm, bkz.:
ftp://ftp.cc.umanitoba.ca/software/pc_network/dis_pkt9.zip (*06))
veya alternatif olarak biraz daha yeni (11. sürüm) "DIS_PKT.DOS"
dosyasını (bkz.: http://danlan.com/pdr_shim/odipkt/odipkt.zip (*07)).
indirin. Kullanım ve işlenmesinde hiçbir fark yoktur. Her ikisi de Prof.
Joe R. Doupnik (Utah Devlet Üniversitesi) ve Dan Lanciani (Harvard
Ünversitesi) tarafından yazılmıştır. Telif hakkı artık var olmayan bir
şirket olan FTP Software, Inc.'e aittir ve neyse ki bu şirket bu
bu sürücüyü kamu malı olarak, özgürce kullanılabilecek, dağıtılabilecek,
değiştirilebilecek ve kaynak koduyla yayınlamıştır.
NDIS sürücülerinin yapılandırılmaları
Daha önce söylediğim gibi, bu sadece asgari bir MS istemcisi 3.0
kurulumudur. Tek amaç paket sürücüsü temelli TCP/IP uygulamaları
kullanmaktır. Bu maksatla:
Şu dört dosyayı
PROTMAN.DOS
PROTMAN.EXE
NETBIND.COM
DIS_PKT.DOS
bir dizine kopyalayın, mesela C:\NET dizinine.
Ayrıca ağ arayüz kartınızın MAC sürücüsünü de kopyalayın, mesela:
EL3C574.DOS
bu dizin içine.
Şimdi, NDIS mimarisi için gerekli yapılandırma dosyasını oluşturmamız
gerekmektedir: C:\NET dizini içinde PROTOCOL.INI adında bir dosya
oluşturun. Bizim asgari yapılandırmamız için sadece şu satırlara
ihtiyacı vardır:
--- PROTOCOL.INI ---
[protman]
DriverName=PROTMAN$
[EL3C574]
DriverName=EL3C574$
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Parametrelerin açıklaması:
Diğer *.ini dosyaları gibi PROTOCOL.INI dosyası, köşeli parantezler
içinde bölüm isimleri ve bunlara verilen değerlerle yapılanmıştır.
[protman]
DriverName=PROTMAN$
İlk bölüm yani [protman] Protokol Yöneticisi'ni tanımlar. Yukarıda
açıklandığı üzere, Protokol Yöneticisi PROTMAN.DOS sürücüsü olarak
yüklenir ki burada adı şu şekildedir: "PROTMAN$". Bölüm ve satır
mecburidir.
[EL3C574]
DriverName=EL3C574$
[EL3C574] bölümü, ağ arayüz kartını tanımlar. Varsayılan olarak
bu bölümün kendisi kartın ismine göre adlandırılır - bu faydalıdır, eğer
birden fazla ağ kartınız varsa ve değişik kartlar için değişik
bölümler kullanıyorsanız. Yani bölüm ismi burada değiştirilecek ilk
değerdir. Kendi ağ kartınıza göre adlandırmanız iyi bir fikir olacaktır.
Ama bölümün ismini "netcard", "NIC" veya "fasulye" olarak da
seçebilirsiniz - nasıl isterseniz, PROTOCOL.INI dosyasında bu bölüme
işaret eden diğer tüm satırları da değiştirdiğiniz sürece sorun olmaz.
Bu bölümdeki bir sonraki satır şudur: "DriverName=EL3C574$". Ağ
arayüz kartı için sürücüyü tanımlar. Örneğimizde bu EL3C574.DOS adını
taşımaktadır, burada ismi "EL3C574$" şeklindedir. Çok muhtemelen bu
örnekte gösterilenden başka bir kart kullanacaksınız. Dolayısıyla bu
satırı değiştirmeniz gerekecektir. Sürücünün doğru ismini, kartınızla
verilen NDIS sürücülerinin bir parçası olması gereken "PROTOCOL.INI"
metin dosyasında bulursunuz.
Bu bölüme ağ kartınız için özel
ayarlar tanımlamak maksadıyla satır eklemek mümkündür. Daha fazla bilgi
için NDIS sürücünüzle sağlanan "PROTOCOL.INI" dosyasına bakın. Fakat
birçok durumda sürücü ismi yani drivername satırı yeterli olacaktır.
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Sonraki bölüm yani "[PKTDRV]", Paket Sürücüsü'nden NDIS'e Dönüştürücü'yü
tanımlar, ki bu "DIS_PKT.DOS" veya "DIS_PKT9.DOS" şeklindedir. Her ikisi
de "PKTDRV$" olarak adlandırılır.
Dönüştürücünün ağ kartının sürücüsü ile bağlanması önemlidir. Bu,
bir sonraki "bindings=EL3C574" satırıyla yapılır. Lütfen bu ismin hiçbir
"$" harfi içermediğini not edin - bu, sürücünün kendisine değil,
sürücüyü tanımlayan bölümün ismine işaret eder.
Bu bölümü yukarıda önerildiği gibi "[fasulye]" olarak adlandırdı iseniz,
buraya "bindings=fasulye" yazmanız gerekecektir ;-).
"intvec" unsuru, paket sürücü arayüzü tarafından kullanılan yazılım
kesme vektörünü belirtir. Daha önce izah edildiği üzere, bu varsayılan
değer olarak onaltılık 0x60 olmalıdır.
"chainvec" unsuru da mevcut bir yazılım kesmesini tanımlar. İşlevi benim
için hâlâ bir gizem teşkil etmektedir. Paket sürücüsü mucidi FTP'ye göre
(bkz.: http://groups.google.de/group/comp.protocols.tcp-ip.ibmpc/msg/
17b6041f7a3cde7c?dmode=source (*08)), bir zincir vektör kesmesi
eklemek paket işleme süratini ve güvenilirliğini arttırabilir.
Kullanıcılar "performansta 10 kat iyileşme" görmüşlerdir (bkz.:
http://groups.google.de/group/comp.protocols.nfs/msg/9b0c2e0d6aa47b32
?dmode=source (*09)). EMM386 hatalarından kaçınmak için, bazıları
(bkz.: http://groups.google.de/group/bit.listserv.banyan-l/msg/
aa961def5901f506?dmode=source (*10)) vektörü ondalık 8 ile artıracak
bir kesme ayarlamayı tavsiye etmiştir. Yani intvec 0x60 ise
(bu ondalık 96'dır), chainvec değerinin ondalık 104 (96+8) olması
gerekir, ki bu onaltılık 0x68 değeridir. Bu ayrıca DIS_PKT.DOS
(bkz.: http://groups.google.de/group/comp.protocols.tcp-ip.ibmpc/
msg/64f2b6060ff2b438?dmode=source (*11)) yazarlarından biri olan
Dan Lanciani tarafından da açıklanmıştır. Daha fazlasını bulursanız
lütfen yazın. Amacımız için PROTOCOL.INI dosyasında ihtiyacımız olan tüm
ayarlar bunlardır. Son bir ipucu: eğer bu değerlerin bazılarını
bilgisayar her başladığında değiştirmek istiyorsanız, mesela bir DOS
başlatma menüsünde, Horst Schaeffer'in bedava "Inifile" aracını
yararlı bulabilirsiniz (bkz: http://www.horstmuc.de/wbat32.htm (*12)).
Kurulum
Yapılması gereken son şey sürücülerin başlatma esnasında yüklenmelerini
sağlamaktır. Sistem dosyalarınızı şu satırları içerecek şekilde
değiştirin:
--- FDCONFIG.SYS (FreeDOS) ---
--- or CONFIG.SYS (MS DOS/başka DOS) ---
DEVICEHIGH=C:\NET\PROTMAN.DOS /I:C:\NET
DEVICEHIGH=C:\NET\EL3C574.DOS
DEVICEHIGH=C:\NET\DIS_PKT.DOS
"/I" parametresi Protokol Yöneticisi'ne PROTOCOL.INI dosyasının konumunu
belirtir. Her ikisi de aynı dizinde ise buna gerek yoktur.
--- AUTOEXEC.BAT ---
C:\NET\NETBIND.COM
NETBIND.COM dosyasının üst belleğe yüklenemeyeceğini ve sadece
AUTOEXEC.BAT dosyasından çalıştırılması gerektiğini not edin. Şayet
onu bir sürücü gibi yüklemeye çalışırsanız, şu hata mesajı ile
çıkacaktır: "run-time error R6009 - not enough space for environment"
(yani "çalışma zamanı hatası R6009 - çevre için yeterli alan yok").
Tekrar başlatma
Hepsi bu. Sisteminizi yeniden başlatın ve ping gibi sade bir TCP/IP
uygulaması ile her şeyin çalışıp çalışmadığını deneyin.
(Resim: NDIS başlatma mesajları)
(*01) Tamam
(*02) https://web.archive.org/web/20030327055531/http://
www.ndis.com/faq/
(*03) https://web.archive.org/web/20100901143311/http://www.yale.
edu/pclt/WINWORLD/NDIS.HTM
(*04) https://www.virtualbox.org/wiki/Sharing_files_with_DOS
and: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2Fbussys%2FClients%2FMSCLIENT%2FDSK3-1.
EXE
(*05) https://www.virtualbox.org/wiki/Sharing_files_with_DOS
and: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2Fbussys%2FClients%2FMSCLIENT%2FDSK3-2.
EXE
and: http://download.amd.com/techdownloads/wfw31.zip
and: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FWG1049.EXE
and: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FNETSHAR.EXE
and: https://jeffpar.github.io/kbarchive/kb/121/Q121086/
and: https://jeffpar.github.io/kbarchive/kb/128/Q128800/
(*06) Tamam
(*07) https://web.archive.org/web/20110722171549/http://
www.danlan.com/
(*08) https://groups.google.com/forum/#!topic/comp.os.ms-windows.
networking.tcp-ip/Ekxg5Y5pP0g
(*09) https://groups.google.com/forum/#!original/comp.protocols.
nfs/Xe1WnbPu0og/Mnukag0uDJsJ
(*10) https://groups.google.com/forum/#!original/bit.listserv.
banyan-l/v6HiU41jovQ/BvUBWe8dlqoJ
(*11) https://groups.google.com/forum/#!original/comp.protocols
.tcp-ip.ibmpc/-/OLTyDwa28mQJ
(*12) https://www.horstmuc.de/div.htm#inifile
Telif hakkı © 2007 Ulrich Hansen, Mainz (Almanya), 2010 ve 2020
senelerinde W.Spiegl tarafından değiştirilmiştir.
2023 senesinde Berki Yenigün tarafından tercüme edilmiştir.
Daha fazla bilgi için buraya bakın.
Bu belgeyi kopyalama, dağıtma ve/veya değiştirme izni, GNU Özgür
Belgeleme Lisansı'nın 1.2 veya Free Software Foundation tarafından
yayınlanan daha yeni bir sürümü kapsamında verilmiştir.
Lisansın bir sureti, "GNU Free Documentation License 1.2"
başlıklı bölümde mevcuttur.