7 poin oleh GN⁺ 2025-06-24 | 1 komentar | Bagikan ke WhatsApp
  • Sistem operasi bergaya DOS 64-bit yang dikembangkan dengan Rust, dengan sebagian assembly x86 juga digunakan untuk memuat kernel
  • Mengimplementasikan mode teks VGA (80x25), sistem file FAT12, serta stack jaringan IPv4 melalui SLIP (ICMP/UDP/TCP/HTTP)
  • Berjalan dan dikembangkan di mesin virtual berbasis QEMU, serta mendukung sebagian media floppy fisik
  • Menyertakan utilitas dasar seperti editor teks sederhana, pelengkapan otomatis file/direktori dengan TAB, dan game Snake

Arsitektur dan bootloader

  • CPU target adalah x86_64, dengan dukungan untuk arsitektur ARM (aarch) direncanakan di masa depan
  • Versi awal memuat dan menjalankan kernel dengan bootloader buatan sendiri
  • Pada kernel 64-bit, bootloader GRUB2 digunakan untuk menangani masuk ke Long Mode dan transisi ke Protected Mode
  • Bootloader stage2 menjalankan pengaturan GDT, IDT, paging, serta alokasi pointer Multiboot2
  • Kernel terdiri dari pemroses perintah shell dan berbagai komponen kustom

Emulasi dan image di QEMU

  • Pengembangan dan pengujian dilakukan di lingkungan mesin virtual melalui QEMU
  • Pembuatan image ISO: menggunakan grub2-mkrescue dan xorriso
  • Mendukung pembuatan dan mount image floppy FAT12, dan dapat digunakan di perangkat nyata atau melalui flag QEMU (-fda fat.img)

Prosedur inisialisasi

  • Saat masuk ke kernel, dilakukan pemeriksaan terhadap Long Mode, tag Multiboot2, sistem file FAT12, status VGA, dan lainnya
  • Setelah menampilkan logo ASCII art, kontrol dialihkan ke loop shell

Sistem file

  • Mendukung sistem file FAT12: membaca/menulis/mencari/menghapus file, serta membuat/menghapus direktori
  • Mendukung pembuatan dan penimpaan file teks, serta subdirektori
  • Menyertakan fungsi pemeriksaan konsistensi sistem file dengan alat fsck
  • Dukungan FAT32 juga direncanakan ke depannya

Stack jaringan

  • Mengirim dan menerima paket IPv4 berbasis protokol SLIP
  • Mendukung pemrosesan frame Ethernet (pengujian belum selesai)
  • Mendukung ICMP Echo (Request/Reply), UDP, TCP (state machine SYN/SYNACK), dan lainnya
  • Server HTTP sederhana: menyajikan halaman HTML statis

Game Snake

  • Game Snake sudah disertakan, dan versi multiplayer (P2P TCP) juga direncanakan
  • Data game (level, skor) dapat disimpan dan dimuat kembali sebagai file teks
  • Keluar dari game dengan ESC, dan High Score disimpan berdasarkan skor

Nilai proyek dan poin pemanfaatan

  • Sebagai contoh sistem operasi yang ditulis dengan Rust, proyek ini membantu merasakan peningkatan keamanan dan produktivitas dalam pengembangan perangkat lunak tingkat rendah
  • Dengan pengujian SLIP/ICMP, deployment yang mudah, dan dukungan perangkat nyata, proyek ini cocok untuk eksperimen OS dan pembelajaran implementasi kustom
  • Memberikan pengalaman langsung dengan struktur sistem mirip DOS yang menggabungkan Rust dan assembly x86

1 komentar

 
GN⁺ 2025-06-24
Komentar Hacker News
  • Menggunakan bahasa yang menjamin keamanan memori, berbasis x86_64, ada rencana dukungan Arm, memiliki stack jaringan sendiri, bisa boot lewat CD dan multiboot, proyek hobi saya memberikan pengalaman yang melampaui DOS
    • Untuk bisa bersaing dengan DOS, wajib mendukung menjalankan Doom dan BASIC, ini secara resmi menjadi tolok ukur gaya DOS
    • Kombinasi Rust dan assembly x86, jadi kalau tujuannya mengejar keamanan memori, saya jadi bertanya-tanya apakah ini benar-benar punya nilai praktis; Rust saat ini terasa seperti dulu 3D printing, dipasarkan secara berlebihan. Dalam proses menjadi arus utama, manfaat nyatanya terasa terbatas, dan proyek seperti ini akan bagus kalau kompatibel dengan perangkat lunak lama, tetapi kalau tidak, rasanya lebih dekat ke proyek edukasi atau proyek untuk penggemar, dan masih terasa jauh dari penggunaan nyata
  • Saya sangat suka bahwa stack jaringannya memakai SLIP dan slattach(1). Saat saya membuat stack TCP/IP sederhana sendiri, saya juga pernah menghubungkannya ke kernel lewat koneksi SLIP berbasis pty di Linux. Dulu macOS juga punya slattach(1), tetapi sepertinya sekarang sudah dihapus. Saya penasaran apakah ada yang pernah memakai SLIP di macOS untuk membuat API jaringan lintas platform. Alternatifnya, di Linux ada tun/tap dan di macOS ada utun, tetapi SLIP jauh lebih sederhana
  • Saya penasaran kenapa memilih x86, apakah karena sumber dayanya melimpah, karena format instruksinya yang unik, karena kompleksitas urutan boot, atau mungkin strategi untuk meniru DOS apa adanya. Katanya dukungan arsitektur ARM juga akan segera hadir, tetapi karena DOS sendiri sangat erat mengikat perangkat keras dan perangkat lunak, saya penasaran bagaimana pendekatan dukungan lintas arsitekturnya
    • Saya belum melihat proyek ini secara langsung, tetapi dugaan saya, platform x86 secara historis punya sangat banyak antarmuka bawaan berkat kompatibilitas lama, sehingga implementasi OS mirip DOS yang sangat tipis dan sederhana jadi lebih mudah. Tidak perlu parsing device tree, setup MMU, atau menangani bus kompleks seperti PCI(e), jadi bisa mulai dengan sederhana. ARM lebih sulit sejak tahap bootstrap, sehingga untuk mempertahankan kesederhanaan perlu menerima lebih banyak keterbatasan, apa yang bisa dilakukan tanpa MMU juga terbatas, dan karena tidak ada antarmuka BIOS, tidak mudah melakukan hal-hal sederhana seperti membaca sektor atau menunggu input tombol seperti di x86
    • Alasan memilih x86 adalah karena sistem ini diturunkan dari versi pertama yang dibuat di Turbo C berbasis interupsi BIOS dan inline assembly. Tujuannya bukan semata-mata meniru MS-DOS, tetapi memang banyak terinspirasi olehnya. Dukungan untuk banyak arsitektur dimungkinkan berkat kemampuan kompiler Rust dalam menentukan arsitektur target; cukup tetapkan target sebelum build, dan proses build akan langsung menerapkannya
  • Di lingkungan UEFI saat ini, dibanding shell, rasanya solusi format DOS 64-bit berbasis FLOSS seperti ini akan lebih baik. Ini akan keren sebagai boot manager bergaya retro atau alat diagnostik sistem. Saya penasaran apakah ini bisa dijalankan dari partisi sistem EFI, saya sudah lihat ada dukungan fat12, tetapi bagaimana dengan gpt, dan apakah tampilannya mengendalikan perangkat keras video secara langsung atau berupa keluaran terminal
    • Boot dari partisi sistem EFI belum diuji, saat ini hanya filesystem FAT12 yang didukung secara resmi (fitur memory disk ada tetapi saat ini belum berfungsi), gpt belum didukung, dan dukungan FAT32 sedang dipertimbangkan sebagai prioritas (karena flash disk biasanya memakai FAT32). Untuk pertanyaan terakhir, OS ini menulis langsung ke buffer memori VGA, dan GRUB menyediakan resolusi 80x25
  • Saya pikir proyek ini keren, sayang sekali melewatkan kalimat legendaris, “ini cuma hobi, tidak akan menjadi besar dan profesional seperti Linux”
  • Saya penasaran apakah ada rencana dukungan tanda diakritik bahasa Ceko
    • Untuk versi ini, rencananya hanya mendukung bahasa Inggris, versi pertama awalnya dibuat dalam bahasa Ceko
  • Saya penasaran apakah ini memakai driver VGA yang sepenuhnya baru ditulis dalam Rust
  • Pertanyaan apakah ini bergaya DOS tetapi memang tidak kompatibel dengan DOS
    • Analisis itu benar, versi pertama dirancang 16-bit dan hampir kompatibel dengan MS-DOS, dan saya rasa kalau setidaknya bisa menangani I/O disk sederhana, dalam arti luas ini juga bisa dimasukkan ke kategori sistem DOS
    • Maksudnya tingkat kompatibilitas MS-DOS yang bisa menjalankan Alley Cat, Dune 2, dan Doom
  • Ada pendapat bahwa dukungan runtime asinkron memerlukan event queue
    • Bagaimana pendapat tentang implementasi event loop yang matang
  • Pertanyaan bercanda tentang kemungkinan menjalankan Crysis