ระบบปฏิบัติการพีซีขนาดเล็ก 32 บิต X86 ที่ใช้เคอร์เนลเสาหินที่มีคุณสมบัติเหมือน UNIX บางส่วนเขียนในชุดย่อยของ C ++
โปรดทราบ: เอกสารเมตานี้ยังคงเป็นงานที่กำลังดำเนินอยู่ :-)
ระบบปฏิบัติการเดสก์ท็อปขนาดเล็กที่มีคุณสมบัติเหมือน UNIX ซึ่งเขียนไว้ในชุดย่อย C ++ ที่เข้าใจได้สำหรับนักเรียน TI ปีแรกที่ Hogeschool Utrecht เช่นที่อาจใช้ในบริบททางการศึกษา
หากเป็นไปได้ประสิทธิภาพและคุณสมบัติจะถูกเสียสละเพื่อลดความซับซ้อนและเพิ่มความสามารถในการอ่าน สิ่งนี้จะช่วยให้ซอฟต์แวร์เป็นที่เข้าใจได้มากขึ้นสำหรับการใช้งานในบริบททางการศึกษา อย่างไรก็ตามวิชาที่สำคัญจากระบบปฏิบัติการที่ Courses ที่ Hogeschool Utrecht ควรดำเนินการ
แม้ว่าควรบูตได้ดีบนฮาร์ดแวร์จริง Rikaios ได้รับการพัฒนาด้วยเครื่องจำลองหรือเครื่องเสมือนจริง - ฮาร์ดแวร์ที่รองรับนั้นถูก จำกัด โดยเจตนาเพื่อความเรียบง่าย
ข้อจำกัดความรับผิดชอบที่จำเป็น: ระบบปฏิบัติการอาจละลายเมนบอร์ดของคุณและกินเมาส์สัตว์เลี้ยงของคุณเมื่อทำงานบนฮาร์ดแวร์จริงไม่มีการรับประกัน Yada Yada โปรดอ่านข้อจำกัดความรับผิดชอบในไฟล์ใบอนุญาตก่อนที่จะเรียกใช้สิ่งนี้ในคอมพิวเตอร์ครอบครัวของคุณ
ดูไดเรกทอรี ./aux อย่าคาดหวังอะไรที่ฉูดฉาด - ตอนนี้มันคือการจับเทอร์มินัลอนุกรมทั้งหมด!
ระบบปฏิบัติการที่มีชุดคุณสมบัติปัจจุบันได้รับการพัฒนาในระยะเวลาประมาณ 6 เดือนตั้งแต่เดือนกุมภาพันธ์ถึงกรกฎาคม 2019
Rikaios ยังไม่ได้ใช้แทน Linux เต็ม ;-)
มีคุณสมบัติบางอย่างที่ต้องการงานหรือกำลังทำงานอยู่ (ดูส่วนที่มีส่วนร่วม):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/โปรดทราบว่าเป้าหมายของ Rikaios คือการยังคงมีขนาดเล็ก: เครือข่ายสแต็คหรือไดรเวอร์ USB อาจไม่ได้รับการพิจารณาสำหรับการใช้งาน
คุณต้องติดตั้งซอฟต์แวร์นี้ (บนโฮสต์ Linux-ish) เพื่อสร้างและเรียกใช้ Rikaios:
หมายเลขเวอร์ชันควรเป็นล่าสุดโดยเฉพาะอย่างยิ่งสำหรับ Clang, LLVM และ LLD มีการจัดเตรียมไฟล์ Arch Linux (ขอบคุณ @peikos) ซึ่งรวมถึงการพึ่งพาที่เข้ากันได้ข้างต้น
คุณสามารถใช้ GCC แทน Clang/LLVM ได้หากคุณต้องการหากคุณมี GCC Cross-Toolchain สำหรับ I686-ELF ดู src/kernel/Makefile สำหรับรายละเอียดเกี่ยวกับวิธีการสลับเชนเครื่องมือ
| ไดเรกทอรี | คำอธิบาย |
|---|---|
/src/boot | bootloader (bootsector และ stage2) |
/src/boot/utils | ตัวติดตั้ง bootloader |
/src/kernel | รหัสเคอร์เนล |
/src/kernel/include | ส่วนหัวเคอร์เนลที่สัมผัสกับ Userland |
/src/kernel/include/os-std | ไลบรารีมาตรฐาน OS (คณิตศาสตร์, คอนเทนเนอร์ ฯลฯ ) |
/src/user | ซอฟต์แวร์ Userland |
/src/user/libsys | ห้องสมุดระบบ Userland C ++ |
/src/disk | (FAT32) ระบบไฟล์ที่มีอยู่สำหรับระบบปฏิบัติการ |
| makefile | คำอธิบาย |
/src/Makefile | สร้างทุกอย่างสร้างดิสก์บูตและรันอีมูเลเตอร์ |
/src/boot/Makefile | สร้าง bootloader และตัวติดตั้ง |
/src/kernel/Makefile | สร้างเคอร์เนล |
/src/user/Makefile | สร้าง Userland |
ทุก makefile ด้านบนรวม (ถ้ามี) ไฟล์ Makefile.local ในไดเรกทอรีเดียวกัน สิ่งนี้ช่วยให้คุณสามารถแทนที่ชื่อและเส้นทางที่ใช้งานได้ของ Toolchain และเพื่อเพิ่มเป้าหมายเพิ่มเติม
อย่าลืมที่จะผ่าน -j 4 (หรือสูงกว่า) เพื่อเพิ่มประสิทธิภาพการสร้างในระบบมัลติคอร์
สิ่งนี้จะสร้างเคอร์เนลและ bootloader และสร้างดิสก์บูตที่ทำงานด้วย qemu virtualizer / emulator การเชื่อมต่ออนุกรมกับระบบปฏิบัติการถูกเปิดในเทอร์มินัลที่คุณเรียกใช้คำสั่ง Make
ทำดิสก์ &&
ปัจจุบันไดรเวอร์ OS Shell และ TTY ไม่มีความสามารถในการแก้ไขบรรทัดที่ซับซ้อนและการสนับสนุนประวัติความเป็นมาของบรรทัดคำสั่ง เพื่อความสะดวกคุณสามารถห่อ QEMU ด้วย rlwrap เพื่อใช้ประโยชน์จากสิ่งอำนวยความสะดวกในการแก้ไขบรรทัดในด้านโฮสต์ของสิ่งต่าง ๆ (แนะนำอย่างยิ่ง):
ทำดิสก์ && rlwrap -a ทำให้รัน
ในการทำงานใน VirtualBox ให้ทำสิ่งต่อไปนี้:
vdi :ทำ vdi
แล้ว:
disk.vdi เป็นดิสก์ IDEตอนนี้คุณควรจะสามารถเริ่ม VM ผ่าน VirtualBox ได้
โปรดทราบว่า I/O อนุกรมอาจเป็นเรื่องยากที่จะไปทำงาน เวอร์ชันระบบปฏิบัติการปัจจุบันไม่ได้โต้ตอบกับหน้าจอและแป้นพิมพ์/หนูมากนัก
เมื่อคุณมีระบบและทำงานแล้วคุณควรเห็นพรอมต์ในเทอร์มินัลอนุกรม (หากคุณเชื่อมต่อจอภาพหน้าจอสาดอาจปรากฏขึ้นเช่นกัน) คุณสามารถโต้ตอบกับระบบปฏิบัติการโดยใช้เทอร์มินัลอนุกรม ในการเริ่มต้นให้ลองใช้คำสั่ง help
มีโปรแกรมยูทิลิตี้จำนวนมากบนดิสก์ ดูโปรแกรมที่ติดตั้งโดยพิมพ์ ls bin (สมมติว่าคุณยังอยู่ในไดเรกทอรี /disk0p1 ) โปรแกรม ELF ทั้งหมดใน /disk0p1/bin สามารถดำเนินการเป็นคำสั่งได้โดยไม่ต้องพิมพ์เส้นทางเต็ม (คิดว่าเป็นไดเรกทอรี $PATH โดยนัย) ในทำนองเดียวกันไฟล์ ELF ใด ๆ ในไดเรกทอรีการทำงานเช่น forth.elf สามารถเรียกใช้ได้เพียงแค่พิมพ์ชื่อของพวกเขา
หากต้องการดูว่ายูทิลิตี้ทำงานอย่างไรหรือเพื่อเพิ่มของคุณเองให้ดูไฟล์ readme ในไดเรกทอรี src/user ของที่เก็บนี้
การกด ESC บนแป้นพิมพ์ (ในหน้าต่างวิดีโอไม่ใช่เทอร์มินัลอนุกรม) จะเปิดใช้งานเคอร์เนลเชลล์ซึ่งเป็นยูทิลิตี้ดีบั๊กในตัว สิ่งนี้สามารถใช้ในการพิมพ์สถิติและข้อมูลต่าง ๆ เกี่ยวกับกระบวนการและหน่วยความจำที่ใช้งานได้ (ดูคำสั่งวิธีใช้ความ help เมื่ออยู่ใน Kshell)
คุณสามารถดีบักเคอร์เนลด้วย QEMU หรือ BOCHS:
ดู ./src/gdbrc สำหรับตัวเลือกการเริ่มต้น (คุณอาจแทนที่เส้นทางไฟล์นี้ใน Makefile.local )
ทำดิสก์ && ทำการดีบัก
ดู ./src/bochsrc สำหรับตัวเลือกการกำหนดค่า (คุณอาจแทนที่เส้นทางไฟล์นี้ใน Makefile.local )
ทำดิสก์ && ทำ bochs
ld.lld: ข้อผิดพลาด: ไม่พบไลบรารี -lclang_rt.builtins -i386
locate clang_rt.builtins )kernel/Makefile.local โดยมีเนื้อหา: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib ฉันเข้าใจว่าเอกสารที่เปิดเผยต่อสาธารณชนมี จำกัด ในปัจจุบันดังนั้นโปรดอย่าลังเลที่จะเปิดปัญหาหรือส่งอีเมลถึงฉัน
กรุณาเปิดปัญหา GitHub / Gitlab เพื่อให้เราสามารถตรวจสอบให้แน่ใจว่าไม่มีความพยายามซ้ำซ้อน :-)
กระบวนการสำหรับเรื่องนี้ควรได้รับการจัดระเบียบในอีกไม่กี่สัปดาห์ข้างหน้า - มีปัญหา / คุณสมบัติเปิดบางอย่างที่สามารถทำงานได้อย่างแน่นอนด้วยระดับความยาก / ขนาดที่แตกต่างกัน ฉันจะจัดทำเอกสารนี้เร็ว ๆ นี้™
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 โปรดดู./license สำหรับข้อมูลเพิ่มเติม
ระบบปฏิบัติการนี้เขียนตั้งแต่เริ่มต้นโดยมีข้อยกเว้นต่อไปนี้เท่านั้น: