ระบบปฏิบัติการครั้งแรกของฉันเชื้อเพลิงโดยคาเฟอีน
นี่คือโครงการการเรียนรู้เราจะเห็นว่ามันไปไกลแค่ไหน เมื่อฉันพูดว่า "เชื้อเพลิงโดยคาเฟอีน" ฉันหมายถึงคาเฟอีนอย่างแท้จริงไม่ใช่กรอบการสร้างระบบปฏิบัติการใหม่ แต่นั่นจะเป็นชื่อที่ยอดเยี่ยมสำหรับกรอบการสร้างระบบปฏิบัติการ
ฉันกำลังดำเนินโครงการนี้ใน Ubuntu18.04 LTS ฉันใช้การสร้างระยะไกลโดยใช้ Visual Studio บนพีซี แต่คุณสามารถใช้ MakeFile ได้โดยตรงบนเครื่อง Ubuntu ระบบปฏิบัติการของฉันกำลังทำงานอยู่ใน VM ใน Ubuntu ฉันจะไม่แนะนำการเรียกใช้ "บนโลหะ" นี้เพราะความผิดพลาดสามารถสร้างอิฐคอมพิวเตอร์โดย permintaly การเปลี่ยนแปลงข้อมูล BIOS และ ROM ต่อไปนี้เป็นแพ็คเกจที่ฉันติดตั้งเพื่อให้โครงการนี้ดำเนินต่อไป:
MakeFile จะสร้างไฟล์ ISO ในตำแหน่งเดียวกันที่มีชื่อเดียวกันทุกครั้งที่เรียกใช้ ใน VirtualBox ฉันสร้าง VM ชื่อ CaffeineOS ด้วย RAM 512MB ไม่มี VDK/VMDK และด้วยสื่อออพติคอลที่ชี้ไปที่ไฟล์ ISO และกล่อง "Live CD"
แม้แต่ไฟล์ ISO ก็จะเปลี่ยนไปในแต่ละการสร้าง VM ก็จะไปยังตำแหน่งเดียวกันเสมอเพื่อค้นหา ISO และบูตจากมัน
ตอนนี้ฉันมี kernal ที่บูตได้ มันไม่ได้ทำอะไรนอกจากพิมพ์ชื่อ OS จนถึงตอนนี้ฉันได้ติดตาม Totorials แต่มีน้อยมากที่ผ่านมาจุดนี้ ฉันไม่พบใช้ C ++, C. เท่านั้น
ฉันกำลังค้นคว้าว่าอะไรคือส่วนต่อไปของเคอร์เนลที่ฉันควรสร้างต่อไป ฉันเดาว่าเป็นหน่วยความจำแบบไดนามิก ขณะนี้ฉันได้รับเอาต์พุตโดยใช้ที่อยู่ VGA เพื่อเขียนข้อความไปยังหน้าจอ ฉันยังไม่ได้หาอินพุต อย่างที่ฉันพูดบทเรียนไม่ผ่านระบบปฏิบัติการ "Hello World" ที่สามารถบูตได้
ฉันตรวจพบ RAM และได้รับค่าที่ทำให้ sence (ต่ำ mem ~ = 640kb, ต่ำ+hi ~ = 512mb) ดังนั้นฉันจึงมีความสุขจริงๆ ฉันยังสามารถรับสตริงจาก bootloader โดยการหล่อ UINT32_T ลงใน const char* และอาร์เรย์การพิมพ์ที่ตัวชี้ ฉันใช้ข้อมูลจำเพาะ multiboot.h จากไซต์ gnu.org ไฟล์ multiboot.h มี emmpty struct และการประกาศ typedef ที่ตรงกับบล็อกของข้อมูลที่ boot loader (Grub2.02) ส่งผ่าน MultiBoot_Info_T* โดยการรู้บล็อกฉันสามารถโยนพอยน์เตอร์ลงในข้อมูลที่ฉันต้องการจาก bootloader