Skip to content

Exploration project to better understend kernel dev

License

Notifications You must be signed in to change notification settings

JanTomassi/JanOS

Repository files navigation

Jan OS

This simple kernel is an exploration project that I am developing in my free time, the kernel is for x86 arch I do not know if I will ever move it to x86_64, the booting process is made with grub and the multiboot1 specs.

Current Feature

The kernel support logging on serial and VGA text mode there is a common interface display to select witch output stream to use, for input device only ps2 is supported, all standard x86 interrupt are mapped and as a default behavior they log there call. There is support for physical and virtual page allocation but is only 4KiB no 4MiB page and the implementation of kmalloc(memory allocator) can only handle allocation of [1, 4096] byte

Future Feature

  • [ ] Basic user space
    • [ ] Context switching
  • [ ] Better GPA
  • [ ] Disk access
    • [ ] ext2/4?
    • [ ] FAT32
  • [ ] Multiprocessing
    • [ ] Message passing
    • [ ] Synchronization primitive
  • [ ] Video output
    • [ ] Display custom shape
    • [ ] Printing text as in VGA text mode

Build

Tools

This tools are need to compile the building environment

  • bash
  • make
  • gcc
  • nasm
  • tar
  • xz

Enter in the directory tools and execute the bash script get-tools.sh

cd tools && ./get-tools.sh

this will download and compile or the tools needed for development except for nams

Project

Running the build.sh script should be enough to build the kernel elf and make a UNIX like root structure in sysroot

Run

ISO

To get an ISO run the iso.sh and it will output a JanOS.iso on the current directory.

QEMU

If you want to use QEMU (recommended) run the qemu.sh script it will build create the iso and then run a temporary QEMU instance

About

Exploration project to better understend kernel dev

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published