Sistem açılışı bilgisayarların hayat hikayesinde kullanıcı için ‘maceranın başlangıcı’dır diyebiliriz. Peki bilgisayalarda işletim sistemi açılışı (bootloader) nedir, çalışma prensipleri nelerdir? Ahmet Çügen bilgisayar evreninde açılış işlemlerin nasıl başlayıp hangi noktalara evrildiğini Yıldız Savaşları evreninde yer alan karakterler üzerinden zenginleştirip daha anlaşılır bir şekilde açıklığa kavuşturmaya çalışıyor.
Açılış Kaydı Yükleyici (Bootloader)
Bilgisayarlar power düğmesine bastığımız anda kör ve sağır olmasının yanı sıra konuşma bilmeyen ‘bir bebek’ gibidir. Nerede olduğunu ne yapacağını bilmez bir halde karanlığa gömülüdür. Bootloader tam bu anda bilgisayara doğan bir güneş gibidir. Gömülü kodlar hayata gözlerini bootloader ile açar. Var olan cevher açığa çıkar ve sistem önce kendisini tanımaya başlar. Bootloader bilgisayarın ‘Usta Yoda’sı ve yol göstericisidir. Şimdi gelin bu süreci biraz daha teknik detaylarla açıklığa kavuşturalım.
Bilgisayarı açtığımız sırada işlemci, bildiği bir adresten kod çalıştırır. IBM uyumlu bir PC için bu adres, anakart üzerindeki flash belleğe yazılmış BIOS (Basic Input/ Output System)’tur. BIOS, bilgisayarın işlemci, bellek ve disk gibi temel donanımları arar ve test eder. Daha sonra BIOS yapılandırmasında belirtilen sıra ile işletim sisteminin yükleneceği CD-ROM veya sabit disk gibi ortamı tespit eder. İşletim sistemi olmadan işletim sistemini yüklemek zor bir işlemdir. Bu nedenle yükleme birkaç adımdan oluşmaktadır. Çünkü işletim sistemi henüz ortada olmadığı için dosya sistemi ve disk yönetiminin istenen her kodun çalıştırması söz konusu değildir. Yüklemenin her adımında kazanılan bir yetenek ile daha fazlası yapılır ve bir sonraki adıma geçilir.
BIOS nedir?
‘Usta Yoda’dan bahsederken Darth Vedera’ya değinmeden olmaz. BIOS’u başlangıçta genç Anakin Skywalker’a benzetebiliriz. Skywalker (Yıldız Savaşları’nda) gücünü attırarak Dart Vadere dönüşür. Tercihlere göre işler nerelere varabilir hepimiz biliyoruz. Skywalker her şeyi kontrol etme dürtüsü ve birinci olma hırsını taşımasının yanı sıra her şeyi değiştirme ve kendisinene bağlama arzusuna sahiptir.
BIOS bilgisayarların Darth Vedera’sıdır. Gelin nasıl çalışıp neleri kontrol ettiğine ve ne kadar güçlü olduğuna bir göz atalım.

“Temel Giriş-Çıkış Sistemi” anlamına gelen BIOS, anakart üzerindeki küçük bir bellek yongasında depolanan bir yazılımdır. Başlangıçtaki işlemlerden sorumlu olan BIOS’tur ve bu nedenle bilgisayar başlatıldığında çalıştırılan ilk yazılım BIOS’tur. Bu sistem, çevre birimleriniz ve işletim sisteminiz arasındaki verileri yönetmek de dahil olmak üzere bir çok şey yapar. Ayrıca, bilgisayarınızı her başlattığınızda hızlı bir şekilde erişebilmeniz için verileri depolar.
BIOS kurulum ekranına girmek kullanıcıların sorun giderme görevlerini gerçekleştirmesine veya bilgisayarın nasıl başlatılacağını değiştirmesine izin veren değişiklikler yapmasına olanak tanır. BIOS’unuz ana kartınızdaki bir çipte yani bir bellek yongasında bulunur. PC’nizdeki donanımınızın bileşenlerini uyandırır. Ayrıca donanımınızın tüm parçalarının düzgün çalışıp çalışmadığını kontrol eder. BIOS’unuz ayrıca donanımınızın yapılandırması ve önyükleme sıranız gibi bir dizi ayarı değiştirmenize olanak tanır.

BIOS’un tespit ettiği ve işletim sistemini (Örneğin Windows veya MacOS) yüklemeye başlayacak özel kod içeren yükleme medyasının ilk 512 byte’lık kısmı ‘boot sector‘ veya ‘MBR‘ (Master Boot Recor) olarak adlandırılır. Henüz ortada işletim sistemi olmadığı ve dosya sistemi tanınmadığı için diskin herhangi bir yerindeki işletim sistemini bulmak imkansızdır. O nedenle disklerin ilk 512 byte’ı sabittir ve yükleme işleminin başladığı noktadır. MBR boyutu küçük olduğu için, burada yükleme işini başlatacak ve görevi yükleme işini yapacak asıl programa devredecek küçük bir uygulama bulunmaktadır.
Intel, BIOS yapısının yerini alacak EFI standardını geliştirmiştir. EFI, işletim sistemi ile donanım arasında bir arayüz sunar. Bu arayüzün BIOS’a göre avantajları vardır:
- Büyük disklerden boot imkanı
- CPU bağımsız mimari
- CPU bağımsız sürücüler
- Ağ bağlantısı imkanı sunan esnek OS öncesi ortam
- Modüler yapı
- Daha fazla adreslenebilir bellek
- MBR’ye alternatif GUID Partion Table ile esnek bölümlendirme yapısı

Çekirdek, sıkıştırılmış olarak (bzip veya gzip) saklandığından çalıştırılabilir değildir. Çekirdeğin başında minimum donanım yapılandırmasını yapacak ve takip eden sıkıştırılmış çekirdeği belleğe açacak kod parçası bulunmaktadır. Çekirdeğin yüklenmesi esnasında GRUB tarafından belleğe yüklenmiş ilk kök dosya sistemi olacak initrd kopyalanır ve bağlanır (mount). Initrd, çekirdeğin açılış esnasında başka bir diske ihtiyaç duymadan kullanacağı bellekte yerleşmiş kök dosya sistemidir. Daha sonra gerçek dosya sistemine ulaşana kadar burayı kullanır. Yüklenen çekirdek modüler yapıyı destekler. Initrd dosya sisteminde, işletim sisteminin açılışı için gerekli modülleri içermektedir. Bu modüller yüklendikten sonra –ki bunların içinde asıl kullanılacak diskin sürücüsü de vardır- asıl dosya sistemine erişilir ve kök dosya sistemi olarak asıl disk bağlanır. Asıl disk bağlandıktan sonra artık disk üzerindeki program ve betiklere ulaşılabilmektedir. Bu aşamada Linux, kullanıcı ortamının (user space) ilk çalışan süreci olacak init’i çalıştırır. Init, /etc/inittab yapılandırmasına göre açılış betiklerini çalıştırarak ayarlanmış çalışma seviyesinden işletim sisteminin diğer bileşenlerini çalıştırarak kullanıcı giriş ekranına kadar gelir. Bu aşamadan sonra kontrol kullanıcıya devredilir.
UEFI nedir?
UEFI, kullanıcılara daha hızlı ve daha şık bir deneyim sunan “Unified Extensible Firmware Interface” yani “Birleşik Genişletilebilir Ürün Yazılımı Arayüzü“nün kısaltmasıdır. Ancak UEFI’nin derinliklerine inmeden önce ne olduğunu anlamak önemlidir. UEFI temelde BIOS ile benzerdir diyebiliriz. Halihazırda UEFI’ye sahip olan yeni bilgisayarlar, tüketicilerin kafasını karıştırmamak için BIOS bulunduğunu söyleyebilir. Ancak Windows 8 veya daha güncel bir işletim sistemi bulunan bir bilgisayar satın aldıysanız bilgisayarınızda muhtemelen geleneksel bir BIOS yerine UEFI bulunur.
Genel olarak konuşursak, UEFI’li bir sistemde işletim sistemi öncesi önyükleme aşamaları şunlardır:
- POST (açılışta otomatik sınama) işlemi, basit donanım hatalarını en kısa sürede belirlemek için yürütülür.
- UEFI sistemi yüklemek için video output ,klavye, storage media gibi basit komponentleri aktive eder
- UEFI’nin üretici yazılımı, önceden tanımlanmış EFI’yi yürütmek için NVRAM’de depolanan tanımları okur.
- Ön tanımlı EFI uygulaması bir önyükleyici ise, işletimi başlatmak için çekirdeği yükleyecektir.
GRUB hangi görevleri yerine getirir?
Bootloader, bir bilgisayarın ‘Usta Yoda’sı, ‘Obi-Wan Kenobi’sidir. Gücü kernele devretmeden önce onu adeta eğitir ve kullanıcının istediği gibi yönlendirir. Power düğmesine bastık, bilgisayar güç seninle olsun! Ama nasıl? Yanlış tercihler bizi karanlığa götürebilir. Güç seninle olsun demeden önce bakalım grup aslında nasıl çalışıyor.
Kernel (aynı zamanda çekirdek) bilgisayar ve donanım işlemlerini yöneten bir işletim sisteminin merkezi bileşenidir. Temel olarak bellek ve CPU zamanı işlemlerini yönetir. Bir işletim sisteminin temel bileşenidir. Çekirdek, süreçler arası iletişim ve sistem çağrıları kullanılarak donanım düzeyinde gerçekleştirilen uygulamalar ve veri işleme arasında bir köprü görevi görür.
Çekirdek, bir işletim sistemi yüklendiğinde önce belleğe yüklenir ve işletim sistemi tekrar kapatılıncaya kadar bellekte kalır. Disk yönetimi, görev yönetimi ve bellek yönetimi gibi çeşitli görevlerden sorumludur.
Kernel hangi işlemin yürütülmesi için işlemciye tahsis edilmesi gerektiğine ve hangi işlemin yürütülmesi için ana bellekte tutulması gerektiğine karar verir. Temel olarak kullanıcı uygulamaları ve donanım arasında bir arayüz görevi görür. Çekirdeğin temel amacı, yazılım, yani kullanıcı düzeyinde uygulamalar ile donanım, yani işlemci ve disk belleği arasındaki iletişimi yönetmektir.
Grup aslında çok güçlü bir önyükleyici yöneticisidir. Sistemin yüklenmesinden ve kontrolün çekirdeğe (kernel) devredilmesinden sorumludur. Bu devir işlemi esnasında araya girerek bize yönetim kolaylığı sağlar ve kernelle kullanıcı arasında bir arayüz görevi görür. En önemli özelliği esnek bir yapıya sahip olması ve her türlü işletim sistemini (Windows, Dos, Linux, Gnu Hurd, *BSD , BeOs vb.) desteklemesidir. Çekirdekten bağımsız çoklu önyükleme yapabilen küçük bir işletim sistemidir. Dosya sistemlerini tanımlar, açılış yapacak çekirdek imajlarını yükler ve yükleme işlemini yönetecek komut satırı sunar. Birden fazla işletim sistemi ve birden fazla disk arasında seçim yapmayı sağladığı gibi kullanıcıdan aldığı parametreleri çekirdeğe geçer.
dmesg komutu, çekirdek halka arabelleğini okuyarak verileri alır. Temel olarak arabellek, bilgisayarın belleğinin, sabit disk sürücüsü, klavye vb. gibi harici bir aygıttan gönderilen veya alınan veriler için geçici bir yer olarak ayrılan bir parçasıdır; halka arabelleği ise bir eklenen herhangi bir yeni verinin orada depolanan en eski verilerin üzerine yazacağı sabit boyutlu arabellek. dmesg, çekirdek halkası arabelleğini incelemek veya kontrol etmek için kullanılır ve varsayılan eylem, çekirdek halka arabelleğinden gelen tüm mesajları görüntülemektir.

