2020-02-20 22:10:08 +01:00
|
|
|
#=----------------------------------------------------------------------------=#
|
2020-09-27 17:33:48 +02:00
|
|
|
# OS on Kaleid Documentation #
|
2020-02-20 22:10:08 +01:00
|
|
|
# #
|
|
|
|
# Desc: OS/K Loader #
|
|
|
|
# #
|
|
|
|
# #
|
2021-02-18 19:54:35 +01:00
|
|
|
# Copyright © 2018-2021 The OS/K Team #
|
2020-02-20 22:10:08 +01:00
|
|
|
# #
|
|
|
|
# Permission is granted to copy, distribute and/or modify this #
|
|
|
|
# document under the terms of the GNU Free Documentation License, #
|
|
|
|
# Version 1.3 or any later version published by the Free Software #
|
|
|
|
# Foundation; with no Invariant Sections, no Front-Cover Texts, and #
|
|
|
|
# no Back-Cover Texts. A copy of the license is included in the #
|
|
|
|
# file entitled "COPYING.GFDL" #
|
2020-02-24 10:00:23 +01:00
|
|
|
#=----------------------------------------------------------------------------=#
|
2020-02-20 22:10:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
This folder contains the source for OS/K's early loader.
|
|
|
|
OS/K being intended to only run on x86-64 systems, we have not divided
|
|
|
|
this folder into one sub-folder per architecture.
|
|
|
|
|
|
|
|
The bootloader itself is external to the OS/K project. We are using GRUB 2
|
|
|
|
to load our kernel loader in memory.
|
|
|
|
|
|
|
|
The kernel loader, that we call the loader, is the main subject of this
|
|
|
|
folder. This loader is linked whith the kernel and loaded by Grub at the
|
|
|
|
specified address and prepare it for the hard work it have to do :
|
|
|
|
- Check the multiboot state.
|
|
|
|
- Check if CPUID and long mode is supported.
|
|
|
|
- Send a structure for it with memory map, cpu infos, and other devices
|
|
|
|
infos, prepared by GRUB.
|
|
|
|
- Switch into long mode.
|
2020-02-24 10:00:23 +01:00
|
|
|
- Jump to Kaleid kernel.
|
|
|
|
|
|
|
|
Our loader contains the multiboot header used by GRUB to check if the kernel
|
|
|
|
can be started with the multiboot method. We use an ELF multiboot format, because
|
|
|
|
it is more convenient.
|