Kendi kernelimi nasıl geliştirebilirim?

İlk önce ben Melih, 11 yaşındayım ve yaklaşık… 1 yıldır buna kafa patlatıyorum. Daha önce Linux ile deneyimim oldu, kendi temelimi oluşturmuştum, MontaLinuX. Ama artık o da sarmadı. Kendim kernel geliştirmeye çalışıyorum. Şunları biliyorum:
Python(Bir iş görmez ama dedim)
C++, az seviye
C orta seviye
JavaScript
Bir taslak oluşturmuştum ama Cosmos tabanlı ve buda işlevsiz. Mouse bile 3 saatte eklendi.
Bir disk bölümü açıp boot dosyalarını tek tek elimle oluşturup yaptım, tüm kurulum sonrası dosyaları. BIOS’u bu dosyayla başlamaya ayarladım. Ama Web ile de yayınlamak, ISO olarak yapmak istiyorum. Millet tek tek uğraşmaz ya? Bu konuyla ilgili bildiğiniz kaynaklar var mı? OSDEV dışında.

1 Beğeni

Benzer projeler nasıl yapılmış diye araştırabilirsiniz.

Linux çekirdeği de yıllar önce bir hobi olarak bir öğrencinin çalışması olarak başlamıştı.

Bu anlamda öncelikle C dili ve Assembly öğrenmeniz gerekecektir.

Kitap olarak da by Andrew Tanenbaum’ın kitabından başlayabilirsiniz.

Elbette bu süreçte İngilizce bilginizi de geliştirmeniz gerekecektir.

İyi şanslar.

2 Beğeni

Linux zaten Torvalds adlı bir öğrenci tarafından çıktı, .asm dosyaları derlemeden sonra oluşuyorlar.

Kendi işletim sisteminizi geliştirme sürecinizde aşağıdaki adımlar ve kaynaklar size yardımcı olabilir:

OSDev Wiki: İşletim sistemi geliştirme topluluğunun önde gelen kaynağıdır. https://wiki.osdev.org/
İşletim sistemi geliştirme araçlarını inceleyin, Cosmos güzeldir ama onun dışında da seçenekler mevcuttur. https://www.gocosmos.org/
ISO dosyası oluşturmayı ve dağıtımını öğrenin. Linux tabanlı araçlar bu konuda yardımcı olabilir.
İşletim sistemi projenizi GitHub gibi platformlarda paylaşarak topluluktan destek alabilirsin.
Projeni yönetilebilir parçalara ayırarak adım adım ilerle.

Sabırlı ve istekli olmanız, bu karmaşık süreçte başarılı olmanızı sağlayacaktır.

:slight_smile: platform init ve low level driverleri bizzat yazamayacagin icin UEFI yi hedef almalisin. Simdiki bilgisayarlarin hepsi UEFI firmware. linux kernel bile UEFI nin ustune yatiyor. Demek istedigim onun sundugu servisleri kullaniyor boot ederken.

boot diskinde efi partition olusturacaksin, usb diskte yap nolur nolmaz tanir onuda otomatik. fat32 olarak formatla sonra, 100Mb ayirsan yeter. kerneli ‘uefi application’ formatinda yazacaksin. normal C kodu ancak derlenirken farkli derleniyo. gnuefi paketi/library var. onu kullan kolaylik saglar.

UEFI sana hazir fare, klavye, ekran, disk … hersey servisleri veriyor bunlari kullanacan. kalkip fare driveri o driveri bu driveri YAZAMASSIN. Kimse yazamaz eger 100 milyon dolarlari olan 100 tane iyi muhendis degilsen. Ama 10-20 kisi parasi olmasa bile bir kernel yazar. UEFI yi temel alir, onun servislerini kullanir.
Sadece 1 mimarinin en populer configurasyununu hedef alir. Yine de firmware blob isteyen seyler calismayacaktir.(wifi gibi)

Linux kernelin suyu cikti. Cok kirilgan dokundugun yer elinde kalir bisi oldu. Cok asiri komplex karman curman bisi oldu simdi yonetmekte zorlaniyorlar. Nerdeyse baska biyeri bozmadan bisey ekleyemez hale deldiler. O kadar karmasaya hic gerek yoktu. 500 tane syscall mi olurmus? Isi batirdilar. bence syscall tamaman gereksiz. Linux artik vendor-lockin denen sey oldu.

Simdi biri kernel yazayim dese mevcut butun linux yazilimlariyla uyumlu olmasi icin 500 tane syscall yazmasi gererecek. Iste buna vendor-lockin denir. Kendisi haricindeki potansiyel alternatiflerin unune gecme varolmasini dogmasini bile neredeyse imkansizlastirma herseyi/herkesi kendine mecbur/bagimli kilma.

x86 mimariside bitmis artik, ne kadar kotu bir mimari hala 50 yil onceki fosil seyleri tasimaya calisiyor.

1000/2000 tane instruction mu olurmus? Al sana baska bir vendor-locking. Kasitli olarak yapiyorlar heralde.

arm mimarisi az bisey daha iyi, az bisey daha basit. piyasada ne adam gibi bir mimari var nede kernel.

Basitlik iyidir, komlekslik kotudur olabildigince kacinmalidir.

Kernel sadece libc fonksiyonlarini sunarsa basit tutulmus olur.

Rust, C gibi bir sistem programlama dili fakat varsayılan olarak memory-safe bir dil.

Sıfırdan bir çekirdek yazma blogu var, gayet açıklayıcı öneririm: https://os.phil-opp.com/

1 Beğeni