1 poin oleh GN⁺ 2024-04-07 | 1 komentar | Bagikan ke WhatsApp

Tinjauan singkat tentang UEFI

  • UEFI memuat bootloader OS melalui firmware yang disimpan di ROM motherboard.
  • Untuk mengatasi keterbatasan BIOS, diperkenalkan standar baru bernama UEFI.
  • UEFI menjalankan bootloader dalam lingkungan 64-bit dan menyediakan berbagai API.

Boot melalui jaringan

  • Beberapa bootloader dapat memuat OS melalui jaringan alih-alih dari perangkat lokal.
  • Firmware UEFI menyertakan stack jaringan, sehingga aplikasi dapat dijalankan di lingkungan pra-boot.

Networking Rust di UEFI

  • Mengimplementasikan protokol TCP UEFI dengan Rust adalah bagian paling menantang dalam proyek ini.
  • Penggunaan protokol TCP di UEFI itu kompleks, mencakup status global, callback, dan buffer scatter-gather.
  • Kode Rust diuji dengan hati-hati untuk mencegah memory leak atau UAF (Use-After-Free) pada buffer penerimaan TCP.

Dukungan kursor

  • Mouse bukan hal yang wajib untuk klien IRC, tetapi meningkatkan pengalaman pengguna.
  • Simple Pointer Protocol milik UEFI digunakan untuk membaca pergerakan mouse dan input tombol.

Pemodelan pesan IRC

  • Pemodelan pesan IRC adalah pekerjaan yang sederhana dan menyenangkan.
  • IRC menggunakan format baris berbasis teks, dan hanya sebagian yang terstandarisasi.

Menggunakan libgui di UEFI

  • Menjalankan GUI toolkit di UEFI relatif mudah karena sebelumnya sudah banyak pekerjaan dilakukan agar GUI toolkit Rust milik axle bisa digunakan di konteks lain.
  • Setelah menyediakan implementasi UEFI untuk AwmWindow, sebagian besar fitur libgui seperti manajemen event, rendering font, dan komposisi layer dapat digunakan.

Scroll bar

  • Karena teks terutama ditampilkan dalam scroll view, fitur scroll bar diimplementasikan ulang ke Rust libgui.

Rendering teks di scroll view

  • Diperlukan beberapa perubahan pada cara teks dirender di dalam scroll view.
  • Scroll view mengelola data piksel menggunakan kanvas yang dapat diperluas berbasis 'tile'.

Peningkatan libgui

  • Setiap kali mengimplementasikan aplikasi grafis baru, selalu ada peluang untuk memperbaiki sistem dan API.
  • Saat mengembangkan UEFIRC, beberapa tweak dan perbaikan ditambahkan ke libgui.

Sepenuhnya tidak perlu

  • UEFIRC sendiri sebenarnya tidak terlalu berguna untuk dipakai secara nyata, dan proyek ini adalah sebuah lelucon yang rumit.
  • Jika Anda punya keluhan tentang stack TCP/IP milik UEFI, Anda bisa mengekspresikan keluhan itu dengan alat ini.

Opini GN⁺

  • Proyek ini mengembangkan klien IRC grafis yang berjalan di lingkungan UEFI dengan Rust, sebuah upaya unik yang memungkinkan chat dan membaca pesan sebelum sistem boot.
  • Implementasi networking yang memanfaatkan kompleksitas UEFI dan keamanan memori bahasa Rust dapat menjadi materi pembelajaran penting di bidang pemrograman sistem.
  • Apakah teknologi ini benar-benar berguna masih bisa diperdebatkan, tetapi ini adalah contoh menarik untuk mengeksplorasi kemungkinan pengembangan aplikasi di lingkungan UEFI.
  • Proyek yang menggabungkan kompleksitas model pemrograman UEFI dan keamanan Rust ini dapat membantu meningkatkan pemahaman tentang pemrograman tingkat sistem.
  • Proyek ini tersedia sebagai open source, sehingga menjadi referensi yang baik bagi pengembang yang tertarik untuk mempelajari dan memanfaatkannya.

1 komentar

 
GN⁺ 2024-04-07
Komentar Hacker News
  • Pengalaman seorang pengembang yang membuat klien IRC grafis yang berjalan di lingkungan preboot UEFI

    Pengembang mulai mengerjakan proyek yang ringan dan menyenangkan karena lelah dengan proyek penerima GPS. Ternyata waktu yang dibutuhkan lebih lama dari perkiraan, dan banyak waktu dihabiskan untuk memodelkan tampilan gulir serta merendernya ke viewport statis. Tujuannya adalah membuat klien IRC bergaya media sosial di UEFI, dan karena sudah ada klien Twitter yang menggunakan protokol HTTP UEFI, ia memilih IRC.

  • Sorotan terhadap kesalahpahaman bahwa sistem operasi adalah lapisan terendah dalam stack perangkat lunak

    Sebenarnya ada kode firmware yang mengendalikan sistem, dan ini kadang bekerja tanpa terlihat bahkan oleh OS. Fakta bahwa klien IRC bisa dijalankan di UEFI menunjukkan bahwa hal yang lebih serius pun dapat terjadi.

  • Tanggapan atas pertanyaan tentang tujuan proyek

    Pengembang memulai proyek ini untuk bersenang-senang, dan itulah semangat yang dijunjung komunitas Hacker News. Kreativitas dan kesenangan dianggap lebih penting daripada kegunaan praktis proyek.

  • Reaksi teman pengembang terhadap proyek tersebut

    Ia menjelaskan proyek itu sebagai lelucon, tetapi temannya berkata tidak tahu kapan harus tertawa. Pengembang menyarankan agar orang tidak meremehkan nilai potensial proyek ini.

  • Kekaguman terhadap aksesibilitas dan dokumentasi API UEFI

    Pengembang menyatakan terkejut karena API UEFI terdokumentasi dengan baik dan mudah diakses. Ia juga penasaran apakah mesin virtual digunakan selama pengembangan, dan apakah harus melakukan booting setiap kali menjalankan klien.

  • Pendapat pribadi tentang fitur akselerasi mouse

    Akselerasi mouse mengganggu pengguna dalam mempelajari jarak di layar. Di kalangan gamer, mematikan fitur ini adalah hal yang umum, dan dalam jangka panjang lebih efisien.

  • Penyebutan janji awal UEFI

    Saat pertama kali diperkenalkan, UEFI menjanjikan kemungkinan untuk aplikasi tingkat rendah, dan ada impian bahwa ini bisa menggantikan mini OS khusus internet berbasis Linux dari beberapa vendor.

  • Perbandingan dengan proyek bootloader lain

    Disebutkan proyek April Mop dari bootloader barebox, yang berfokus pada penambahan dukungan TCP, sedangkan proyek pengembang ini juga mencakup elemen GUI.

  • Pujian terhadap visualisasi dalam artikel

    Disebutkan bahwa visualisasi yang disertakan dalam artikel sangat mengesankan.

  • Kemungkinan aplikasi terkait musik di lingkungan bare metal

    Dijelaskan manfaat aplikasi terkait musik seperti synthesizer atau prosesor efek gitar di lingkungan bare metal yang booting-nya cepat dan tanpa komponen yang tidak perlu. Untuk itu, dukungan kartu audio juga dibutuhkan.