Check this link on how to boot a basic kernel osdev wiki.
For linking and writing ld scripts, checkout these resources:
- https://www.math.utah.edu/docs/info/ld_3.html
- https://youtu.be/B7oKdUvRhQQ Bare metal embedded lecture-4: Writing linker scripts and section placement
- https://youtu.be/dOfucXtyEsU ppCon 2018: Matt Godbolt “The Bits Between the Bits: How We Get to main()”
Write to screen using the VGA text mode:
- https://en.wikipedia.org/wiki/VGA_text_mode
- https://en.wikipedia.org/wiki/List_of_8-bit_computer_hardware_graphics#IBM_PC/XT_and_compatible_systems
This module is about segmentation, which is obsolete, so we set up a flat-memory model and ignore it.
Too lazy to include resource for segmentation now, will come back later.
kfs-3 is all about memory and memory managment, this module will introduce you to virtual memory and paging, keep in mind that our implementation of memory as of writing this is at the earliest stage and still need to be improved as the system grows, but for now it does the most basic thing which is to allocate memory, both virtual and physical.
- https://wiki.osdev.org/Detecting_Memory_(x86)
- https://www.gnu.org/software/grub/manual/multiboot/multiboot.html
- https://wiki.osdev.org/Paging
- Paging section in the Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 3A
- Casey cole operating system playlist first 8 lectures.
- David Black-Schaffer Virtual Memory playlist
kfs-4 is all about interrupts in the IA-32 architecture, in this project we will setup exception handling as described in the IA-32 architecture manual, a basic keyboard driver and a simple signals interface that uses interrupts.
- The interrupt videos in Architecture 2001: Intel x86-64 OS Internals
- https://wiki.osdev.org/Interrupts
- https://wiki.osdev.org/Interrupt_Descriptor_Table
- https://wiki.osdev.org/IDT_problems#Problems_with_IDTs
- Interrupt and exception handling in the Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 3A