- Blog OS deposu, os.phil-opp.com'daki Writing an OS in Rust serisinde kullanılan kaynak kodu içeriyor
- Her yazının kodu ayrı bir git branch üzerinde bulunuyor; böylece yazıyı takip ettikten sonraki ara durumu görebilirsiniz
- Şu anda ikinci edisyon yazıları Bare Bones, Interrupts, Memory Management, Multitasking kategorilerinden oluşuyor ve en güncel yazı kodu
post-12 branch'inde yer alıyor
- Branch adları
post-XX biçimini kullanıyor; örneğin post-03, VGA Text Mode; post-07 ise Hardware Interrupts yazısının kodunu içeriyor
- İlk edisyon artık bakım almıyor, ancak hâlâ referans olarak kullanılabiliyor; proje kodu
blog/content klasörü hariç Apache-2.0 veya MIT lisanslarından biriyle kullanılabiliyor
Blog OS deposunun amacı
- Bu depo, Writing an OS in Rust serisinin kaynak kodunu sağlıyor
- Sorular GitHub issue açılarak veya Gitter sohbeti üzerinden sorulabiliyor
Yazılara göre kod yapısı
- Her yazının kodu ayrı bir git branch üzerinde bulunuyor
- Yazıyı takip ederek ilerledikten sonraki ara durumu görebilirsiniz
- En güncel yazının kodu
post-12 branch'inde yer alıyor
- Her yazının branch'i, aşağıdaki yazı listesindeki
(source code) bağlantısında bulunabiliyor
- Branch adları
post-XX biçimini kullanıyor
post-03: VGA Text Mode
post-07: Hardware Interrupts
- Derleme yöntemi için her branch'in README dosyasına bakmak gerekiyor
git worktree kullanılarak belirli bir branch alt dizine checkout edilebiliyor
git worktree add code post-10
- Yukarıdaki komut, 10. yazı olan Heap Allocation kodunu içeren
code alt dizinini oluşturuyor
Mevcut edisyondaki yazı listesi
- Amaç, tek tek blog yazıları üzerinden adım adım bir eğitim sunmak
-
Bare Bones
-
Interrupts
-
Memory Management
-
Multitasking
İlk edisyon
- Mevcut blog ikinci edisyondur
- İlk edisyon eski kalmıştır ve artık bakım almamaktadır, ancak yine de faydalı olabilir
- İlk edisyonda Bare Bones, Memory Management, Exceptions, Additional Resources kategorilerindeki yazılar yer alır
Lisans ve katkılar
blog/content klasörü dışındaki proje, kullanıcı tercihine göre Apache License 2.0 veya MIT license ile kullanılabilir
blog/content klasörünün lisansı için blog/content/README.md dosyasına bakmak gerekir
- Aksi ayrıca belirtilmediği sürece, projeye dahil edilmek üzere kasıtlı olarak gönderilen katkılar, Apache-2.0 tanımına uygun şekilde ek koşul olmadan yukarıdaki çift lisans kapsamında değerlendirilir
1 yorum
Hacker News yorumları
Birkaç yıl önce 2. baskıyı baştan sona okudum ve gerçekten ufuk açıcıydı.
İşletim sistemi geliştirmesini anlatması çok iyiydi ama Rust kitabını okuduktan sonra Rust’ı daha ileri öğrenmek için de faydalıydı.
Yazar Rust deyimlerine çok hakim, bu yüzden kodun benim yazacağımdan farklı olarak nasıl ifade edildiğini görmek de çok şey öğretti; özellikle de Rust’ta future’ların nasıl uygulandığını açıklayan async-await in Rust bu konuda gördüklerimin en iyisiydi.
Phil’in yeniden motive olup EFI tabanlı 3. baskı üzerinde çalışmayı sürdürmesini isterim. Git branch commit’lerine bakınca durmuş gibi görünüyor; GitHub sponsorluğunu da yaklaşık 1 yıl sürdürdüm ama her “This Month In Rust OSDev” yazısında eksik olduğunu görmek üzücüydü.
Yine de 2. baskı, hafta sonu geliştirme zamanı için harika bir kaynak ve içine konan emeği açıkça hissettiriyor.
5 yıl önce bu öğreticiyi bitirdikten sonra MOROS üzerinde çalışmaya başladım; Rust ve işletim sistemi geliştirmesiyle ilgilenen herkese şiddetle tavsiye ederim.
Phil gerçekten çok emek vermiş ve bu belli oluyor. Proje çok fazla içeriği kapsıyor, sonrasında da osdev wiki ile devam edebilirsiniz.
MOROS: http://moros.cc, https://github.com/vinc/moros
MOROS da bu koşulları sağlıyor gibi görünüyor, o yüzden yer imlerine ekledim.
Sadece bir nedenle QEMU’da başlamadığı için henüz deneyemedim; bunun işletim sisteminin kendisinden çok benim tarafımdaki bir sorun olma ihtimali yüksek.
Rust ve işletim sistemi geliştirmesi konusuna derinlemesine daldıktan sonra bugün bu kaynağı keşfettim ve içeriğin kalitesine hayran kaldım.
İşletim sistemlerinin tarihi ve tasarımı hakkında çok şey öğrenirken aynı anda Rust tarafını da doğal biçimde kavrıyorsunuz. Phil bunu gerçekten mükemmel yapmış.
Rustconf’tan yeni döndüm; Rust tarafında kabaca beş kadar önemli işletim sistemi yayını var gibi görünüyordu ve özellikle gerçek zamanlı sistemlere odaklananların sayısı fazlaydı.
Yalnız hepsi açık kaynak değil.
Bunların dışında daha niş ya da kamuya açık olmayan başka örnekler de var.
Geleneksel işletim sistemleri, yani gerçek zamanlı olmayan tarafta ise Redox öne çıkıyor; ayrıca bu rehber/gönderideki Blog OS dahil olmak üzere araştırma, deney ve eğitim amaçlı pek çok işletim sistemi var.
Bu yazıların ilk baskısını özellikle tavsiye ederim.
Mevcut baskı, bootloading işinin tamamını özel bir crate ile hallederek biraz fazla yardımcı oluyor gibiydi.
Bu yorumu görünce gerçekten denemek istedim. Eğlencesine küçük bir işletim sistemi yapmak istiyorum ama bir şeyler yapabilecek düzgün bir makine durumuna gelmek için büyü gibi görünen prosedürlerden geçmekten hoşlanmıyorum.
Tabii bunun kötü olduğunu söylemiyorum; sadece herkesin sevdiği kısım farklı.
Bu kaynak sayesinde 2021’de Rust kullanmaya başladım ve böyle bir kaynak olduğu için gerçekten minnettarım.
Phil’in işletim sistemi geliştirmesi yazıları her zaman keyifle okunuyor.
Gelecek ay GOSIM konferansında konuşma yapacağı söyleniyor.
https://china2024.gosim.org/speakers#philipp-oppermann
Yüz yüze tanışıp konuşabilsek güzel olurdu.
https://harvey-os.org/ emekliye ayrıldı; ekip artık şu proje üzerinde çalışıyor: https://github.com/r9os/r9
Profesyonel bir geliştirici değilim ama “Y üzerinde X yazmak” ifadesini görünce aklıma Ryan Reynolds’ın “But why?” mem’i geliyor: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
Öğrenme amacıyla yapılıyorsa bence ne istersen yap. İnsan ne kadar çok kod yazarsa o kadar gelişiyor.
Ayrıca MOROS da hem proje hem de sayfa olarak çok havalı görünüyor.