1 puan yazan GN⁺ 2024-04-07 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-04-07
Hacker News görüşü
  • UEFI pre-boot ortamında çalışan grafiksel bir IRC istemcisi geliştiren geliştiricinin deneyimi

    Geliştirici, GPS alıcısı projesinden yorulduğu için hafif ve eğlenceli bir projeye başladı. Beklediğinden daha uzun sürdü ve scroll görünümünü modellemeye ve statik viewport'a render etmeye çok zaman harcadı. Amaç, UEFI içinde sosyal medya hissi veren bir IRC istemcisi uygulamaktı; UEFI'nin HTTP protokolünü kullanan bir Twitter istemcisi zaten olduğu için IRC'yi seçti.

  • Yazılım yığınında işletim sisteminin en alt seviye olduğu yönündeki yanlış algıya dikkat çekilmesi

    Gerçekte sistemi kontrol eden firmware kodu vardır ve bu kod bazen OS için de görünmez şekilde çalışır. UEFI'de bir IRC istemcisi çalıştırılabilmesi, daha ciddi şeylerin de mümkün olabileceğini düşündürüyor.

  • Projenin amacıyla ilgili soruya verilen tepki

    Geliştirici projeye eğlence için başladı ve bu, Hacker News topluluğunun benimsediği ruhu yansıtıyor. Projenin pratikliğinden çok yaratıcılık ve eğlence öne çıkıyor.

  • Geliştiricinin arkadaşının projeye verdiği tepki

    Projeyi bir şaka gibi anlattı, ancak arkadaşı ne zaman gülmesi gerektiğini bilmediğini söyledi. Geliştirici, projenin potansiyel değerini küçümsememek gerektiğini öneriyor.

  • UEFI API'sinin erişilebilirliği ve dokümantasyonuna duyulan hayranlık

    Geliştirici, UEFI API'sinin iyi belgelenmiş ve kolay erişilebilir olmasına şaşırdığını belirtiyor. Geliştirme sürecinde sanal makine kullanıp kullanmadığını ve istemciyi her çalıştırışta yeniden boot etmek gerekip gerekmediğini merak ediyor.

  • Fare ivmelendirme özelliği hakkındaki kişisel görüş

    Fare ivmelendirmesi, kullanıcının ekrandaki mesafeleri öğrenmesini zorlaştırır. Oyuncular arasında bu özelliği kapatmak yaygındır ve uzun vadede daha verimlidir.

  • UEFI'nin ilk vaatlerine gönderme

    UEFI ilk tanıtıldığında düşük seviye uygulamaların önünü açacağı söylenmişti ve bazı üreticilerin Linux tabanlı, yalnızca internete yönelik mini OS'lerinin yerini alabileceğine dair umutlar vardı.

  • Diğer bootloader projeleriyle karşılaştırma

    barebox bootloader'ın April Fools projesine değiniliyor; o proje TCP desteği eklemeye odaklanırken, geliştiricinin projesi GUI öğeleri de içeriyor.

  • Yazıdaki görselleştirmeye övgü

    Yazıya dahil edilen görselleştirme çalışmasının etkileyici olduğu belirtiliyor.

  • Bare metal ortamda müzikle ilgili uygulama olasılığı

    Hızlı boot eden ve gereksiz bileşenler içermeyen bare metal bir ortamda synthesizer veya gitar efekt işlemcisi gibi müzikle ilgili uygulamaların avantajları anlatılıyor. Bunun için ses kartı desteği de gerekir.