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

   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  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  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ü,  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  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  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$". 
  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  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  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.