4 điểm bởi GN⁺ 2025-04-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • RetrOS-32 là một dự án hệ điều hành hobby 32-bit dựa trên kiến trúc i386
  • Cung cấp các tính năng đồ họa, đa nhiệm, mạng và đã được thử nghiệm trên phần cứng thực
  • Được viết bằng C, C++, Assembly và hỗ trợ biên dịch đa nền tảng thông qua Docker
  • Có thể thiết lập hệ thống người dùng, chạy giả lập QEMU và khởi động trên thiết bị thực
  • Dự án có các tính năng kernel hoàn thiện tốt cùng network stack và đang tiếp tục được bổ sung tính năng

Giới thiệu dự án RetrOS-32bit

  • Là dự án phát triển hệ điều hành hobby 32-bit dựa trên kiến trúc i386
  • Hỗ trợ môi trường đồ họa, đa nhiệm và các tính năng mạng
  • Ngày bắt đầu dự án: 12 tháng 5, 2022

Thông tin đăng nhập mặc định

  • Tài khoản người dùng mặc định: system, admin, guest
  • Mật khẩu của admin là admin, guest không có mật khẩu
  • Có thể tạo người dùng mới bằng lệnh admin create <tên_người_dùng> <mật_khẩu>

Ngôn ngữ và công cụ phát triển chính

  • C, Assembly: kernel, tiện ích, hệ thống build
  • C++: ứng dụng không gian người dùng
  • Make: tự động hóa build
  • Docker: cung cấp môi trường biên dịch đa nền tảng

Phần cứng đã được thử nghiệm

  • Lenovo x240
  • Asus Eee PC series
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

Bắt đầu (Getting Started)

Công cụ cần thiết (Prerequisites)

  • Docker: biên dịch đa nền tảng
  • QEMU: giả lập máy ảo
  • Môi trường Linux/WSL: build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS: cần dùng Docker (hạn chế khi build x86 32-bit)

Cách cài đặt (Installation)

  • Clone kho lưu trữ Git
  • Khởi tạo Git submodule
  • Tạo file image bằng các lệnh make compile, make img
  • Chạy trình giả lập QEMU bằng lệnh make qemu

Trên MacOS và Windows, nên dùng Docker

Cách sử dụng (Usage)

  • Tải file .img lên trang copy.sh v86 để chạy
  • Có thể chạy trực tiếp bằng QEMU: make qemu hoặc qemu-system-i386 <tên_image>
  • Trên thiết bị thực, có thể ghi ISO dựa trên GRUB ra USB/CD để khởi động

Cấu trúc dự án (tóm tắt ngắn)

  • apps: ứng dụng không gian người dùng
  • bin: file nhị phân
  • boot: mã nguồn bootloader
  • drivers: driver kernel
  • fs: mã hệ thống tệp
  • graphics: mã xử lý đồ họa
  • include: file header
  • kernel: mã nguồn chính của kernel
  • lib: thư viện
  • net: mã mạng
  • rootfs: hệ thống tệp gốc
  • tests: mã kiểm thử
  • tools: công cụ build và tiện ích

Lộ trình phát triển (Roadmap)

  • Đã hoàn thành bootloader tùy chỉnh và khởi động tương thích GRUB
  • Đã triển khai lập lịch preemptive đa luồngtách biệt không gian kernel/user
  • Network stack: đã hoàn thành Ethernet, IP, ARP, UDP, TCP, DHCP, DNS
  • Hệ thống đồ họa: đã triển khai window manager, widget, render framebuffer kép
  • Hệ thống tệp: tương tự Ext2, hỗ trợ FAT16, có thể đọc/ghi
  • Kế hoạch tiếp theo: bổ sung hỗ trợ web server, FTP, IRC, SSH, Telnet, HTTP, HTML

1 bình luận

 
GN⁺ 2025-04-27
Ý kiến Hacker News
  • Những dự án như thế này đáng xem hơn AI rất nhiều. Có lẽ sẽ không bán được, nhưng đây là hình ảnh một kỹ sư đang làm việc đầy sáng tạo
    • Hồi cuối tuổi teen tôi đã học rất nhiều về phát triển OS như một sở thích. Đến giờ tôi vẫn thỉnh thoảng làm các kernel nhỏ (gần đây nhất là in ra một thông điệp cho bạn đời bằng một kernel RISCV nhỏ)
  • Đây là một trong những dự án đam mê gây ấn tượng nhất mà tôi từng thấy trong thời gian dài. Tôi tò mò vì sao lại tự viết trình biên dịch C
  • Font hệ thống mặc định nên là một biến thể nén hơn. Như vậy hệ thống sẽ trông tinh chỉnh hơn nhiều
    • Rõ ràng là ký tự cần nhiều không gian theo chiều ngang hơn. Mỗi ký tự nên hẹp hơn, và khoảng cách giữa các ký tự nên ít nhất có thể - với cỡ chữ và độ phân giải hiện tại, khoảng một pixel là đủ
    • Tôi không rành về hệ thống font, nhưng đoán đây là font bitmap đơn cách. Tôi không biết việc thực hiện những thay đổi này trong codebase khó đến mức nào, nhưng nếu là quá nhiều việc thì đừng bận tâm
    • Tôi đang tự xây một trang web OS từ đầu, và gần đây vừa viết lại hoàn toàn lớp font. Vì thế chuyện này đang ở trong đầu tôi
  • Tuyệt vời! Nếu bắt đầu lại hôm nay thì bạn sẽ làm gì khác đi?
    • Bạn nghĩ gì về độ phù hợp của ngôn ngữ cho các phần low-level? (ví dụ: tiếp tục với C, hay một tập con đơn giản của C++, hoặc một trong các ngôn ngữ mới hơn)
    • Trong bối cảnh có rất nhiều tài nguyên tham khảo, bạn đã giữ cho dự án vẫn thú vị như thế nào mà không sao chép mã của người khác?
  • Xin chúc mừng! Là người từng dùng Commodore PET 2001 vào năm 1977, tôi thấy nó rất tuyệt. Tôi từng nghịch KolibriOS và MenuetOSx64, nhưng vẫn luôn muốn tự làm OS của riêng mình. Bạn đã làm được rồi! Chúc bạn tiếp tục tiến lên
  • Tôi chỉ muốn gửi lời chúc mừng. Tôi thực sự ấn tượng với dự án này. Tôi đã là fan của phát triển OS từ thời niên thiếu, và thật vui khi thấy thành quả này trở thành hiện thực. Tôi tò mò hệ thống con đồ họa được khởi tạo như thế nào. Chúc bạn thành công
  • Nó sẽ lớn và chuyên nghiệp như GNU chứ? :)
  • Bạn có thể giải thích trình biên dịch này tương tác với hệ điều hành như thế nào không? Cụ thể, tôi tò mò nó xử lý các tính năng như struct ra sao, cũng như những hạn chế hiện tại hoặc các cải tiến được lên kế hoạch trong lĩnh vực này là gì
  • Thật thú vị khi có vài dự án cùng lúc đạt đến các cột mốc. Thật yên tâm khi thấy vẫn còn những người làm việc sâu với máy tính và chia sẻ kết quả
    • Chúc bạn tiếp tục tiến lên
  • Tôi thấy dấu ấn của Turbo C/QBasic trong editor
    • Xin gửi lời khen cho dự án