NT'nin Boot İşlemleri

 

Murat Yıldırımoğlu

 

 

Bilgisayarlarımızda BIOS adı verilen ilkel bir program vardır. Bu program eskilerde EPROM, yenilerde Flash RAM denilen tümleşik devrelerde saklanır. BIOS, üst düzey programların bilgisayarın donanımına erişmesini sağlar.

 

Bilgisayarımız açıldığında BIOS'taki programlar harekete geçer ve bir dizi test yapılır: Bellek test edilir, seri portlar (COM portları) test edilir, paralel portlar (LPT portları) test edilir, sabit diskler ve CD sürücüler saptanır vb. Bu işlemlere Power-On-Self-Test denilir (Kısaca POST).

 

POST tamamlandığında BIOS programı, sistemin hangi diskten açılacağı bilgisini CMOS RAM'den alır. CMOS RAM özel bir RAM çeşididir; çok az elektrik tüketir. Bu özelliğiyle de bilgisayarın bazı yapılandırma parametrelerini tutmak için idealdir.

 

Bir sabit diskin üzerinde üç tane bölüm (partition) bulunduğunu varsayalım. Bu bölümlerde çeşitli işletim sistemleri bulunabilir. Örneğin, ilk bölümde Windows 98 ve Windows NT, ikinci bölümde Linux, üçüncü bölümde OS/2 bulunabilir.

 

Peki, üç ayrı bölümde toplam dört işletim sistemi varsa bilgisayarımız hangi işletim sistemi ile açılır?

 

Bu sorunun yanıtı her diskte bir adet bulunan Master Boot Record (Ana Açılış Kayıtı, kısaca MBR)'da bulunur.

 

MBR'de bu diskin üzerindeki kaç bölüm bulunduğu ve bu bölümlerden hangisinin aktif olduğu bilgisi vardır. Aktif bölüm sistemin açılacağı bölümdür. Örneğin, sistem ilk bölümden açılacaksa aktif bölüm 1 nolu bölümdür.

 

Her bölüm üzerinde de o bölüm hakkındaki bilgileri tutan bir Partition Boot Record (Bölüm Açılış Kayıtı, kısaca PBR) bulunur.

 

BIOS, MBR'den aktif bölüm bilgisini aldıktan sonra ilgili bölüme geçer ve oradaki PBR'yi  okur.  PBR'de o bölüm hakkında bilgiler yer alır: Bölümün büyüklüğü, kullanılan dosya sistemi, cluster büyüklüğü ve çalıştırılacak olan ilk dosyanın adı.

 

Eğer aktif bölümde NT yüklü ise PBR'de çalıştırılacak olan ilk dosya NTLDR olarak görünür. NTLDR, 152 KB'lık bir dosya olup sistemin açıldığı bölümde ve kökte yer alır. Görevi NT'yi yüklemektir.

 

BIOS, PBR'ye gidip çalıştırılacak olan ilk dosyanın NTLDR olduğu bilgisini aldığında NTLDR dosyasını belleğe yükler devreden çıkar. Artık NTLDR devrededir.

 

NTLDR çalıştığında BOOT.INI adında bir dosyanın bulunup bulunmadığını kontrol eder ve böyle bir dosya varsa içindeki bilgilere dayanarak, işletim sistemi seçeneklerini gösteren  bir menüyü kullanıcının karşısına çıkartır. Bu menü genel olarak

 

Windows NT

Windows NT VGA

MS-DOS

 

şeklindedir.

 

BOOT.INI dosyasında işletim sistemi seçeneklerinin yanında bu işletim sistemlerinin nerelerden başlatılacağı bilgisi de vardır.

 

Kullanıcı, karşısına çıkan menüden NT'yi seçerse NTDETECT.COM adındaki bir program çalıştırılır. Bu program 27 KB büyüklüğündedir.

 

NTDETECT.COM çalıştığında bazı standart ve zorunlu donanım parçalarını araştırır ve bulduklarının listesini Registry'ye yazar. Araştırılan donanım parçaları şu şekildedir:

 

Bus sistemi

Görüntü kartı

Klavye

COM portları

Paralel Portlar

CPU

Sabit disk

Floppy disk

Fare (Mouse)

 

NTDETECT.COM çalışmasını tamamlayınca, BOOT.INI'deki bilgilere bakarak NT'nin nereye yüklendiğini anlar, bu yere gidip mikrokernel dosyasını (NTOSKRNL.EXE) yükler ve devreden çıkar.  Karşımıza ünlü mavi ekranımız gelir.

 

Eğer kullanıcı karşısına çıkan menüden NT'yi  değil de DOS'u seçerse ne olur? Bu durumda NTLDR programı BOOTSECT.DOS adındaki bir dosyayı çalıştırıp kendisi devreden  çıkar.

 

BOOTSECT.DOS dosyası tam tamına 512 bayt'lık bir dosyadır. Görevi, DOS'un çalışması için gereken kritik bir bilgiyi sisteme vermektir. O bilgi de "çalıştırılacak olan ilk dosya IO.SYS dosyasıdır" şeklindedir. Yukarda anlattığımız gibi, ilk bölümün PBR'sinde ilk çalıştırılacak olan dosya NTLDR olarak görünmektedir. Halbuki DOS, ilk olarak IO.SYS dosyasının çalışmasını öngörür. BOOTSECT.DOS dosyası sayesinde bu bilgi sisteme yüklenir. Dosyanın adı zaten oldukça açıklayıcı: "BOOT SECTor for DOS".

Peki, açılış işlemi sırasında gereken bu dosyaların bazıları silinmiş ya da bozuksa ne olur? Bu dosyalar silinebilir mi demeyin. Bu dosyalar için hiçbir özel koruma yapılmamaktadır. Bilgisayara lokal olarak girmiş bulunan herkes bu dosyaları çok büyük bir rahatlıkla silebilir.

 

Bu dosyaların silindiği ya da bozuk olduğu durumları tek tek inceleyelim.

NTLDR Dosyası Yoksa ya da Bozuksa

 

İşlem sırasını anımsayalım: BIOS MBR'ye gitti, hangi bölümün aktif olduğunu buldu. O bölümdeki PBR'ye gitti, ilk çalışacak dosya NTLDR'dir bilgisini aldı. Ama NTLDR dosyasını bulamadı. Bu durumda

 

Couldn't find ntldr

Please Insert a System Diskette

 

şeklinde bir mesaj verilir ve orada kalınır. Karşımıza bir menü falan gelmez, çünkü menüyü çıkartan NTLDR programıdır. Dolayısıyla DOS'a da geçemeyiz. Peki, ne yapacağız?

 

NTLDR standart bir dosyadır: Kurulumdan kuruluma, bilgisayardan bilgisayara değişmez. Dolayısıyla ben bu dosyayı bir başka bilgisayardan kopyalayıp diske aktarabilirsem sorun kalmaz.

 

Eğer NT'nin kurulu olduğu bölüm FAT ile formatlı ise sistemi A:'dan bir DOS disketi ile açarım, NTLDR dosyasını kopyalarım. Sonra da sistemi resetlerim, hooop, NT sağlığına kavuşur.

 

Peki, NT'nin kurulu olduğu alan FAT ile değil de NTFS ile formatlı ise ne yapabilirim? Bu durumda sistemi bir DOS disketi ile açabilirim ama sabit disk bölümüne erişemem, çünkü DOS işletim sistemi NTFS'i tanımaz.

 

Bu durumda önceden hazırladığım bir sistem açıcı disket ile sistemi açabilirim ve bir başka NT'li bilgisayardan getirdiğim NTLDR dosyasını kopyalayabilirim. Sistem açıcı bir disketin yaratılışını aşağıdaki ilgili bölümde göreceğiz. Sistem açıcı disket NTLDR'nin yanısıra diğer gerekli dosyaların eksik ya da bozuk olduğu durumlarda da işimize yarayacaktır.

BOOT.INI Dosyası Yoksa ya da Bozuksa

 

NTLDR var ve çalışıyor ama BOOT.INI dosyası yok, ne olur? Anımsayacağınız gibi, BOOT.INI'de işletim sistemi seçenekleri ve bu işletim sistemlerinin nerelerden yükleneceği bilgisi var. Eğer BOOT.INI yoksa NTLDR bu bilgilere sahip olamayacaktır. Ama burada NTLDR bir varsayımda bulunuyor ve ilk disk kontrolcünün, ilk sabit diskinde, ilk bölümde, WINNT adında bir klasör arıyor. Eğer bu varsayım doğruysa karşımıza bir menü çıkmıyor ama NT doğrudan çalışıyor. Burada varsayıma dikkat edelim: NT, ilk kontrolcüye bağlı ilk diskteki, ilk bölümde, WINNT adında bir klasörde bulunacak. Bu koşulların biri bile sağlanmazsa NT başlayamaz. Örneğin, herşey tamam ama klasörün adı WINN40 olarak konmuştu. Bu durumda NT açılmaz.

 

NTDETECT.COM Dosyası Yoksa ya da Bozuksa

 

NTDETECT.COM, bazı standart  donanımları her açılışta kontrol eder ve bulduğu donanımları Registry'ye yazar. Eğer NTDETECT.COM yoksa bu kontrol yapılamayacaktır. Bu durumda

NTDETECT failed

mesajı alırız ve orada kalırız: NT açılamayacaktır.

 

Ama NTDETECT.COM'un bulunmadığı bir durumda, karşımıza çıkan menüden DOS'u seçersek DOS açılır. Çünkü DOS seçeneğinin NTDETECT.COM ile bir ilgisi yoktur.

 

BOOTSECT.DOS Dosyası Yoksa ya da Bozuksa

 

NTDETECT.COM da var, BOOTSECT.DOS yok, ne olur? Bu dosyaya menüden DOS şıkkını seçersek gerek duyulur. NT'nin bu dosya ile ilgisi yoktur. NT açılır. Ama DOS'a geçemeyiz. Menüden DOS'u seçtiğimizde boot sektör dosyasının bulunamadığını belirten aşağıdaki mesajı alırız:

 

I/O Error accessing boot sector file multi(0)disk(0)rdisk(0)partititon(1)\\BOOTSS

NTBOOTDD.SYS Dosyası

 

Açılış sırasında bir dosyaya daha gereksinimimiz olabilir. Eğer sabit diskimizin  kontrol kartı SCSI ise ve bu kartın üzerinde kendi BIOS'u yoksa NTBOOTDD.SYS adında bir dosyaya daha gerek duyulacaktır. Burada biraz duralım:

 

PC BIOS'ları normalde SCSI kontrol kartlarını tanımaz. Bu yüzden SCSI kontrol kartlarının üzerinde bir BIOS eklenti programı vardır. Sistem açılırken bu program bilgisayarın BIOS'una eklenir, bu sayede sistem SCSI kontrol kartını ve diskini tanır.

 

Bazı ucuz SCSI kontrol kartlarında  BIOS eklentisi yoktur. Bu durumda işletim sistemlerinin SCSI eklentisini sağlamaları gerekir. NT'de bu işi yapan dosyanın adı NTBOOTDD.SYS'dir. Eğer kontrol kartımız BIOS'suz SCSI ise NT'nin kuruluşu sırasında bu dosya köke kopyalanacak ve açılışta çalıştırılacaktır. Böyle bir durumda NTBOOTDD.SYS dosyasını sistem açıcı diskete kopyalamayı unutmayın.

Sistem Açıcı Disket Yaratma

 

Sistem açıcı disket için şunları yapmalıyım: 

 

1)  Bir disketi NT içinden formatlamalıyım.

2)  Formatladığım disketin içine şu dosyaları yüklemeliyim:

NTLDR

BOOT.INI

NTDETECT.COM

BOOTSECT.DOS

NTBOOTDD.SYS (Eğer BIOS'suz bir SCSI kontrol kartı kullanıyorsam)

 

Disketi niçin NT içinden formatlamalıyım? Çünkü her disketin de bir Boot Record'u (Açılış Kayıtı) vardır ve burada ilk çalışacak dosya adı yer alır. Eğer disketi NT içinden formatlarsanız buraya "ilk çalışacak dosya NTLDR'dır" bilgisi eklenir. Bu da NT açıcı bir disket için şarttır.

 

Sistem Açıcı disket ile sabit diskteki dosya sistemi FAT de olsa NTFS de olsa NT'yi açabilirim. Bir sistem açıcı disket her zaman elinizin altında bulunsun.