Sıfırdan bir işletim sistemi geliştirmek PckOS.
Yedi yıl önce hobi olarak PckOS’u geliştirmeye başladım. Bu yazıda PckOS'un kısa öyküsünü aktarmak istedim.
Yedi yıl önce, üretken yapay zekâ araçları henüz ortada yokken sistem programcısı olarak hobi amaçlı kendi işletim sistemimi yazmaya başladım. Projeye düzenli vakit ayıramadım, tam mesai ayırmadım sonuçta hobi bir proje. Yine de PckOS zaman içinde sanal makinelerde (QEMU ve VirtualBox) açılan, masaüstü ve temel uygulamaları bulunan bir sisteme dönüştü. 2 senedir çekirdek üzerinde neredeyse hiç çalışmıyordum. Burada, çekirdeğin geldiği noktayı ekran görüntüleriyle paylaşmak istedim. Neden ara verdiğimi ise açıkçası ben de tam bilmiyorum ve sanırım tekrar devam etmek istiyorum
Bu oyunda her yem alındığında kullanıcı heap’inden bir uint32_t (4 bayt) ayrılır. Pencerede tahsis adresi ve ayrılan oyun verisinin toplam boyutu gösterilir.
Son tahsis adresi, ayrılan son 4 baytlık bloğun başlangıç adresidir. Oyun kapanırken tahsisler delete ile serbest bırakılır.
PckOS, x86 ve x86_64 mimarilerini desteklemesini hedeflediğim kişisel çekirdek projem. Bu yazıyı ilk yazdığımda tek işlemcili sistemlerde çalışıyor, çoklu iş parçacığını destekliyordu. O zamandan beri ACPI/xAPIC tabanlı SMP desteği ekledim: PckOS artık en fazla 32 mantıksal işlemciyi Round Robin zamanlamayla kullanabiliyor ve süreçlere ayrı adres alanları sağlıyor. Tek işlemcili sistemlerde çalışmayı da sürdürüyor. Şu an 32 bit x86 üzerinde çalışan PckOS’a 64 bit mimari desteği eklemek önemli hedeflerimden biri. Çekirdeği Linux üzerinde C++ ve Assembly ile geliştirdim. Assembly kodlarını Intel söz diziminde yazıp NASM ile, C++ kodlarını ise GNU G++ ile derledim.
Aslında PCKOS birazda bana yıllarca Bilgisayar Bilimleri için bir laboratuvar görevi yaptı PCKOS'u geliştirmeden çok projede aygıt sürücüleri, derleyicinin C++/Assembly kodlarını derledikden sonra ortaya çıkan Makina Kodu üzerinde araştırma yapmak gibi şeyler için daha çok kullandım sanırım. Artık neredeyse Linux ortamında yazdığım C++ kodunun daha derlenmeden g++ Derleyicimin nasıl bir makina kodu üretebileceğini tahmin eder duruma getirmek gibi saf yeteneklerde kazandırdı
işletim sistemi geliştirmek, bence bilgisayar biliminin en üst düzey uğraşlarından biri. İşlemciden belleğe, önyüklemeden süreç yönetimine kadar pek çok katmanın uyum içinde çalışmasını gerektiriyor. Yazdığınız kodun sanal makinede bağımsız bir şekilde, tamamen size ait bir çekirdek olarak çalıştığını görmek gerçekten oldukça tatmin edici ve bir o kadar da keyifli. Sonuçta bilgisayar biliminin pek çok farklı disiplinini bir arada uygulamak zorundasınız. Zor, emek isteyen ama karşılığında büyük bir tatmin sağlayan bir süreç.

PckOS'u indirip çalıştırmak
PckOS'u denemek için pckos.iso ile bir dosya sistemi imajı indirin: QEMU için pckfs.img, VirtualBox için hazır pckfs-vbox.vdi. ISO çekirdeği başlatır; disk imajı PCKFS kök dosya sistemini içerir. İndirme bağlantıları GitHub deposundaki main/downloads klasörüne gider; depodaki dosyalar güncellendiğinde aynı bağlantılardan güncel sürümleri indirebilirsiniz.
QEMU'da çalıştırmak
QEMU yüklüyse, iki dosyanın bulunduğu klasörde aşağıdaki komutu çalıştırmak yeterli: -m 2GB bellek miktarını -smp 4 de çekirdek sayısını belirtir istediğiniz gibi değiştirebilirsiniz.
qemu-system-i386 -m 2G \\
-smp 4 \\
-cdrom pckos.iso \\
-drive file=pckfs.img,format=raw,if=ide,index=0,media=diskVirtualBox'ta çalıştırmak
VirtualBox’ta çalıştırmak için pckfs.img disk imajının VDI biçimine dönüştürülmesi gerekiyor. İsterseniz hazır pckfs-vbox.vdi dosyasını indirin, isterseniz pckfs.img dosyasını aşağıdaki komutla kendiniz dönüştürün.
Hazır VDI bağlantısı GitHub’daki güncel dosyaya gider. Hazır dosyayı indirdiyseniz dönüştürme adımını atlayabilirsiniz; pckos.iso ve pckfs-vbox.vdi yeterli, ayrıca pckfs.img indirmeniz gerekmez.
pckfs.img dosyasını kendiniz dönüştürmek isterseniz, dosyanın bulunduğu klasörde şu komutu çalıştırın:
VBoxManage convertfromraw pckfs.img pckfs-vbox.vdi --format VDIArdından VirtualBox'ta yeni bir Linux / Other Linux (32-bit) sanal makinesi oluşturun.
Belleği 2 GiB seçin(önerilen) Çekirdek 4(önerilen), grafik denetleyicisini VBoxVGA yapın ve 3D hızlandırmayı kapatın.
Boş disk oluşturmadan depolama ayarlarına girin; pckos.iso dosyasını optik sürücüye,
pckfs-vbox.vdi dosyasını ise IDE Primary Master olarak ekleyin. Açılış
sırasının optik sürücüyle başladığından emin olun.
Sonuç olarak
Bu yazı, tamamlanmış bir çekirdek değil; yedi yıl önce başlayıp farklı dönemlerde üzerinde çalıştığım PckOS hakkında kısa bir not.
PCKOS'u geliştirmeye yeniden devam ediyorum. ACPI/xAPIC tabanlı SMP desteği gibi son eklediğim özellikleri, diğer değişiklikleri ve geliştirme notlarını GitHub deposunda paylaşıyorum. Proje hâlâ gelişiyor; yeni ilerlemeleri de oraya eklemeyi sürdüreceğim. 🙂