- 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
Komentar Hacker News
OS mirip DOSyang 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