Building a Kernel / Operating system from scratch.
Go to file
Nigel b07b4f0d38 Moving certain aspects into their own static library
Problem:
	As our kernel grows we need more complex datastructures and functions these would come from
	the standard C/C++ library with normal programs.
	The kernel is a freestanding programme and has no access to standard libraries.

Solution:
	We build a mini version of the standard C/C++ library which will contain the
	datastructures and functions we want. This library can then be statically linked
	into our kernel binary.

	Making it a statically linked library also gives more structure to the project.
	Keeping these random functions and datastructures in the kernel just clutters the
	kernel source code with less relevant source code.
2023-02-19 23:38:32 +01:00
docs Added introduction, manuals and project structure markdown files to docs 2021-05-03 02:23:49 +02:00
mlibc@aad4e7f64b Starting to move towards proper HAL and ring3 2023-02-11 12:22:45 +01:00
screenshots Merged FAT16 into Dev 2023-02-03 21:47:05 +01:00
scripts Merged FAT16 into Dev 2023-02-03 21:47:05 +01:00
source Moving certain aspects into their own static library 2023-02-19 23:38:32 +01:00
.gitattributes Added emulator options, Added header for VBE driver, Added CPUID function, Added demodisk.img as drive 2021-07-22 22:14:58 +01:00
.gitignore End of the day cleanup. 2022-08-19 01:05:10 +02:00
.gitmodules Starting to move towards proper HAL and ring3 2023-02-11 12:22:45 +01:00
features.md Primitie listing rootdir of FAT16 filesystem 2023-02-19 14:17:47 +01:00
Makefile Moving certain aspects into their own static library 2023-02-19 23:38:32 +01:00
README.md Merged FAT16 into Dev 2023-02-03 21:47:05 +01:00
todo.md Primitie listing rootdir of FAT16 filesystem 2023-02-19 14:17:47 +01:00

Writing an Operating system

As a learning experience!

Inspired by people like Linus Torvalds and Andreas Kling

Logo


Screenshot(s)

Scrolling the terminal
The first scrolling boot screen. 😲

Interrupt handeling
W.I.P - Working on interrupt handling

Multiboot integration
Multiboot information can be read by the kernel.

Page faulting
Enabled paging and am getting page faults!

PCI enumeration
Enumerating the PCI bus

ATAPI CD-ROM Identification
Correctly identified our ATAPI device 🎉

Reading Files from FAT-16
Reading a file from a FAT-16 Formatted drive


The goal

Writing a hobby operating system to better understand the basic building blocks of any operating system.Initially I'd like for my operating system to be able to run bash.


Operating System Technical specs/details

The operating system can print strings to the screen. The terminal/screen has scrolling so the latest messages are visible on the screen.


Planning

See TODO
See Features


Docs

Intro
Manuals
Project structure


Resources:

General kernel stuff

wiki.osdev.org/Main_Page

Modern Operating Systems [book]

whiteheadsoftware.dev

More specific stuff

VFS explained: science.unitn.it