Kendi Kernelimi Yazarak İşletim Sistemi Nasıl Geliştirilir?

Merhaba Ben 12 Yaşındayım Kendi Kernelimi Kullanarak İşletim Sistemi Geliştirmek İstiyorum Bu konuda ingilizce bazı kaynaklar buldum ama şu konuları merak ediyorum nasıl işlemci,ram,ekran kartı donanımlarının bilgilerini nasıl göstereceğim klavye,mouse,ekran kartı dışındaki donanımların yazımı, hata ekranının sistem çöktüğü zaman çıkması, yeniden başlatma kapatma kalan gücün gösteriminin yapımı konuları hakkında kaynak bulamadım bunların yapımına dair kaynak verirmisiniz?

5 Beğeni

Öncelikle genç yaşına rağmen böyle güzel konularda kendini geliştirmeye çalışman takdire şayan. Seni tebrik ediyorum. Azmini kaybetme ve kendini geliştirmeye mutlaka devam et. Doğru yoldasın.

Soruna gelecek olursak. Sorun bir örnek verirsek şuna benziyor: “Sıfırdan GTA 5 yapmak istiyorum fakat adam öldürünce polislerin gelmesini nasıl sağlayabilirim?”.

Yani daha oyun geliştirmeye dair hiçbir bilgiye sahip olmadan, o oyunun ufak bir detayının nasıl yapılacağını merak etmek. Halbuki “oyun nasıl geliştirilir” sorusunun cevabını öğrenmek yukarıdaki soruyu otomatik cevaplandıracak bir şey.

Kernel geliştiriciliği ve işletim sistemi yazmak meselesi de aynı. Bu işe direk “ben hiçbir şey bilmiyorum ama işletim sistemi geliştirmek istiyorum” şeklinde giriş yapmak pek doğru değil.

Olması gereken ise önce bilgisayar mühendisliği dalının eğitim silsilesinden geçmek. Bunun için iyi bir üniversite çok önemli. Bilgisayar mühendisliği eğitimini tamamlamış birisi, bilgisayarın nasıl çalıştığını, bir işletim sistemini nasıl çalıştığını, bir programın nasıl derlendiğini, donanım ile yazılımın nasıl haberleştiğini ve daha bir çok konuyu öğreneceği için, geriye bu koca bilgi yığınını birleştirip ortaya bir işletim sistemi ortaya çıkarmak kalıyor.

Özetle: Sana tavsiyem güzel bir üniversitede bilgisayar mühendisliği okumaya çalış. Ayrıca bu yaşlarda yazılım öğrenmeye başlamak da çok iyi bir artı olur, üniversitede 2-0 önden gidersin. Bu işler yavaş yavaş ve büyük bilgi birikimi gerektirdiği için hemen yarın kernel geliştiricisi olman biraz zor :slight_smile: fakat 12 yaşından itibaren bu işlerle haşır neşir biri olarak üniversiteden de düzgün bilgilerle mezun olduğunda çok kaliteli bir mühendis olman kaçınılmaz. Araştırmaya devam et. Soru sormaya devam et. Öğrenmeye devam et. Doğru yoldasın :+1:

10 Beğeni

@eminfedar ın yanıtına ek olarak ben de YouTube’daki Crash Course kanalının yaptığı bir eğitici video dizisini önereyim. Başlangıç olarak oldukça iyi bir yer olacaktır bence (bende olmuştu ama bilemiyorum :grinning:).

Sonradan yazdığım not: Pek düzgün yazmamışım. Çekirdek geliştiricisi değilim. Genel olarak yazılım geliştiriciliğine başlangıç için bir öneri bu.

4 Beğeni

@kozalaknaz Bu seri gerçekten çok iyi, güzel oldu attığınız aklıma gelmemişti. :+1:

4 Beğeni

Sağol’da Ben Üniversiteye kadar beklemek istemiyorum bu ararda bende bilgisayar bilimi falan biliyorum Zaten Ben bunun için kaynak araştırdım bazı bunla alakalı kaynak bulduz C# Sayntax’ını biliyorum.

1 Beğeni

Bence de vakit kaybetme. İnsanlar bir konuda başlangıç noktasından uzaklaştıkça arada deneyim kazanır yapabilir hale gelir fakat bu yol onların gözlerini öylesine korkutur ki hiçbir şey yapamaz hale gelirler. Bu nedenle bilmediğin işten korkma ki korkmuyorsun zaten. Genel olarak bir yaklaşım tavsiye edeceğim. Yapabileceğin en basit fakat çalışan bir şey yapabilirsin. Grafikleri vs. düşünme. Önce bilgisayarı açmayı hedefle. Sonrası çorap söküğü gibi gelir. Mesela ilk iş Bilgisayarın düğmesi basınca senin kernel yüklenecek ve sadece adın ekrana basılacak. sonrasını konuşuruz :slight_smile:

4 Beğeni

Madem beklemek istemiyorsun başlaman için sana bir kaynak önereyim:

https://wiki.osdev.org/Main_Page

5 Beğeni

Sağol bunu bende biliyorum ama bu kaynaklarda bulamadığım bazı sorular var pilin %0 %100’e kadar dolması boşalması algılanması, bilgisayarın açılıp kapanması tuşlarının yapımı,Mavi ekran hatası gibi çökme ekranının uygun zamanda gösterilmesi, ses açma kapama seviyesini düşürme gibi şeylerinin yapımı, Bilgisayarının tüm donanımlarının özelliklerinin gösterilmesi, Bide şart değil ama Kendime özgü dosya sisteminin yapımı Ntfs Fat32 gibi.

1 Beğeni

Bahsettiğin konulardan bazıları ihtisas gerektiriyor. Doğrudan cevap verilemeyeceği kanaatindeyim.

Üretmenin ne demek olduğunu yazılımla doğrudan uğraştığımda anladım :blush:
“Yeni” birşey ortaya koyuyorsun, en azından sana göre…
Navigasyon olmadan haritaya bakıp yol almak gibi. Elindekiler ile hedefe nasıl gideceğini düşünüyorsun.

Donanım ile haberleşeceğin için, yazdığın çekirdeğin hangi mimari de çalışacaksa ve ne tür donanımlarla iletişime geçecekse o donanımlarla nasıl haberleşeceğine bakmaya çalış. :wink: “Datasheet” kelimesini çok görebilirsin.

3 Beğeni

Çekirdek geliştirme konusunda deneyimim yok ama geçmişte yaşadığım bazı sürücü sorunları sebebiyle sığ bir cevap verebilirim.

Pil seviyesini okuma, ses denetimi, bilgisayar parçalarının özelliklerini okuma vb. şeyler için ilgili donanımın sürücüsüne ihtiyacın var. Yani o belirli kurumun tasarlayıp ürettiği o belirli cihazın nasıl çalıştığını ve nasıl komutlar gönderilmesi gerektiğini bilip, kendi çekirdeğine sürücü olarak eklemen gerekiyor.

Bazı üreticiler sürücülerini veya komut setlerini özgür olarak yayınlıyor. Onları araştırıp bulabilirsin. Donanım desteği çok geniş olan ve özgür olan Linux’u inceleyebilirsin.


Durum böyle, doğrudan cevap verebilmek için ilgili alanda uzmanlaşmak ve ilgili donanımın üreticisiyle modelini bilmek gerekiyor.

5 Beğeni

Şimdi Ben Donanım Özelliklerini Bios’tan çekebilirmiyim Peki nasıl bootloader oluşturacağım ve bilgisayar donanımlarını ses sürücüsü gibi NTFS Dosya sistemi X64 İşletim sistemi Ve Son Olarak pil’in ne kadar kaldığını gösteren ibareyi yapmak ile ilgili kaynaklar varsa lütfen link atabilirmisiniz?

1 Beğeni

Bu dediklerinizin çoğu birbirinden farklı çalışma seviyelerinde bulunuyor. Örneğin pilin ne kadar kaldığını gösteren ibre bir grafik arayüz uygulamasıdır ve siz bir arayüz ortamı değil bir çekirdek yapmaya çalışıyorsunuz. Bu durumda zaten mevcut olan uygulamalarla uyumlu bir kernel yazmaya çalışabilirsiniz.

Bootloader için de zaten mevcut olanlardan daha iyi bir kaynak düşünemiyorum. En azından nasıl bir yol izleneceği konusunda fikir sahibi olursunuz. Bunun için GNU Grub’a bir bakın isterseniz:

Dosya sistemine gelince pek çok dosya sistemi var ve sizin açık kaynak dosya sistemleri dururken NTFS kullanmanız son derece mantıksız olur. Hepsini inceleyin ve ona göre seçin.

2 Beğeni

Bu konu son cevaptan 30 gün sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.