Lab 1-1 - Boot Loader
How Bootloader works
Section titled “How Bootloader works”
Clone Lab1
Section titled “Clone Lab1”
- ให้ Clone Github Repository https://github.com/luckkrit/lab_cos3105
- ไปเปิดใน Github Codespace https://github.com/codespaces
Project Structure
Section titled “Project Structure”Directorylab1
- boot.asm
Create Bootloader
Section titled “Create Bootloader”- สร้าง folder ที่ชื่อว่า lab1
mkdir lab1- เข้าไปใน folder lab1
cd lab1- สร้างไฟล์ boot.asm
touch boot.asm- copy โค๊ดตัวอย่างลงไปใน boot.asm
[org 0x7c00]mov ah, 0x0e ; BIOS Teletype function (พิมพ์อักษรออกจอ)mov al, 'H'int 0x10mov al, 'I'int 0x10
sleep: hlt jmp sleep
times 510-($-$$) db 0dw 0xaa55Compile Bootloader
Section titled “Compile Bootloader”- compile boot.asm ไปเป็น boot.img
nasm -f bin boot.asm -o boot.imgRun Bootloader
Section titled “Run Bootloader”- run boot.img ผ่าน QEMU
qemu-system-x86_64 -fda boot.img -nographic -serial mon:stdio- จะได้ข้อความ HI ออกมาทางหน้าจอ
SeaBIOS (version 1.17.0-debian-1.17.0-1ubuntu1)
iPXE (https://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+06FC8E00+06F08E00 CA00
Booting from Hard Disk...Boot failed: could not read the boot disk
Booting from Floppy...HICTRL + a + xเพื่อทำการออกจาก QEMU