XP Boot Process (Ön Yükleme)
Bilgisayar Sorunları

XP Boot Process (Ön Yükleme)

Öncelikle birazdan okumaya başlayacaklarınızı Vista ve sonrası işletim sistemlerinde unutmuş olmanızı dilerim. Çünkü XP’den sonra Boot Process evrim niteliğinde değişiklik göstermiştir.

Bilgisayarına elektrik yürüdükten ‘Başlat’ çubuğunu görene kadarki geçen sürede içeride neler olduğunu merak edenlere; bu işlemlerin tümüne Boot Process (Ön Yükleme) adı verildiğini söyleyerek anlatmaya başlayayım. Bilgisayarınızın ve işletim sisteminizin nasıl başladığını bilmeniz, açılıştaki sorunların kaynağına sizi daha da yaklaştırır. 

Boot Process işlemi 32 bitlik bir XP işletim sisteminde 5 ana kısımda gerçekleşir:

  1. Pre-Boot Sequence
  2. Boot Sequence
  3. Kernel Load Sequence
  4. Kernel Initiation Sequence
  5. Logon Sequence

Pro-Boot Sequence:

Bilgisayar bu kısımda işletim sistemiyle ilgilenmez, varlığından haberi yoktur. Bu kısımda NTLDR adındaki Power-on Self Test (POST) adında hızlı bir donanım testi başlar. Klavye, ekran kartı, ram, işlemci gibi gerekli donanımların testi yapılır. Bu kısımda çıkacak sorunlar işletim sistemi değil, donanımla ilgilidir. Burada oluşacak sorunlar görsel bildirilemezse, periyodik ve farklı tonlarda sesli uyarılar ile bildirilir.

Boot Sequence:

Boot Sequence, kendi içinde 4 fazdan oluşur.

  1. Initial Boot Loader: Bu fazda eksikliği ile tanınan NTLDR ile tanışılır. NTLDR, burada Mini Filesystem adı verilen, içinde NTFS ve FAT gibi dosya sistemlerinin bulunduğu sürücüleri çalıştırır. Böylelikle birazdan tanışılacak olan işletim sistemi için başlangıç türü hazırlanmış olur. NTLDR, burada biraz daha işi kalmıştır, işlemciyi real moddan 32bit moda alacaktır. Fiziksel ram’den 640K kadar başlangıç için ayırır ve geri kalanını da işlemciye 32bit işletim sistemi için genişletilmiş bellek olarak gösterir.

  2.  

  3. Operating System Selection: Bu fazda NTLDR, BOOT.ini dosyası ile tanışır ve işletim sisteminin disk konumu, başlangıç seçenekleri gibi bilgilere ulaşır. Çoklu işletim sistemi kuruluysa seçim bizi burada karşılar.

  4.  

  5. Hardware Detection: Bu fazda NTDETECT.COM ve NTLDR işbirliği vardır.NTDETECT.COM, ileride registry’a girmek için lazım olan donanım listesini çıkartır ve NTLDR’a yollar. NTLDR, bu listeyi daha sonra Kernel’e vererek HKEY_LOCAL_MACHINE\HARDWARE anahtarına girmesini sağlayacaktır.
  6. Configuration Selection: Bu fazda, işletim sistemini birden fazla donanım profili ile başlatmaya dair bir konfigürasyon olup olmadığına bakılır, varsa bize Hardware Profile/ Configuraton Recovery başlıklı bir seçim ekranı gösterilir.

Boot Sequence aşamasındaki sorunlar başlıca NTLDR, NTDETECT.COM ve BOOT.INI dosyaları ile ilgilidir denebilir. Aslında bu kısımda en büyük işi bu üç dosya yapmış olsa da, küçük yardımları ile NTBOOTDD.SYS, BOOTSECT.DOS ve NTOSKMI.EXE dosyalarını da anmış olalım.

Kernel Load Sequence:

NTLDR bu aşamada Kernel adı verilen, XP’nin çekirdek dosya NTOSKRNL.EXE ve Hardware  Abstraction Layer isimli HAL.DLL dosyasını çağırır. HAL.DLL, XP çekirdeğinin bilgisayar donanımları arasında tercüman bir katman olarak düşünülebilir. XP’nin bir farklı bir çok donanım ile çalışmasını sağlayan dosyadır. NTLDR, burada onlara iş devredip bizi uğurlayacaktır artık.

Bu dosyalar da geldikten sonra NTLDR, elini registry’a atar. HKEY_LOCAL_MACHINE\SYSTEM içine girmiştir bile. Burada Control Set adı verilen, işletim sisteminin sağlıklı, sağlıksız son açılış bilgilerini içeren hayati 2 anahtardan hangisini seçeceğini belirler. Bu seçimini ona HKEY_LOCAL_MACHINE\SYSTEM\SELECT değeri söyler. ControlSet001 ve ControlSet002’den hangisi ile devam edileceği bilgisini aldıktan sonra yeni ama geçici bir değer yazarak işletim sistemini burada açar. Bu değere de CurrentControl

Bu registry’deki işlerin canınızı biraz sıktığını duyar gibiyim, o yüzden NTLDR’ın burada neler yapmak istediğine, ne aradığına, amacının ne olduğuna biraz daha eğlenceli yaklaşalım:

Sistemin nasıl açılacağı, hangi Windows servislerin başlatılacağı, hangi aygıt sürücülerinin yükleneceği gibi bilgiler bu Control Set adındaki 3 registry değerinde yazılıdır. Az önce 2 hayati değerden birinin seçildiğini yazdım, neden burada 3 değer var şimdi anlayacağız…

HKEY_LOCAL_MACHINE\SYSTEM altında ControlSet001, ControlSet002 ve CurrentControlSet adında 3 anahtar görünür. Yedek olması amacıyla birden fazla control set vardır burada. Varsayılan control set ile sistem düzgün başlamadıysa diğerinden denenir.

Buraya kadar anlaştıysak hangi değerin seçileceğine ve hangi değerin ne zaman seçileceğine gelelim…

HKEY_LOCAL_MACHINE\SYSTEM\SELECT registry anahtarı altında Current, Default, Failed ve LastKnowGood adı altında değerler vardır. Bu değerlerden Current olanı, CurrentControlSet’in, yani bu yazıyı okurken aktif olan, sisteminizde geçerli olan değişikliklerin yazıldığı değerin yerini gösterir. Hatırlarsanız bu değer için geçici demiştim. Evet, bilgisayarınızı kapatırken ve açarken değişiklikler bir yere kopyalanır ve bu değer silinir. Nereye mi kopyalanır, bunu da bize Default değeri söyler. Sistem başarılı bir şekilde açıldı ve kapanıyorsa, ayaraları 1 veya 2 numaralı Control Set’e yaz der. CurrentControlSet kapanışta kendini kopyalamış ve silmiştir artık.

Gelelim LastKnownGood değeri ne diyor? Pek bir şey demiyor, açılışta F8 ile Last Known Good Configuration yaparak geliyorsan bu Control Set’i kullanacaksın diyor aslında. O yüzden Last Known Good Configuration nedir, bir senaryoyla ona inelim…

Örneğin yeni bir sürücü yüklediğinizde, program yüklediğinizde, kaldrıdığınızda vs. konuştuğumuz gibi değişikler CurrentControlSet’e yazılıyor olacak. Bilgisayarı kapatıyoruz artık. Kapanırken ayarlar Default değerde gösterilen, söylenen 1 numaralı Control Set’e kopyalanıyor olacak. CurrentControlSet, 1 numaralı ControlSet’e kopyalandı. Diyelim yüklediğiniz bu sürücü sistem açılışını bozacak değişklik yaptı; ayarlar bu değişiklik ile kopyalandı bile. Şimdi bilgisayarımızı açıyoruz, Default değeri dediki sistem kopyasını ben 1 numarlı Conrtol Set’e kopyalattım, CurrentControlSet oradan oluşturulacak, sistem buradan açılacak. İşte sistem açılmadı. Burada yardımıza Last Known Good Configuration yetişecek. Nasıl? Default adındaki adam, sistem ayarları 1. ControlSet’den açılacak, kapanırken de ayarlar 1. ControlSet’e yazılacak diyor. Bu sürekli böyle demeye devam ederken, Last Known Good Configuration şunu Kernel (Çekirdek)’e yapmıştır bile, sistem her sağlıklı açıldığında bir kopyasını 2 numaralı ControlSet’e klonlatmıştır. Bu klonu 2 numaraya koyduğunu da kendine yazar. F8’de kendisine sorduğumuzda da o sağlıklı klonun 2.’de olduğunu gösterir. Biz de yolumuza Default’un dediği 1’den değil, LastKnowGood’un dediği 2’den devam ederiz. Biz yolumuza 1.ControlSet’ten devam edince Default’ta mahçup bir şekilde 1.’nin bozuk olduğunu gider Failed adı verilen değere söyler. Failed, 1 numaralı ControlSet’in bozuk olduğunu kendine yazar, sorana da söyler, hayat devam eder.

Umarım anlatabilmişimdir kafa karıştırmadan.

Hemen kaçmayın, bitmedi, hatırlarsanız 3. aşamada, Kernel Load Sequence sürecindeyiz, daha başlat görünmedi.

İşte NTLDR, CurrentControlSet’i buldu ve bundan sonrasını artık Kernel (Çekirdek)’e bırakıyor.

Kernel Initiation Sequence:

Çekirdek (Kernel) işe başlamıştır. Bize burada XP’nin logosunu ve barını gösterir ama arkada bununla yetinmiyordur. Hardware Detection fazında, NTDETECT.COM’un hazırlayıp NTLDR’a verdiği liste, şimdi Kernel’in elindedir. Kernel bu listeyi HKEY_LOCAL_MACHINE\HARDWARE anahtarına yazmaktadır. Bu işi de bitince, sistemde her şey yolunda gidiyorsa, CurrentControlSet de açılıyorsa, o da CurrentControlSet’i bir taklit etmeye başlar ve hemen CloneControlSet adında bir klon yaratır, sistem düzgün açılana kadar da elinde tutar. Sistemin sorunsuz açılacağı kesinleştiyse, bu klon taklit ettiği CurrentControlSeti’i, LastKnownGood’un gösterdiği yere kopyalar ve kendini yok eder. Ya CurrentControlSet hasarlı olsaydı, açılmasaydı derseniz; klon bir önceki başarılı açılışta da taklit yapmıştı ve LastKnowGood’un gösterdiği yere kopyalamıştı kendini.

Ardından aygıt sürücüleri ve servislerde yüklenir.

Logon Sequence:

Gözümüz aydın, Başlat’a ne kaldı ki? Bir tek Kernel, WINLOGON.EXE’yi çağırıp, Local Security Authority (LSA)’yı hazırlatacaktır. LSA’da geldiğinde, Windows domain’de değilse, yani Workgroup’taysa  SAM adlı şifre veri tabanına; yok eğer Domain kullanıcısı ise Active Directory’den kullanıcıya kullanıcı adı ve şifre doğrulaması yapıp bu makaleyi bitirecek…

Teşekkürler.

Kayhan KIRBAŞ

 


Diğer İçerikler:

Powered By relatedArticle