ตัวอย่างพื้นฐานของการบูตด้วยด้วงและขอโหมดกราฟิก 32 บิตด้วย MultiBoot 1024 x 768 x 32
จุดประสงค์ของสิ่งนี้เป็นตัวอย่างพื้นฐานของการใช้การบูตด้วงและขอโหมดกราฟิกด้วย Multiboot จากนั้นทำฟังก์ชั่นการวาดภาพพื้นฐานบางอย่าง
รวมอยู่ในแบบอักษรที่ไม่มีความภักดีโดยใช้ตัวอย่างเพื่อให้คุณสามารถเขียนสิ่งต่าง ๆ ลงในหน้าจอในระบบปฏิบัติการของคุณ
แนวคิดก็คือมันจะเป็นข้อมูลอ้างอิงสำหรับผู้ที่สร้างระบบปฏิบัติการของตัวเองและต้องการเพิ่มกราฟิกลงในนั้นและต้องการใช้ Multiboot เพื่อหาพวกเขาแทนที่จะเข้ารหัสขั้นตอนที่จำเป็นทั้งหมด
ทดสอบและทำงานกับ VirtualBox 7.0 และ QEMU ใน Windows 11 โดยใช้ WSL 2
MultiBoot ทำงานโดยการตั้งค่าเฉพาะที่ออฟเซ็ตเฉพาะในไฟล์ที่เรียกใช้งานได้ดังนั้นเราจึงขอโหมดกราฟิกด้วยสิ่งต่อไปนี้:
.set WIDTH , 1024 / * requested width * /
.set HEIGHT , 768 / * requested height * /
.set DEPTH , 32 / * requested depth * /GRUB จะอ่านค่าเหล่านั้นและตั้งค่าโหมดกราฟิกก่อนส่งการดำเนินการไปยังแอปพลิเคชันของเราดังนั้นเมื่อแอปพลิเคชันของเราเริ่มต้นหากโหมดที่ร้องขอนั้นถูกต้องมันจะอยู่ในโหมดนั้นแล้ว
ด้วงจะผ่านส่วนหัว Multiboot ที่มีโหมดกราฟิกที่ตั้งค่าไว้และค่าที่น่าสนใจอื่น ๆ
FrameBuffer_addr เป็นที่ที่คุณจะเขียนการดำเนินการกราฟิกของคุณ
สิ่งที่ควรทราบขอโหมดกราฟิกที่ถูกต้องในเมนู GRUB [https://askubuntu.com/questions/16042/how-to-get-to-the-grub-menu-at-boot-time] CLI videoinfo จะแสดงรายการโหมดที่มีอยู่และถูกต้อง
ฉันขอแนะนำให้ทำงานกับกราฟิก 32 บิตมันง่ายกว่าและฉันคิดว่าเร็วหรือเร็วกว่าตัวเลือกอื่น ๆ ก่อนที่คุณจะไปคิด แต่กราฟิก 8 บิตจะเร็วขึ้นวัดได้
ฟอนต์ 8x8 พื้นฐานถูกสร้างขึ้นใน Templeos โดยใช้ตัวอย่าง Fonted
จำเป็นต้องสร้างภายใต้ Linux (ฉันลอง WLS แต่มันไม่ได้สร้างภาพ ISO) สคริปต์จะสร้าง ISO
g++
binutils
libc6-dev-i386
VirtualBox
grub-legacy
xorriso
สร้างเครื่องเสมือนใหม่ใน VirtualBox Mount iso boot
มันไม่มีไดรเวอร์สำหรับสิ่งใดไม่มีการจัดการหน่วยความจำไม่มีแป้นพิมพ์หรือเมาส์ io ไม่ใช่ดิสก์ io ไม่มีอะไรเลย
sudo apt ติดตั้ง gcc g ++ ทำ grub-pc-bin xorriso
เมื่อกำหนดค่า VirtualBox แล้วจะมีโปรไฟล์ที่ฉันสร้างขึ้นภายใต้ VirtualBox รุ่นก่อนหน้าและเพิ่งทดสอบซ้ำใน 7.0 ในรุ่น
จากพรอมต์คำสั่ง (vboxManage.exe จะถูกติดตั้งในตำแหน่งอื่นสำหรับคุณ) /mnt/d/virtualbox/vboxmanage.exe startvm multiboot