การสร้างระบบปฏิบัติการตั้งแต่เริ่มต้น ระบบปฏิบัติการนี้สร้างขึ้นสำหรับ I386+ 32 บิต Intel x86 แพลตฟอร์มอื่น ๆ อาจไม่ทำงานและยังไม่ได้ทดสอบ
เพียงแค่พิมพ์ make run ซึ่งจะสร้างไฟล์ทั้งหมดที่จำเป็นและเรียกใช้ใน Emu emulator MakeFile เป็นความโกลาหลดังนั้นคำแนะนำเกี่ยวกับ makefiles ที่ดีกว่าจะได้รับการชื่นชม
nasm - สำหรับการประกอบ bootloadergcc - สำหรับการรวบรวมเคอร์เนลและรวมห้องสมุด Cld - สำหรับการเชื่อมโยงไฟล์เคอร์เนลทั้งหมดเข้าด้วยกันobjcopy - สำหรับการสร้างเคอร์เนลไบนารีจากไฟล์เอลฟ์ar - สำหรับการสร้างไลบรารีไลบรารี Cmake - เรียกใช้ makefileqemu - เพื่อเรียกใช้ระบบปฏิบัติการWindows Linux subsystem :cmd - สำหรับการใช้คำสั่ง Windows ในเทอร์มินัลระบบย่อย Linuxpartcopy - Windows CMD สำหรับการสร้างภาคการบูตimdisk - Windows CMD สำหรับการสร้างและติดตั้งภาพฟลอปปี้copy - Windows CMS สำหรับการคัดลอกไฟล์ไปยังภาพฟลอปปี้ ฉันขอโทษที่สิ่งนี้จะทำร้ายผู้คนให้เห็นว่าใช้ Windows และ Linux ด้วยกันดังนั้นหากใครมีคำแนะนำและ/หรือ MakeFile ที่ดีกว่าที่ใช้งานได้โปรดแจ้งให้เราทราบ MakeFiles ใหม่สำหรับฉันดังนั้นการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นคุณสามารถแสดงความคิดเห็นพวกเขาเพื่อที่ฉันจะได้เข้าใจสิ่งที่เกิดขึ้น โดยเฉพาะอย่างยิ่ง makefile ที่เพิ่งใช้คำสั่ง Linux จะดีที่สุด ฉันได้ลองใช้ dd เพื่อสร้างภาคการบูต แต่ไม่สามารถทำงานได้อย่างถูกต้องดังนั้นวิธีการขี่คำสั่ง Windows บางอย่างจะดี คุณสามารถส่งอีเมลถึงฉันได้ที่ [email protected] หากคุณมีการเปลี่ยนแปลงใด ๆ
คุณสามารถเรียกใช้ make debug ซึ่งจะสร้างไฟล์ทั้งหมดที่จำเป็นและเรียกใช้ใน EMU emulator จากนั้นคุณสามารถแนบดีบักเกอร์ GDB โดยการเพิ่มบรรทัดลงใน. gdbinit หรือพิมพ์คำสั่งโดยตรง:
set architecture i386
target remote localhost:1234
br *0x7c00
c
สิ่งนี้จะตั้งค่าสถาปัตยกรรมเป็น 16 บิต x86 เนื่องจากนี่คือสิ่งที่ bootloader ถูกเข้ารหัสเพื่อเริ่มต้นด้วย จากนั้นเชื่อมต่อกับตัวจำลองบนพอร์ต 1234 (ค่าเริ่มต้นสำหรับ QEMU) จากนั้นตั้งค่าจุดพักที่จุดเริ่มต้นของ bootloader เริ่มต้นระบบปฏิบัติการและหยุดที่จุดเริ่มต้นของ bootloader
หากต้องการแตกที่จุดเริ่มต้นของเคอร์เนลที่อยู่ที่โหลดไว้ที่คือ 0x100000 ดังนั้นแทนที่ br *0x7c00 ด้วย br *0x100000
คุณเรียกใช้ระบบปฏิบัติการของฉันตามความเสี่ยงของฮาร์ดแวร์จริง ไม่มีการรับประกันว่าฮาร์ดแวร์จะไม่ได้รับความเสียหายจากการเรียกใช้ระบบปฏิบัติการ ดังนั้นเรียกใช้ในเครื่องเสมือนจริงหรืออีมูเลเตอร์เพื่อความปลอดภัย