Nightloader/i386/loader
Eric-Paul Ickhorn 5ba30e5f8b
Fix GDT length being insufficient
The value of the GDTR register was set to be 8 bytes too small, with
the effect that an accurate emulation software would error out because
of trying to read over the buffer size, as was noticed when using KVM.

This was due to the perception that the 0th index wouldn't be taken
into account; for that reason, the length of the GDTR was one index
short of what it should've been.
2024-08-06 13:20:40 +02:00
..
src-asm Fix GDT length being insufficient 2024-08-06 13:20:40 +02:00
README.md Add README.md for loader on i386 2024-07-06 00:12:06 +02:00
build.bash Add build script 2024-07-06 00:11:14 +02:00

README.md

loader | Nightloader Code Partition

The partition of which the creation code is contained in this directory isn't formatted in any particular way; the partition which is created using this source code contains the instructions and data for giving control over to the next stage. More on the features of the loader can be found here

Features

The loader partition has to perform the following tasks:

  1. Perform the general setup
    • Setup a bigger stack
    • Enable the A20 address line
    • Enter 32-bit mode (Protected Mode)
    • Setup Paging
  2. Enable the built-in drivers
  3. Load additional addons
    • Find partitions accessible with the existing drivers
    • Check the path /bin/nightloader/ for addons
    • Load and start those addons
    • If any more filesystem drivers were found, repeat the last three steps
  4. Choose the appropriate action of the three following ones:
    1. If no operating system was found,
      • Send an error to any output
      • Halt execution after 30 seconds
    2. If an operating system was found and there is no addon to take control
      • Display all options onto the screen and let the user choose which operating system to start
    3. If an operating system was found and there is an addon which takes the control
      • Give the control to that addon and let it handle the task of finding out what to do
  5. Execute the action chosen by the user in the last step