I am amidst writing a kernel; before writing such a complicated thing, I thought it'd, not only, be helpful but also imperitive to do some theoretical reading of kernels, bootloaders, registers, BIOS, etc.
This article says (and I quote):
The boot sector loader.
This loads the first 512-byte sector from the boot disk into RAM and jumps to it.
Then it goes on to say:
The first sector of a diskette can be loaded at address 0000:7C00.
So, the boot-sector loader loads the 512 bytes of the data of a diskette which resides at the memory address 0x7C00 (if I am right) into the RAM; now, my questions are:
- Since the machine is booting up, the RAM has to be empty, so the bootloader it loaded at 0x0000 of the RAM?
- (Not really related to this context) Is there any way of getting a source code explanation for the GRUB Legacy (v .9x) bootloader?
- Lastly, any articles/books I should read to get myself familiar with Kernels, etc?
I have 6 years of programming experience, but they are all with high-level languages on systems which is made possible by a kernel.
Any help is appreciated. Thanks! :)
boot sector loader
is the code in the BIOS(after a power on/reset) that reads theboot sector
(first 512 bytes) from the disk and will copy it to0000:7c00
. Once the boot sector is loaded the BIOS willjmp
to0000:7c00
where the boot sector code will begin executing. – Kilimanjaro