Skip to content

jakubclark/vu-kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VU-Kernel

VU-Kernel Logo

About

VU-Kernel is a small kernel written in C.

The current target architecture is i386(32 bit version of the x86 ISA).

Currently implemented features:

  • Printing to the screen
  • Getting keyboard input
  • GDT and IDT are set up
  • Paging
  • Memory Management (allocation/deallocation)
  • ATA Driver
  • Start of a VFS, with support for FAT12
  • Shell-like REPL called Chell

Prerequisites

A number of programs must be installed before VU-Kernel can be run:

  • make
    • Version 4.1
    • Used to easily compile and run the kernel
  • gcc
    • Version 7.3.0
    • Used to compile the .c files
  • nasm
    • Version 2.13.02
    • Use to compile .nasm files
  • binutils
    • Includes ld which links .o files
  • qemu
    • Version 2.11.1
    • System Emulation, that runs the VU-Kernel image

Running VU-Kernel

Running VU-Kernel is as simple as typing:

make qemu

This will create a bootable .iso file, used by qemu.

Make targets

  • kernel
    • Builds the VU-Kernel binary, located at vu-kernel/kernel
  • qemu
    • Builds the VU-Kernel binary and runs it in qemu
  • iso
    • Builds a bootable iso image, with VU-kernel as the boot image

Chell

Chell Logo

Chell is a shell-like REPL.

The loop of Chell is shown below:

Chell Loop

Some commands include:

  • ls - list the files located on the atteched ATA drive
  • pci - print information about any connected PCI devices
  • logo - print the Chell logo

TODO

  • Bootstrapping
  • Printing to the screen
  • Reading from the keyboard
  • Setting up the Global Descriptor Table
  • Print Multiboot Information on startup
  • Interrupt Handling
  • Physical Memory
  • Virtual Memory
  • ATA Driver
  • FAT12
  • VFS

About

Small Barebones Kernel written in C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published