UEFI hakkında kısa bir tekrar
- UEFI, anakart ROM'unda depolanan firmware aracılığıyla işletim sisteminin bootloader'ını yükler.
- BIOS'un sınırlamalarını aşmak için UEFI adlı yeni bir standart getirildi.
- UEFI, bootloader'ı 64 bit ortamda çalıştırır ve çeşitli API'ler sunar.
Ağdan önyükleme
- Bazı bootloader'lar, işletim sistemini yerel aygıt yerine ağ üzerinden yükleyebilir.
- UEFI firmware'i bir ağ yığını içerir ve bu sayede önyükleme öncesi ortamda uygulama çalıştırmak mümkündür.
UEFI içinde Rust ile ağ iletişimi
- Projede en zor kısım, Rust ile UEFI'nin TCP protokolünü uygulamaktı.
- UEFI'nin TCP protokolünü kullanmak karmaşıktır; global durum, callback'ler ve scatter-gather buffer'lar gibi unsurlar içerir.
- Bellek sızıntılarını veya TCP alma buffer'ında UAF (Use-After-Free) oluşmasını önlemek için Rust kodu dikkatle test edildi.
İmleç desteği
- Fare, IRC istemcisi için zorunlu olmasa da kullanıcı deneyimini iyileştirir.
- Fare hareketlerini ve düğme girişlerini okumak için UEFI'nin Simple Pointer Protocol'ü kullanılır.
IRC mesajlarını modelleme
- IRC mesajlarını modellemek basit ve keyifli bir işti.
- IRC, yalnızca kısmen standartlaştırılmış, metin tabanlı bir satır formatı kullanır.
UEFI'de libgui kullanmak
- UEFI'de bir GUI araç takımını çalıştırmak görece kolaydı; çünkü axle'ın Rust GUI araç takımını başka bağlamlarda da kullanabilmek için zaten epey çalışma yapılmıştı.
- AwmWindow için UEFI uygulaması sağlandıktan sonra olay yönetimi, yazı tipi render etme, katman birleştirme gibi libgui'nin çoğu özelliği kullanılabilir hale gelir.
Kaydırma çubuğu
- Kaydırma görünümünde çoğunlukla metin gösterildiği için kaydırma çubuğu işlevi Rust libgui içinde yeniden uygulandı.
Kaydırma görünümünde metin render etme
- Kaydırma görünümünde metin render etme biçiminde bazı değişiklikler gerekliydi.
- Kaydırma görünümü, piksel verisini yönetmek için "tile" tabanlı ölçeklenebilir bir canvas kullanır.
libgui iyileştirmeleri
- Her yeni grafik uygulaması geliştirildiğinde sistem ve API'leri iyileştirmek için bir fırsat doğar.
- UEFIRC geliştirilirken libgui'ye bazı ince ayarlar ve düzeltmeler eklendi.
Tamamen gereksiz
- UEFIRC'nin kendisi pratikte kullanım için çok da faydalı değil; bu proje aslında karmaşık bir şakadan ibaret.
- UEFI'nin TCP/IP yığını hakkında şikayetiniz varsa, bu araçla bunu dile getirebilirsiniz.
GN⁺ görüşü
- Bu proje, UEFI ortamında çalışan grafiksel bir IRC istemcisinin Rust ile geliştirilmiş hali olarak, sistem önyüklenmeden önce sohbet etmeyi ve mesaj okumayı mümkün kılan benzersiz bir deneme.
- UEFI'nin karmaşıklığı ile Rust dilinin bellek güvenliğini birleştiren ağ uygulaması, sistem programlama alanında önemli bir öğrenme kaynağı olabilir.
- Bu teknolojinin gerçekten yararlı olup olmadığı tartışmalı olsa da, UEFI ortamında uygulama geliştirmenin olasılıklarını keşfetmek açısından ilgi çekici bir örnek.
- UEFI programlama modelinin karmaşıklığı ile Rust'ın güvenliğini bir araya getiren bu proje, sistem düzeyi programlamaya dair anlayışı geliştirmeye yardımcı olabilir.
- Proje açık kaynak olarak yayımlandı; bu da ilgili geliştiriciler için iyi bir başvuru ve kullanım kaynağı olmasını sağlıyor.
1 yorum
Hacker News görüşü
UEFI pre-boot ortamında çalışan grafiksel bir IRC istemcisi geliştiren geliştiricinin deneyimi
Yazılım yığınında işletim sisteminin en alt seviye olduğu yönündeki yanlış algıya dikkat çekilmesi
Projenin amacıyla ilgili soruya verilen tepki
Geliştiricinin arkadaşının projeye verdiği tepki
UEFI API'sinin erişilebilirliği ve dokümantasyonuna duyulan hayranlık
Fare ivmelendirme özelliği hakkındaki kişisel görüş
UEFI'nin ilk vaatlerine gönderme
Diğer bootloader projeleriyle karşılaştırma
Yazıdaki görselleştirmeye övgü
Bare metal ortamda müzikle ilgili uygulama olasılığı