Feral เป็นเคอร์เนลเสาหินเช่นเดียวกับโครงการงานอดิเรกขนาดเล็กเพื่อสร้างระบบปฏิบัติการที่สมบูรณ์ตั้งแต่เริ่มต้นแม้ว่าจะช้ามาก
Feral ได้รับการออกแบบมาเพื่อทำงานบนระบบพีซีล่าสุดด้วย BIOS ที่เข้ากันได้อย่างสมเหตุสมผล สำหรับตอนนี้ Feral ไม่รองรับ UEFI แม้ว่าพอร์ตกำลังดำเนินการอยู่
ในตอนนี้ Feral นั้นจะมีภาพ 8259a สองภาพที่มีอยู่ในไมโครคอมพิวเตอร์ที่เข้ากันได้กับพีซีแบบดั้งเดิม บน micros ที่ทันสมัยเซาท์บริดจ์ของคุณเช่น x399 หรือ x470 อาจมีสิ่งที่เข้ากันได้ ในอนาคต Feral ตั้งใจที่จะก้าวไปสู่การใช้ประโยชน์จากคุณสมบัติโปรเซสเซอร์ใหม่เช่น APIC และในที่สุด XAPIC และ X2APIC นอกจากนี้ Feral จะรองรับการประมวลผลแบบสมมาตรแบบสมมาตร
ปัจจุบันการทดสอบฮาร์ดแวร์รวมถึงพีซีที่มีเมนบอร์ด 4 "x4" และ N3700 CPU ("Braswell") ด้วย RAM 4GB แล็ปท็อป 17Z ที่มี 2500U (Zen 1) และในอนาคต
ในอนาคต Feral มีจุดประสงค์เพื่อทำงานบน Aarch64 (BCM2711), Power (SFORZA) และ RV64GC (U540) ฮาร์ดแวร์โดยมีพอร์ตที่เขียนไว้ที่ไหนสักแห่งในลำดับนั้น
สถาปัตยกรรม Feral เป็นเคอร์เนลเสาหินที่เรียบง่ายซึ่งสถาปัตยกรรมมีความคล้ายคลึงกันมากมายกับ Mach และ Plan 9 โดยเฉพาะอย่างยิ่งหลัง Feral ชอบที่จะวางฟังก์ชั่นส่วนใหญ่ลงในไดรเวอร์แทนที่จะอบลงในเคอร์เนลโดยตรงเพื่อให้มีความยืดหยุ่นมากขึ้นและเปิดเผยทรัพยากรเป็นที่ตั้งเครือข่ายและซ็อกเก็ตเพื่อสะท้อนกระบวนการและการจัดเก็บข้อมูลที่ทันสมัยอย่างไร
ตัวอย่างเช่นในการเปิดไฟล์หนึ่งข้อความค้นหาเซิร์ฟเวอร์ไฟล์ซึ่งเป็นกระบวนการที่เคอร์เนลเป็นเจ้าของซึ่งเปิดซ็อกเก็ตที่ยอมรับการรับส่งข้อมูลที่เข้ามา จากนั้นสามารถอ่านได้จากหรือเขียนขึ้นอยู่กับว่าซ็อกเก็ตเปิดอย่างไร
แนวคิดหลักคือการใช้ความยืดหยุ่นและความยืดหยุ่นของ microkernels และต่อกิ่งลงในสถาปัตยกรรมเคอร์เนลเสาหินแบบดั้งเดิมที่เสียสละความสามารถในการทำสิ่งต่าง ๆ เช่นรีสตาร์ทไดรเวอร์ระบบไฟล์ในขณะที่ยังคงรักษาผลประโยชน์เช่นสถาปัตยกรรมที่สะอาด
Feral ถูกสร้างขึ้นสำหรับฉันเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการออกแบบระบบปฏิบัติการในขณะที่ออกจากแบบดั้งเดิม "Make Other *Nix Clone" แบบดั้งเดิม: ไม่มีอะไรผิดปกติกับสิ่งนั้น แต่ฉันต้องการสำรวจวิธีการที่แตกต่างกันในการเปิดเผยคุณสมบัติฮาร์ดแวร์และระบบไปยังโปรแกรมนอกเหนือจากการสร้างไฟล์ที่ไหนสักแห่ง นอกจากนี้ฉันต้องการสำรวจว่าระบบปฏิบัติการใหม่นั้นแตกต่างกันอย่างไรจากระบบดั้งเดิมในขณะที่ง่ายต่อการพอร์ตซอฟต์แวร์ที่มีอยู่
ในขณะที่ภาพนี้ล้าสมัยเนื่องจากระบบย่อยเหล่านี้บางอย่างควรถูกดูดซึมเข้าไปในเคอร์เนลส่วนใหญ่จะถูกต้องตามความตั้งใจ: 
ตอนนี้ Feral ใช้ cmake เพื่อสร้าง สคริปต์ยูทิลิตี้จะรวมอยู่ในกรณีทั่วไปของการสร้างสำหรับ x86_64 และ qemu ใน vm_test.sh และด้วย GDB Stub ที่เปิดใช้งานใน vm_test_gdb.sh
สำหรับการสร้างด้วยตนเองคุณต้องใช้ Clang เป็นคอมไพเลอร์ C ของคุณ สำหรับเป้าหมาย X86-64-PC โดยไม่ต้องรองรับ EFI คุณสามารถใช้ไฟล์เครื่องมือ CMAKE/X86_64-PC.CMAKE กับ -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-pc.cmake พารามิเตอร์ สิ่งนี้จะสร้างเคอร์เนลที่เหมาะสมเป็น 'Feralker' และขั้นตอนเพิ่มเติมบางอย่างจะต้องใช้เพื่อสร้างไฟล์ ISO ที่สามารถบู๊ตได้ ดูไฟล์ vm_test.sh สำหรับรายละเอียด
Feral ควรทำงานได้อย่างสะดวกสบายบนพีซีใด ๆ ที่ใช้ชุดคำสั่ง X86-64 (เช่นอย่างน้อย K8 CPU) และอย่างน้อย 1GB ของหน่วยความจำระบบ ข้อกำหนดของหน่วยความจำนี้จะลดลงในอนาคต แต่สำหรับตอนนี้จำเป็นต้องทำให้สิ่งต่าง ๆ ง่ายขึ้นเล็กน้อยเมื่อตั้งค่าเคอร์เนลในขั้นต้น
Feral คาดว่าจะมีอะแดปเตอร์แสดงผลที่เข้ากันได้กับ VGA สำหรับพีซี ดังนั้นคุณจะต้องใช้อะแดปเตอร์วิดีโอบางรูปแบบที่สามารถทำงานในโหมด VGA ได้ ซีพียูและ GPU ระดับผู้บริโภคส่วนใหญ่ใช้สิ่งนี้อย่างน้อยหนึ่งใน GPU ของพวกเขา
ปัจจุบัน Feral ได้รับการทดสอบโดยเฉพาะบนเครื่องเสมือนที่อยู่ด้านบนของ Zen 1 1950x และเครื่องเซน 1 ขนาดเล็กจำนวนหนึ่ง มันเป็นไปได้ที่ดุร้ายจะทำงานได้ดีกับฮาร์ดแวร์อื่น ๆ แต่ไม่ได้ทดสอบ
โฟลเดอร์ควรมีชื่อในวิธีที่จะหลีกเลี่ยงอักขระที่ไม่จำเป็น (เช่น 'Inc' vs 'รวม') เช่นเดียวกันสำหรับโมดูลที่กำหนดชื่อโฟลเดอร์ควรสะท้อนคำนำหน้าเช่นการจัดการหน่วยความจำอยู่ใน "MM" และการจัดการวัตถุอยู่ใน "OB" และอื่น ๆ
ฟังก์ชั่น thaat ควรถูกส่งออกระหว่างโมดูลโดยทั่วไปควรมีการตั้งชื่อการประชุมของ (ระบบย่อย) (ฟังก์ชั่นวัตถุประสงค์) (เลือกประเภท argument-type) เช่น "kestartprocessor" เมื่อฟังก์ชั่นเป็นสถาปัตยกรรมเฉพาะควรนำหน้าด้วยสถาปัตยกรรมที่เป็นของเช่น "Aarch64startpaging ()" หรือ "x86setupidt ()" สำหรับรายละเอียดเพิ่มเติมดูการจัดรูปแบบ txt
นอกจากนี้ฟังก์ชั่นควรใช้มาโครใน, inout, opt, ฯลฯ เพื่อระบุอย่างชัดเจนว่าฟังก์ชั่นทำอย่างไรกับอาร์กิวเมนต์ แมโครเหล่านี้ขยายไปถึงสิ่งใดและอยู่ที่นั่นเพื่อช่วยในเอกสาร
เคอร์เนลหลักที่มีน้ำหนักเบา ฟังก์ชั่นส่วนใหญ่ในไดรเวอร์ กระบวนการสื่อสารกับ libos (syscalls ไปที่ตารางเคอร์เนลซึ่งบอกคนขับ Libos ว่าสิ่งนี้ถูกเรียกว่า)
ไดรเวอร์จัดการการโทรของระบบเพื่อให้รันโปรแกรม "ต่างประเทศ" ที่ไม่มีการแก้ไขเช่น GNU Mach เวอร์ชัน GCC หรือเกม DOS ที่ทุกคนชื่นชอบตั้งอยู่บนดาวอังคาร
เคอร์เนลที่มีเสถียรภาพภายใน ABI ผู้ขับขี่บุคคลที่สามควรทำงานในการแก้ไขเล็กน้อย ใช้ตัวชี้ PNEXT สำหรับการเปลี่ยนแปลงที่ร้ายแรงใด ๆ
ระบบไฟล์ที่มีความเสถียรและมีการกำหนดเวอร์ชันรวมถึง deltree ที่ไม่ได้ตั้งใจจะไม่ลบทุกอย่างตลอดไป สมมติว่าผู้ใช้ไม่สำรองข้อมูล
(ในที่สุด) สร้างไดรเวอร์ที่สอดคล้องกับ Vulkan อย่างเต็มที่สำหรับตระกูล "Vega" และ "Navi" ของ GPU
สนับสนุนส่วนขยายการจำลองเสมือน x86-64 ("Pacifica")
บางอย่างเช่นคุก chroot หรือคอนเทนเนอร์เพื่อให้ดุร้ายเป็นประโยชน์สำหรับการทำงานของเซิร์ฟเวอร์
สิ่งที่สนุกในการทำงานที่อาจมีประโยชน์ในวันหนึ่ง?