Operating system – the theory behind the boot process

I downloaded several bootloaders from osdev and successfully loaded a kernel. But now I want to learn the theory behind the bootloader. I want to know why the system starts and everything behind the bootloader code . Can anyone give me a link or link to a book? Thanks in advance.
The system is x86.
https://pdos.csail.mit.edu/6.828/ 2014/xv6/book-rev8.pdf

In Appendix B, it gives a brief overview in the first paragraph:

When an x86 PC boots, it starts executing a program called the BIOS, which is stored in non-volatile memory on the motherboard. The BIOS’s job is to prepare the hardware and then transfer control to the operating system Specifically, it transfers control to code loaded from the boot sector, the first 512-byte sector of the boot disk. The boot sector contains the boot loader: instructions that load the kernel int o memory. The BIOS loads the boot sector at memory address 0x7c00 and then jumps (sets the processor’s %ip) to that address. When the boot loader begins executing, the processor is simulating an Intel 8088, and the loader’s job is to put the processor in a more modern operating mode, to load the xv6 kernel from disk into memory, and t hen to transfer control to the kernel. The xv6 boot loader comprises two source files, one written in a combination of 16-bit and 32-bit x86 assembly (bootasm.S;(8900) ) and one written in C (bootmain.c;(9000)).

I downloaded a few bootloaders from osdev and successfully loaded a kernel. But now I want to learn the theory behind the bootloader. I want to know why the system starts and everything behind the bootloader code. Anyone Can you give me a link or link to a book? Thanks in advance.
The system is x86.

https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf

In Appendix B, it gives a brief overview in the first paragraph:

When an x86 PC boots , it starts executing a program called the BIOS, which is stored in non-volatile memory on the motherboard. The BIOS’s job is to prepare the hardware and then transfer control to the operating system. Specifically, it transfers control to code loaded from the boot sector, the first 512-byte sector of the boot disk. The boot sector contains the boot loader: instructions that load the kernel int o memory. The BIOS loads the boot sector at memory address 0x7c00 and then jumps (sets the processor’s %ip) to that address. When the boot loader begins executing, the processor is simulating an Intel 8088, and the loader’s job is to put the processor in a more modern operating mode, to load the xv6 kernel from disk into memory, and then to transfer control to the kernel. The xv6 boot load er comprises two source files, one written in a combination of 16-bit and 32-bit x86 assembly (bootasm.S;(8900)) and one written in C ( bootmain.c;(9000)).

Leave a Comment

Your email address will not be published.