4 คะแนน โดย GN⁺ 2025-04-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • RetrOS-32 เป็นโปรเจ็กต์ระบบปฏิบัติการงานอดิเรกแบบ 32 บิตที่อิงกับ สถาปัตยกรรม i386
  • มีความสามารถด้าน กราฟิก, มัลติทาสก์, เครือข่าย และผ่านการทดสอบบนฮาร์ดแวร์จริงแล้ว
  • เขียนด้วย C, C++, Assembly และรองรับการคอมไพล์ข้ามแพลตฟอร์มผ่าน Docker
  • สามารถ สร้างระบบผู้ใช้, รันผ่าน QEMU emulation และบูตบนเครื่องจริงได้
  • โปรเจ็กต์มีทั้ง ฟีเจอร์เคอร์เนลที่สมบูรณ์ในระดับสูง และ network stack พร้อมมีการเพิ่มความสามารถอย่างต่อเนื่อง

แนะนำโปรเจ็กต์ RetrOS-32bit

  • เป็นโปรเจ็กต์พัฒนาระบบปฏิบัติการงานอดิเรกแบบ 32 บิตที่อิงกับสถาปัตยกรรม i386
  • รองรับสภาพแวดล้อมกราฟิก, มัลติทาสก์ และฟังก์ชันเครือข่าย
  • วันเริ่มต้นโปรเจ็กต์: 12 พฤษภาคม 2022

ข้อมูลล็อกอินพื้นฐาน

  • บัญชีผู้ใช้เริ่มต้น: system, admin, guest
  • รหัสผ่านของ admin คือ admin ส่วน guest ไม่มีรหัสผ่าน
  • สามารถสร้างผู้ใช้ใหม่ได้ด้วยคำสั่ง admin create <username> <password>

ภาษาและเครื่องมือหลักที่ใช้พัฒนา

  • C, Assembly: เคอร์เนล, ยูทิลิตี, ระบบบิลด์
  • C++: แอปพลิเคชันใน user space
  • Make: ทำบิลด์อัตโนมัติ
  • Docker: จัดเตรียมสภาพแวดล้อมคอมไพล์ข้ามแพลตฟอร์ม

ฮาร์ดแวร์ที่ทดสอบแล้ว

  • Lenovo x240
  • Asus Eee PC ซีรีส์
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

เริ่มต้นใช้งาน (Getting Started)

เครื่องมือที่ต้องมี (Prerequisites)

  • Docker: สำหรับการคอมไพล์ข้ามแพลตฟอร์ม
  • QEMU: สำหรับการจำลองเครื่องเสมือน
  • สภาพแวดล้อม Linux/WSL: build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS: จำเป็นต้องใช้ Docker (เนื่องจากมีข้อจำกัดในการบิลด์ 32-bit x86)

วิธีติดตั้ง (Installation)

  • โคลน Git repository
  • เริ่มต้น Git submodule
  • สร้างไฟล์อิมเมจด้วยคำสั่ง make compile, make img
  • รัน QEMU emulator ด้วยคำสั่ง make qemu

แนะนำให้ใช้ Docker บน MacOS และ Windows

วิธีใช้งาน (Usage)

  • อัปโหลดไฟล์ .img ไปที่เว็บไซต์ copy.sh v86 เพื่อรัน
  • รันโดยตรงด้วย QEMU ได้: make qemu หรือ qemu-system-i386 <image_name>
  • บนเครื่องจริงสามารถเขียน ISO แบบ GRUB ลง USB/CD แล้วบูตได้

โครงสร้างโปรเจ็กต์ (สรุปอย่างย่อ)

  • apps: แอปพลิเคชันใน user space
  • bin: ไฟล์ไบนารี
  • boot: ซอร์สของบูตโหลดเดอร์
  • drivers: ไดรเวอร์เคอร์เนล
  • fs: โค้ดระบบไฟล์
  • graphics: โค้ดประมวลผลกราฟิก
  • include: เฮดเดอร์ไฟล์
  • kernel: ซอร์สหลักของเคอร์เนล
  • lib: ไลบรารี
  • net: โค้ดเครือข่าย
  • rootfs: root file system
  • tests: โค้ดทดสอบ
  • tools: เครื่องมือสำหรับบิลด์และยูทิลิตี

โรดแมปการพัฒนา (Roadmap)

  • ทำ custom bootloader และการบูตที่เข้ากันได้กับ GRUB เสร็จแล้ว
  • พัฒนา การจัดตารางแบบ preemptive สำหรับมัลติเธรด และ การแยกพื้นที่เคอร์เนล/ผู้ใช้
  • network stack: ทำ Ethernet, IP, ARP, UDP, TCP, DHCP, DNS เสร็จแล้ว
  • ระบบกราฟิก: ทำ window manager, widget, double framebuffer rendering แล้ว
  • ระบบไฟล์: คล้าย Ext2, รองรับ FAT16, อ่าน/เขียนได้
  • แผนต่อไป: เตรียมเพิ่มการรองรับ web server, FTP, IRC, SSH, Telnet, HTTP, HTML

1 ความคิดเห็น

 
GN⁺ 2025-04-27
ความคิดเห็นจาก Hacker News
  • โปรเจกต์แบบนี้น่าดูกว่า AI มาก ถึงคงไม่ใช่สิ่งที่จะเอาไปขายได้ แต่เป็นภาพของวิศวกรที่กำลังสร้างสรรค์งานอย่างแท้จริง
    • ตอนปลายช่วงวัยรุ่นผมศึกษาเรื่องการพัฒนา OS เป็นงานอดิเรกเยอะมาก ทุกวันนี้ก็ยังทำเคอร์เนลเล็ก ๆ อยู่บ้าง (ล่าสุดทำเคอร์เนลเล็ก ๆ สำหรับ RISCV เพื่อพิมพ์ข้อความให้พาร์ตเนอร์)
  • นี่เป็นหนึ่งในโปรเจกต์ที่ขับเคลื่อนด้วยความหลงใหลที่น่าประทับใจที่สุดเท่าที่ผมเห็นมาในรอบนาน สงสัยว่าทำไมถึงเลือกเขียน C compiler ขึ้นมาเอง
  • ฟอนต์ระบบพื้นฐานควรเป็นแบบที่บีบอัดมากกว่านี้ ระบบจะดูเนี้ยบขึ้นมาก
    • เห็นได้ชัดว่าตัวอักษรต้องการพื้นที่แนวนอนมากกว่านี้ แต่ละตัวควรมีความกว้างน้อยลง และช่องว่างระหว่างตัวอักษรควรน้อยที่สุดเท่าที่ทำได้ — ที่ขนาดฟอนต์และความละเอียดที่ใช้อยู่ตอนนี้ ประมาณหนึ่งพิกเซลก็น่าจะพอ
    • ผมไม่ค่อยรู้เรื่องระบบฟอนต์ แต่เดาว่าเป็นฟอนต์บิตแมปแบบความกว้างคงที่ ไม่แน่ใจว่าการแก้แบบนี้ในโค้ดเบสจะยากแค่ไหน แต่ถ้ามันต้องใช้แรงเยอะเกินไปก็ไม่ต้องกังวล
    • ผมกำลังทำเว็บ OS ตั้งแต่ศูนย์ และเพิ่งเขียนคลาสฟอนต์ใหม่ทั้งหมดไปเมื่อไม่นานนี้ เลยมีเรื่องนี้ติดอยู่ในหัว
  • ยอดเยี่ยม! ถ้าจะเริ่มใหม่อีกครั้งวันนี้ คุณจะทำอะไรต่างออกไปบ้าง?
    • มีความเห็นอย่างไรเกี่ยวกับความเหมาะสมของภาษาในส่วนระดับล่าง? (เช่น อยู่กับ C ต่อ ใช้ส่วนย่อยที่เรียบง่ายของ C++ หรือใช้ภาษาใหม่ ๆ ภาษาใดภาษาหนึ่ง)
    • ในเมื่อมีทรัพยากรให้ศึกษาหลากหลาย คุณทำอย่างไรให้โปรเจกต์ยังน่าสนใจโดยไม่คัดลอกโค้ดของคนอื่น?
  • ขอแสดงความยินดี! ในฐานะคนที่เคยใช้ Commodore PET 2001 ในปี 1977 มันดูเท่มาก ผมเคยเล่นกับ KolibriOS และ MenuetOSx64 แต่ก็อยากสร้าง OS ของตัวเองมาตลอด คุณทำได้แล้ว! ขอให้เดินหน้าต่อไป
  • อยากร่วมแสดงความยินดีด้วย ประทับใจในโปรเจกต์นี้มาก ผมเป็นแฟนการพัฒนา OS มาตั้งแต่วัยรุ่น และรู้สึกดีที่ได้เห็นความสำเร็จนี้เกิดขึ้นจริง อยากรู้ว่ากราฟิกซับซิสเต็มถูก initialize อย่างไร ขอให้ประสบความสำเร็จ
  • จะใหญ่และเป็นมืออาชีพแบบ GNU ไหม? :)
  • ช่วยอธิบายได้ไหมว่า compiler ตัวนี้โต้ตอบกับระบบปฏิบัติการอย่างไร โดยเฉพาะมันจัดการฟีเจอร์อย่าง struct อย่างไร รวมถึงข้อจำกัดปัจจุบันหรือแผนการปรับปรุงในด้านนี้มีอะไรบ้าง
  • น่าสนใจที่มีหลายโปรเจกต์ไปถึงหลักชัยพร้อม ๆ กัน เป็นเรื่องน่าอุ่นใจที่ยังมีคนทำงานกับคอมพิวเตอร์อย่างลึกซึ้งและแบ่งปันผลลัพธ์อยู่
    • ขอให้เดินหน้าต่อไป
  • เห็นกลิ่นอายของ Turbo C/QBasic ในตัว editor
    • ขอชื่นชมโปรเจกต์นี้