Açık Kaynak Assembly İşletim Sistemi

Merhabalar… Ben Uygar. Bir önceki yazımda (http://blog.turkiyeelektronik.com/2017/06/22/kendi-isletim-sisteminizi-yazin/) sizlere assembly ile basit bir bootloaderın nasıl yazılacağından, bilgisayarların nasıl önyükleme yaptığından, BIOS’dan, POST işleminden ve önyüklemenin ne olduğundan bahsetmiştim. Şimdi ise varolan bir açık kaynak işletim sisteminin kodlarını değiştirerek kendi basit işletim sisteminizi nasıl yapabileceğinizi göstereceğim 🙂

[sam id=”1″ codes=”true”]

[sam id=”1″ codes=”true”]

Başlamadan önce önceki yazımda belirtmediğim ancak bir işletim sisteminin olmazsa olmaz bazı bölümlerini açıklayayim. İşletim sistemleri, donanım ile iletişim kurarken kernel (Çekirdek) adlı bir yazılım kullanır. Kullanıcının gördüğü kısım User Interface – UI (Kullanıcı Arayüzü) olarak adlandırılır. Kullanıcı arayüzü üzerinde çalışan programlar, hiçbir işletim sisteminde doğrudan donanım ile haberleşemez. Programlar kernel’a istekte bulunur. Kernel bu isteği donanıma iletir ve gelen cevap yine doğrudan uygulamalara gidemez.

Kernel Nedir?

Kernel; işletim sisteminin çekirdeğini oluşturan ve sistemdeki her şeyi kontrol eden bir bilgisayar yazılımıdır. Önceki yazımda ikinci önyükleyici işletim sistemini yükler demiştim. Burada işletim sistemi olarak bahsettiğim yazılım aslında kernel’dı. Yani kernel, bootloader’dan sonra yüklenen ilk yazılımdır. Şimdilik bu kadar bilgi yeterli 🙂 Daha sonra sadece kernel’ı anlatan ayrı bir yazı yazacağım.

Çizim kaynağı: Wikipedia

Yukarıda işletim sistemlerinin genel yapısını görmektesiniz. Şimdi sizlere bu yazıda anlatacağım açık kaynak kodlu basit işletim sistemine gelelim. Kullanacağımız sistemin adı MikeOS.

MikeOS Nedir?

MikeOS, assembly dili ile yazılmış, x86 bilgisayarlar için bir işletim sistemidir. Ancak bu işletim sistemi bir bilgisayarı kullanmak için değil; basit 16-bit, gerçek mod işletim sistemlerinin nasıl çalıştığını öğretmek amacıyla, bir eğitim aracı olarak tasarlanmış.

Artık başlayabiliriz. http://mikeos.sourceforge.net/  adresindeki Downloads bölümünden onu indirelim. İndirdiğimiz arşivi herhangi bir yere çıkaralım. Ben 4.5 sürümünü indirdim. Çıkardığım arşivin klasör yapısı aşağıdaki gibi:

mikeos-4.5/
├── source/
│   ├── features/
│   │   └── *.asm
│   ├── bootload/
│   │   ├── bootload.bin
│   │   └── bootload.asm
│   ├── kernel.bin
│   └── kernel.asm
├── programs/
│   └── *.*
├── doc/
│   └── (Çeşitli dökümanlar)
├── disk_images/
│   ├── README.TXT
│   ├── mikeos.iso 
│   ├── mikeos.flp 
│   └── mikeos.dmg
├── test-linux.sh
├── README.TXT
├── buildwin.bat
└── build-*.sh

Bu dosyalardan source klasörü, işletim sistemimizin dosyalarının bulunduğu klasör. programs ise işletim sistemimizde çalışan programların klasörü. doc, bizler için hazırlanmış İngilizce belgelerin bulunduğu klasör.  disk_images ise işletim sistemimizi derledikten sonra oluşan önyüklenebilir disk kalıpları ve binary dosyaları.

source, yani kaynak klasörünü inceleyelim. İçinde features yani özellikler adında bir klasör var. Bu klasörün içerisinde ise çeşitli assembly dosyaları (.asm) var. Bu dosyalar, kernel tarafından yüklenen ve sistemin temel fonksiyonlarını oluşturan dosyalar. bootload klasöründe ise önyükleyicimiz bulunuyor. Bir önceki yazımda anlattığım önyükleyicinin çok daha karışık hali 🙂 *.asm dosyaları; derlenmemiş, insanlar tarafından direk olarak okunabilir dosyalardır. *.bin gibi dosyalar ise derlenmiş ve yanlızca makineler tarafından okunabilir dosyalardır. kernel.asm ise yazının başında belirttiğim sistem çekirdeği.

Şimdi bu işletim sistemini nasıl çalıştıracağımızı anlatacağım. Bu aşamada build dosyalarınan faydalanacağız. Build dosyaları, kullandığımız işletim sisteminin adına göre isimlendirilmiş. Kendimize uygun olan build dosyasını açıyoruz. Örneğin ben Linux kullandığım için build-linux.sh’ı açacağım.

Ancak açtığımda “You must be logged in as root to build (for loopback mounting)
Enter ‘su’ or ‘sudo bash’ to switch to root” şeklinde bir hata aldım. Dolayısıyla Linux kullanıcıları, sudo sh ./build-linux.sh komutunu kullanmalılar.

Yukarıdaki mesajları aldığımızda disk_images klasöründeki dosyalar güncellenmiş oluyor. Bunları Linux üzerinde test-linux.sh dosyasını kullanarak kolayca qemu üzerinden çalıştırabiliyoruz. Windows için ise mikeos.iso  dosyası virtual machine (sanal makine) üzerinden çalıştırılabilir.

Sistemi çalıştırdığımızda karşımıza çıkan ekran. Ok tuşları ve enter yardımıyla OK’a basarsak grafiksel kullanıcı arayüzü (GUI) açılır. Cancel’e basarsak, komut satırı şeklinde olan kullanıcı arayüzü açılır.

OK’a bastığımızda çıkan arayüz. Burda gördükleriniz, programs klasöründeki dosyalar. KERNEL.BIN hariç her şeyi çalıştırabilirsiniz.

Bu da sistemin konsol arayüzü.

Bu yazımın da sonuna geldim. Bulduğunuz her türlü dosyayı inceleyerek kendinizi geliştirebilir, değerleri değiştrerek eğlenebilirsiniz 🙂 Bir sonraki yazımda görüşmek üzere…

[sam id=”1″ codes=”true”]

[sam id=”1″ codes=”true”]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.