- Hệ điều hành kiểu DOS 64-bit được phát triển bằng Rust, với một phần hợp ngữ x86 cũng được dùng để nạp kernel
- Triển khai chế độ văn bản VGA (80x25), hệ thống tệp FAT12, ngăn xếp mạng IPv4 qua SLIP (ICMP/UDP/TCP/HTTP)
- Chạy và được phát triển trong máy ảo dựa trên QEMU, đồng thời hỗ trợ một phần đĩa mềm vật lý thực tế
- Bao gồm các tiện ích cơ bản như trình soạn thảo văn bản đơn giản, tự động hoàn thành file/thư mục bằng TAB, trò chơi Snake
Kiến trúc và bootloader
- CPU mục tiêu là x86_64, và dự kiến sẽ hỗ trợ kiến trúc ARM (aarch) trong tương lai
- Các phiên bản đầu dùng bootloader tự viết để nạp kernel vào bộ nhớ và thực thi
- Ở kernel 64-bit, sử dụng bootloader GRUB2 để xử lý việc vào Long Mode và chuyển sang Protected Mode
- Bootloader stage2 thực hiện thiết lập GDT, IDT, phân trang và cấp phát con trỏ Multiboot2
- Kernel gồm bộ xử lý lệnh shell và nhiều thành phần tùy biến khác nhau
Mô phỏng và image trong QEMU
- Việc phát triển và kiểm thử được thực hiện trong môi trường máy ảo thông qua QEMU
- Tạo image ISO: dùng grub2-mkrescue và xorriso
- Hỗ trợ tạo và mount image đĩa mềm FAT12, có thể dùng với thiết bị thực hoặc cờ QEMU (-fda fat.img)
Quy trình khởi tạo
- Khi vào kernel, kiểm tra Long Mode, thẻ Multiboot2, hệ thống tệp FAT12, trạng thái VGA, v.v.
- Sau khi in logo ASCII art, chuyển quyền điều khiển sang vòng lặp shell
Hệ thống tệp
- Hỗ trợ hệ thống tệp FAT12: đọc/ghi/tìm kiếm/xóa tệp, tạo/xóa thư mục, v.v.
- Hỗ trợ tạo và ghi đè tệp văn bản, cũng như thư mục con
- Bao gồm chức năng kiểm tra tính nhất quán của hệ thống tệp bằng công cụ fsck
- Dự kiến sẽ hỗ trợ FAT32 trong tương lai
Ngăn xếp mạng
- Gửi và nhận gói IPv4 dựa trên giao thức SLIP
- Hỗ trợ xử lý khung Ethernet (chưa kiểm thử hoàn chỉnh)
- Hỗ trợ ICMP Echo (Request/Reply), UDP, TCP (máy trạng thái SYN/SYNACK), v.v.
- Máy chủ HTTP đơn giản: phục vụ các trang HTML tĩnh
Trò chơi Snake
- Tích hợp trò chơi Snake, và cũng có kế hoạch cho phiên bản nhiều người chơi (P2P TCP) trong tương lai
- Dữ liệu trò chơi (màn chơi, điểm số) có thể được lưu và tải từ tệp văn bản
- Thoát trò chơi bằng ESC, lưu High Score theo số điểm
Giá trị dự án và điểm ứng dụng
- Là một ví dụ về hệ điều hành được viết bằng Rust, giúp cảm nhận hiệu quả nâng cao độ an toàn và năng suất trong phát triển phần mềm mức thấp
- Nhờ kiểm thử SLIP/ICMP, triển khai đơn giản và hỗ trợ thiết bị thực, nó phù hợp để thử nghiệm OS và học cách hiện thực tùy biến
- Có thể trực tiếp trải nghiệm cấu trúc của một hệ thống tương tự DOS kết hợp giữa Rust và hợp ngữ x86
1 bình luận
Ý kiến trên Hacker News