เปิดตัวบน HN: ในที่สุด OS งานอดิเรกที่ผมเขียนเองก็รันได้บน IBM ThinkPad วินเทจ
(github.com/joexbayer)- 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 spacebin: ไฟล์ไบนารีboot: ซอร์สของบูตโหลดเดอร์drivers: ไดรเวอร์เคอร์เนลfs: โค้ดระบบไฟล์graphics: โค้ดประมวลผลกราฟิกinclude: เฮดเดอร์ไฟล์kernel: ซอร์สหลักของเคอร์เนลlib: ไลบรารีnet: โค้ดเครือข่ายrootfs: root file systemtests: โค้ดทดสอบ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 ความคิดเห็น
ความคิดเห็นจาก Hacker News