Building Bootloader – Preparaing for the implementation
There are several programs needed for this tutorial.
This is the assembler used for this tutorial. You can download it from http://nasm.us
This is an emulator. We are going to test the bootloader on x86 hardware using QEMU.
Emulator vs. Virtual Machine
Some people might not have concrete knowledge of differences between Virtual Machine (VM) and emulator. Virtual machine uses hardware resources directly, but it can separate environment with the host machine by using virtualized interfaces. On the other hand, emulator accurately reproduce some hardware behavior.
Since bootloader is closely related with hardware’s behavior, we are going to need to use an emulator for x86 architecture.
This GNU debugger is going to be useful when you debug bootloader because it is especially harder to debug than other program. For example, the most basic debugging skill, printing results on screen, is not available until you implement the printing function using BIOS interrupt.