Linux sistemlerin simgesi olan Tux.
Linux sistemlerin simgesi olan Tux.

2005 Yılının sonunda LiveCD, yani bizim bildiğimiz adı ile Çalışan CD Linux’ların nasıl çalıştığına dair bir çalışma yapmıştım. (Aslında bunlar cd üzerinden yüklenerek çalışan işletim sistemleridir.) Ancak nasıl oluyor da cd gibi sadece okunabilir bir yerden işletim sistemi gibi okuma-yazma hakkına ihtiyaç duyan karmaşık bir yapı çalıştırılabiliyor, oldukça merak uyandırıcı bana göre. Evet şimdi bu çalışmamı sizlerle paylaşmak istiyorum.

Benim şahsen en çok beğendiğim ve kullandığım Çalışan CD sistemi Slax LiveCD‘dir. Küçük bir sisteme sahip olması dolayısıyla incelemek üzere onu seçtim. Zira sistemi ve kaynak kodlarını incelemek çok daha kolay. Konuyu anlamak için LinuxFS bilgisi şart. Bu sebeple konuyu okuyacak arkadaşların öncelikle Linux Filesystem Hierarchy kitabını okumasını kesinlikle öneriyorum. Temel olarak Slax’ın bileşenleri şunlar:Linux Live Scripts

Linux Live Scripts, kendi Çalışan CD linux dağıtımınızı yapmabilmeniz için gereken ana bileşendir. Küçük bir linux sistemi ve script’lerden oluşur. Bilgisayarın açılışı sırasında seri bazı işlemler yaparak bilgisayarı işletim sistemi için uygun hale getirir.

UnionFS

UnionFS, aslında FAT gibi NTFS gibi bir dosya sistemidir. Sadece okunabilir olan dosya sistemlerini, örneğin cd’yi, hem okunabilir hem de yazılabilir bir dosya sistemi gibi kullanabilmenizi sağlar. Bunu yaparken değişen dosyaları belleğe kaydeder ve eğer daha sonra onları açmak isterseniz, bellek üzerindeki kopyasını getirir, eğer dosya orjinal haliyle duruyorsa cd üzerinden getirir, sizi bu karmaşık olaydan soyutladığı için de mükemmel bir iş görür.

SquashFS

SquashFS ise de bir dosya sistemidir. Ancak özelliği sıkıştırılmış bir dosya sistemi olmasından geçmektedir. Linux altında çoğu sistem direk kaynak kodu ile çalıştığı için ve kaynak kod gibi metin tabanlı dosyalarda sıkıştırma oranları oldukça yüksek olabildiği için sistemin temel boyutunu oldukça küçültmektedir.Örnek vermek gerekirse cd üzerinde 40-45mb olan bir dosya kümesi, açıldığında yaklaşık 200mb boyutuna gelebilir.

ISOLinux

ISOLinux, bilgisayara taktığınızda bootable olarak çalışabilecek iso dosyaları yaratmanızı sağlar.

BusyBox

BusyBox, minik bir linux işletim sistemi olarak çalışan ve temel unix komutlarını tek bir dosyada birleştiren bir çalışmadır. Genel kullanımda gömülü sistemler için ideal bir çalışma yapısı sağlar.

Önemli bir konuyu da burada dile getirmek istiyorum, Slax LiveCD projesinin sahibi ve yapımcısı Tomas Matejicek‘tir.

Bilgisayarın BIOS ayarlarını, cd’den yükleme yapacak şekilde ayarlama yaptıktan sonra şimdi örnek olarak Slax’ın açılışını inceleyelim.* Bilgisayarın açılışı sırasında BIOS, cd’den önyükleme yapmaya tanımlandığı için Slax cd’sinden sistemi başlatır. (dosya adı: isolinux.bin)* İlk açılış esnasında Linux Live Scripts sayesinde çekirdek imajı yüklenir, diğer adıyla kernel. (dosya adı: vmlinuz)
* Daha sonra devam eden scriptler bilgisayarın belleğinde 4mb büyüklüğünde bir Bellek Diski oluşturur. Aslında şuanda elimizde çalışan bir kernel ve bir dosya sistemi vardır. Gerçekte şuan bilgisayar çok rahat bir şekilde çalışabilir ancak son kullanıcıya hiçbir şekilde hitap etmez.* Ardından da, oluşturulan bu Bellek Diski üzerine, kök disk yapısı dediğimiz, rootdisk image (dosya adı: initrd.gz) açılır ve kök dizin olarak monte edilir. Aslında olan olay şu, kernel belleğe yükleniyor, ardından bellek üzerinde bir disk oluşturuluyor, kernel’e göre bu disk bilgisayarınızın C: sürücüne denk geliyor, kernel bilgisayarınızın hard disk’ini hiçbir şekilde kullanmıyor, ardından da cd üzerinden daha önceden hazırlanmış olan hard disk içeriği, bellek diski üzerine kopyalanıyor.* Devamında “/usr” gibi değişmeyen ve sadece okunabilir olan dosya sistemleri gerekli klasörler üzerinden monte ediliyor.* Esas etkileyici kısmı burası. UnionFS olarak bir dizin oluşturuluyor, “/union”. Özelliğini anlatmıştım, sadece okunabilen ortamların, hem okunabilir hem yazılabilir olmasını sağlıyor. Bütün sistem klasörleri tekrar bu /union klasörü altından monte monte ediliyor. Şu noktada olay şu: çalışan bir linux sistemi var, kök klasör altında /union adında bir klasör var, bu klasörün içine girildiğinde ise tekrar kök klasöründe bulunan bütün klasörlerin kendileri var, linux dosya sistemine yabancı olanlar için oldukça sıra dışı.
* Chroot komutu ile, kernel’in /union klasörünü root dosya sistemi kabul etmesi sağlanır. Bu sayede kök klasörü altındaki bütün dosyalar bir anda hem okunabilir hem de yazılabilir bir hal almış oldu. Bu nasıl oldu diyebilirisiz, çok basit: siz herhangi bir dosyayı açmak istediğinizde UnionFS öncelikli olarak bu isteği kontrol ediyor, dosya daha önceden hiçbir değişikliğe uğramamışsa direk dosyayı cd üzerinden açıyor. Eğer bir değişikliğe uğramış ise, bellek üzerine kaydettiği kopyayı size gönderiyor, o yüzden siz de dosyayı değiştirdiğinizi sanıyorsunuz, oysa sistem kapanıp açıldığında her şey eski haline dönüyor.
* Bu noktadan sonra /sbin/init çalıştırılarak normal bir linux sistem gibi çalışmaya başlıyor, aslında çalıştırılan dosya /union/sbin/init ama sistem bunu bilmiyor ve karşınıza gayet hızlı bir Çalışan CD Linux çıkıyor.
Bilgisayarın açılışı sırasındaki olanların video’suna blip.tv adresimden erişebilirsiniz.

Modüller
Sistemin çalışma prensibinden dolayı, yüklemek istediğiniz herhangi bir programın /union klasörü üzerine monte edilmesi yeterli, ki sistem üzerinde bunu gerçek zamanlı olarak da yapabiliyorsunuz. Netten indirdiğiniz bir modül dosyasını sistem üzerine bağlayarak programı kurmuş oluyorsunuz.