- Rust में विकसित 64-बिट DOS-स्टाइल operating system, जिसमें kernel loading के लिए कुछ x86 assembly भी इस्तेमाल की गई है
- VGA text mode (80x25), FAT12 filesystem, और SLIP के ज़रिए IPv4 network stack (ICMP/UDP/TCP/HTTP) का implementation
- QEMU-आधारित virtual machine में चलाया और विकसित किया जाता है, और कुछ वास्तविक floppy media भी support करता है
- साधारण text editor, TAB file/directory auto-completion, Snake game जैसी बुनियादी utilities शामिल हैं
आर्किटेक्चर और bootloader
- लक्ष्य CPU x86_64 है, और भविष्य में ARM (aarch) architecture support की योजना है
- शुरुआती version में खुद लिखा गया bootloader kernel को memory में लोड करके चलाता था
- 64-बिट kernel में GRUB2 bootloader का उपयोग Long Mode में प्रवेश और Protected Mode transition को संभालने के लिए किया गया है
- stage2 bootloader GDT, IDT, paging setup और Multiboot2 pointer allocation जैसे कार्य करता है
- kernel shell command handler और विभिन्न custom components से बना है
QEMU में emulation और image
- QEMU के माध्यम से virtual machine environment में development और testing की जाती है
- ISO image बनाना: grub2-mkrescue और xorriso का उपयोग
- FAT12 floppy image बनाना और mount support, जिसे वास्तविक device या QEMU flag (
-fda fat.img) के साथ उपयोग किया जा सकता है
initialization प्रक्रिया
- kernel में प्रवेश के समय Long Mode, Multiboot2 tags, FAT12 filesystem, VGA state आदि की जांच
- ASCII art logo दिखाने के बाद, control shell loop को सौंप दिया जाता है
filesystem
- FAT12 filesystem support: file read/write/search/delete, directory create/delete आदि का support
- text file बनाना और overwrite करना, subdirectory support
- fsck tool के साथ filesystem consistency check की सुविधा शामिल
- आगे चलकर FAT32 support की भी योजना
network stack
- SLIP protocol आधारित IPv4 packet send/receive
- Ethernet frame processing support (testing अभी अधूरा)
- ICMP Echo (Request/Reply), UDP, TCP (SYN/SYNACK state machine) आदि का support
- साधारण HTTP server: static HTML page serve करता है
Snake game
- Snake game built-in है, और भविष्य में multiplayer (P2P TCP) version की भी योजना है
- game data (level, score) को text file में save और load किया जा सकता है
- ESC से game बंद होता है, और score के अनुसार High Score save होता है
project का महत्व और उपयोग बिंदु
- Rust में लिखा गया operating system होने के कारण, low-level software development में safety और productivity बढ़ने का व्यावहारिक अनुभव मिलता है
- SLIP/ICMP testing, आसान deployment, और real hardware support के कारण यह OS experiments और custom implementation सीखने के लिए उपयुक्त है
- Rust और x86 assembly से बने DOS-जैसे system structure का प्रत्यक्ष अनुभव किया जा सकता है
1 टिप्पणियां
Hacker News की राय