tree os v2

@biosfood biosfood authored 11 days ago
rootfs/boot/ grub find the initrd in the multiboot 2 information structure 1 year ago
src buffersTests: add support for reading negaive numbers 11 days ago
.clang-format initial commit 1 year ago
.gitignore enable interrupts 1 year ago
LICENSE initial commit 1 year ago
Makefile enable qemu scisi debug logging 26 days ago
README.md add dependencies file 1 month ago
compile_flags.txt fix compile flags to prevent errors 1 year ago
dependencies add dependencies file 1 month ago
honey-os.png add screenshot 10 months ago
honey-os.sfdisk make honey-os.img more recognizable 1 month ago
link.ld use ld-level allocation of allocation data object for all programs and kernel 3 months ago
README.md

Honey OS

Honey os is an operating system developed by me. Its main goals consist of learning about x86 architecture and os development as well as ensuring good readability and easily understood code.

Building

To build the OS and run in an emulator, run

make

The ┬┤dependencies┬┤ file contains a list of AUR packages that should be installed when runnung Honey-OS. To install them all, user your package manager (paru in this instance) like this:

cat dependencies | paru -S -

Directory structure

The rootfs directory contains all files for the 'root file system' of the final iso. It contains the final honey os kernel executable file as well as necessary grub configuration files.

The initrd directory will be created during the building process as a temporary directory. This is later packed into a .tar file and will be loaded by grub. After booting, the kernel will be able to load additional user mode programs from this 'initial ramdisk', before other file system drivers have been initialized to load programs from the boot drive.

src/kernel contains all files which are compiled into the finished kernel.

src/userland contains several directories with source files to compile different ELF user programs.

src/userland/hlib is the honey OS utility library. It is linked by default with all loaded user mode programs at a high memory address (0xFF000000). And can be linked with and assumed to be loaded by any other program, because it will be loaded first.