ดัคโกส
ระบบปฏิบัติการที่มีลักษณะเหมือนงานอดิเรกพร้อมตัวจัดการหน้าต่างกราฟิกและแอปพลิเคชันสำหรับพีซี x86 พร้อมพอร์ต Aarch64 ที่ทำงานอยู่ระหว่างดำเนินการ

การสาธิต คุณสมบัติ | แอพ พอร์ต วิธีการสร้าง
ถูกระงับไว้
การพัฒนาของ Duckos กำลังถูกระงับไว้ อย่าลังเลที่จะแยกมันและยุ่งกับมัน!
ลอง Duckos
ทำให้เป็นเสมือนจริงในพื้นที่
สามารถดาวน์โหลดรีลีสล่าสุดได้จากหน้ารีลีส อีกวิธีหนึ่งคือภาพดิสก์ของ Duckos ล่าสุดสามารถดาวน์โหลดได้จากสิ่งประดิษฐ์ของเวิร์กโฟลว์ Duckos GitHub สิ่งนี้สามารถเป็นเสมือนจริงหรือเลียนแบบโดยใช้ QEMU หรือซอฟต์แวร์ที่คุณเลือก
เลียนแบบในเบราว์เซอร์
อีกทางเลือกหนึ่งต้องขอบคุณโครงการ V86 โดยสำเนาคุณสามารถลอง Duckos เวอร์ชันในเบราว์เซอร์ของคุณ นี่คือการทำงานช้าลงมากในพื้นที่และไม่มีสำเนาของซอฟต์แวร์พอร์ตเช่น Doom คุณสามารถลองได้ที่นี่!
คุณสมบัติ
- ตัวจัดการหน้าต่าง / ผู้ประกอบการรวมชุดเครื่องมือ UI ที่ใช้มุมมองที่ใช้งานได้สำหรับการสร้างแอพ
- TCP/UDP พื้นฐานผ่านสแต็กเครือข่าย IP พร้อมซ็อกเก็ต Unix และไดรเวอร์ E1000 Ethernet
- สนับสนุนเสียงสำหรับการ์ดเสียง AC97
- พอร์ตหลายโปรแกรมเช่น DOOM ยูทิลิตี้เช่น GCC และห้องสมุดเช่น SDL
- การเชื่อมโยงแบบไดนามิกและการโหลดไบนารี
- ความสามารถในการดีบักแบบออนบอร์ดเช่น PTRACE และ Profiler การสุ่มตัวอย่าง
- ไลบรารีการเรนเดอร์ 3D ซอฟต์แวร์
- ทำงานบนฮาร์ดแวร์จริงบางตัว
- พอร์ต WIP AARCH64 ที่บูทผ่านขั้นตอนที่ 1 บน Raspberry Pi 3B :)
แผนการในอนาคต
- จบ Aarch64 พอร์ต
- ปรับปรุงระบบเคอร์เนล IPC ให้มีประสิทธิภาพมากขึ้น
- การเรนเดอร์แบบอักษรที่ดีขึ้น (ฟอนต์เวกเตอร์, ขนาดต่างกัน ฯลฯ )
- เป็นเจ้าภาพ
- ความมั่นคงและความเร็วมากขึ้น
- การใช้งานแคชระบบไฟล์ที่ดีกว่าซึ่งสามารถใช้หน่วยความจำฟรีเมื่อจำเป็นและล้างเป็นระยะเขียน
- การทดสอบหน่วยเคอร์เนลและผู้ใช้พื้นที่มากขึ้น
- เอกสารที่ดีกว่าของเคอร์เนลห้องสมุดและแอปพลิเคชัน
- เครื่องมือการดีบักเคอร์เนลและ Userspace อีกหลายตัวดังนั้นฉันจึงไม่ต้องใช้เวลาหลายชั่วโมงในการดีบักของ QEMU เมื่อใดก็ตามที่ segfault เกิดขึ้นเนื่องจากข้อผิดพลาดง่าย ๆ ที่สามารถหลีกเลี่ยงได้ด้วยกาแฟเสริมในระบบของฉัน
- การรองรับ Multiprocessor (Multicore)
- ค่อยๆเปลี่ยนโมดูลต่าง ๆ จากเคอร์เนลไปเป็นผู้ใช้สเปซ (a la microkernel)
- เพิ่มสนิมลงในส่วนผสม (?)
บริการ
รหัสสำหรับสิ่งเหล่านี้สามารถพบได้ในบริการ
- init (/bin/init): ระบบ init สำหรับ Duckos
- Pond (/bin/Pond): Window Manager/Compositor สำหรับ Duckos
- quack (/bin/quack): เซิร์ฟเวอร์เสียงสำหรับ Duckos
- ไคลเอนต์ DHCP (/bin/dhcpClient): ไคลเอนต์ DHCP สำหรับการกำหนดที่อยู่ IP
แอพพลิเคชั่น
รหัสสำหรับสิ่งเหล่านี้สามารถพบได้ในโปรแกรม/แอปพลิเคชัน
- เครื่องคิดเลข (/Apps/calculator.app): เครื่องคิดเลขพื้นฐาน
- เทอร์มินัล (/Apps/terminal.app): แอปพลิเคชันเทอร์มินัลที่ใช้ LIBUI
- การตรวจสอบระบบ (/Apps/monitor.app): การตรวจสอบระบบพื้นฐานที่แสดงหน่วยความจำและการใช้งาน CPU
- 4 ในแถว (/Apps/4Inarow.app): เกมสี่-in-a-row พื้นฐาน เล่นกับผู้เล่นสองคนหรือกับคอมพิวเตอร์
- Sandbar (/bin/sandbar): "แถบงาน" พื้นฐานที่แสดงแถวของปุ่มที่ด้านล่างของหน้าจอเพื่อเปิดแอปพลิเคชัน
- ไฟล์ (/apps/files.app): แอปพลิเคชัน FileMentary File Explorer
- Viewer (Apps/Viewer.app): ตัวแสดงสื่อพื้นฐานที่สามารถดูภาพและเล่นไฟล์เสียง
- DEMO LIB3D (APPS/3DEMO.APP): การสาธิตสำหรับไลบรารี LIB3D แสดงคิวบ์ตามค่าเริ่มต้น สามารถใช้เพื่อดูไฟล์ OBJ
- Editor (/Apps/editor.app): แอพพื้นฐานเพื่อแก้ไขไฟล์ข้อความ
- เกี่ยวกับ (/Apps/about.app): แสดงข้อมูลบางอย่างของระบบ
- Ducksweeper (/apps/ducksweeper.app): เกมหลีกเลี่ยงเป็ดที่ใช้กริด;)
โปรแกรม CLI
รหัสสำหรับสิ่งเหล่านี้สามารถพบได้ในโปรแกรม/coreutils นอกเหนือจากผู้ต้องสงสัยตามปกติ Duckos มี:
- DSH (/bin/DSH): เชลล์พื้นฐานที่มีการสนับสนุนสำหรับท่อการเปลี่ยนเส้นทางและการเรียกคืนคำสั่ง
- เปิด (/bin/open): ยูทิลิตี้เพื่อเปิดไฟล์และแอปพลิเคชันจากบรรทัดคำสั่งโดยใช้โปรแกรมที่เหมาะสม
- เล่น (/bin/play): เล่นไฟล์เสียง
- วันที่ (/bin/วันที่): แสดงวันที่และเวลา
- โปรไฟล์ (/bin/profile): โปรไฟล์แอปพลิเคชันที่กำลังทำงานและส่งออกไฟล์ที่เข้ากันได้กับ FlameGraph/SpeedScope
- คุณสามารถเรียกใช้
scripts/debugd.py บนโฮสต์ (ติดตั้ง Speedscope) และส่งพารามิเตอร์ -r ไปยังโปรไฟล์เพื่อส่งเอาต์พุตโดยตรงไปยังโฮสต์ผ่านเครือข่ายและเปิดใน Speedscope
โปรแกรมที่ใช้ข้อโต้แย้งจะให้การใช้งานที่ถูกต้องแก่คุณเมื่อคุณเรียกใช้โดยไม่มีข้อโต้แย้ง
ห้องสมุด
- LIBC: ห้องสมุด C มาตรฐาน
- LIBM: ส่วนคณิตศาสตร์ของไลบรารี C มาตรฐาน
- Libpond: ไลบรารีที่ใช้สำหรับการเชื่อมต่อกับตัวจัดการหน้าต่างบ่อ / ผู้ประกอบการ
- Libgraphics: ไลบรารีที่ให้บริการยูทิลิตี้บางอย่างสำหรับการทำงานกับกราฟิกเช่นการโหลดรูปแบบภาพ
- libui: กรอบ UI สำหรับแอปพลิเคชัน
- libtui: กรอบสำหรับแอปพลิเคชันเทอร์มินัล
- Libterm: กรอบการทำงานสำหรับการจัดการเทอร์มินัล
- Libduck: ไลบรารีที่มีคลาสและยูทิลิตี้ที่ใช้กันทั่วไปเช่นการแยกวิเคราะห์ไฟล์อาร์กิวเมนต์และการกำหนดค่า
- Libriver: ไลบรารี IPC ไม่แตกต่างจาก D-BUS ซึ่งเป็นกรอบสำหรับการเรียกใช้ฟังก์ชันระยะไกลและการส่งข้อมูล
- LIBAPP: ห้องสมุดที่ให้วิธีการดึงข้อมูลเกี่ยวกับแอปพลิเคชันที่ติดตั้งและเรียกใช้
- Libsys: ให้ Abstractions C ++ ระดับสูงกว่าสำหรับการดึงข้อมูลระบบคือจาก Procfs
- Libsound: จัดเตรียมเฟรมเวิร์กสำหรับแอปพลิเคชันเสียงและเชื่อมต่อกับเซิร์ฟเวอร์เสียง quack
- LIB3D: ให้ฟังก์ชั่นการเรนเดอร์ 3D ซอฟต์แวร์พื้นฐาน
- libmatrix: ให้บริการยูทิลิตี้คณิตศาสตร์เมทริกซ์
- libexec: ให้การสนับสนุน ELF
- libdebug: ให้ฟังก์ชั่นการดีบัก
พอร์ต
พอร์ตสามารถติดตั้งได้โดยการเรียกใช้พอร์ตที่มาพร้อมกับพอร์ตที่ต้องการเป็นอาร์กิวเมนต์ การพึ่งพาที่ต้องการจะถูกสร้างและติดตั้ง
พอร์ตที่น่าตื่นเต้นบางอย่างคือ:
- การลงโทษ
- คุณจะต้องจัดหา Doom Wadfile ของคุณเองและวางไว้ในไดเรกทอรี /apps/doom.app/ (ดูคำแนะนำการสร้างสำหรับรายละเอียดเพิ่มเติม)
- binutils
- GCC
- SDL2
- นอกจากนี้ SDL2_GFX, SDL2_IMAGE และ SDL2_TTF
การสร้าง / วิ่ง
- ดูคำแนะนำ MD สำหรับคำแนะนำ
การบริจาค
- ดูการสนับสนุน. MD สำหรับข้อมูลเกี่ยวกับวิธีการมีส่วนร่วมใน Duckos
การให้เครดิต
- Mirror of Liballoc 1.1 ของ Blanham สำหรับการใช้งานการจัดสรร Kernel Heap (เป็นโดเมนเปิดดังนั้นหากคุณต้องการใช้มันฉันขอแนะนำอย่างยิ่ง)
- Serenityos สำหรับแรงบันดาลใจมากมาย
- Gohufont สำหรับแบบอักษร (ได้รับอนุญาตภายใต้ WTFPL)
ใบอนุญาต