| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
I have always wanted to boot OS from scratch.
In this project we are bootstraping kernel via a simple boot sector which loads the kernel into memory and switches to 32-bit protected mode from 16-bit real mode and then calls the kernel code.
Kernel sets up the global descriptor table, interrupt descriptor table, initializes timer, keyboard interrupt and paging.
├── boot │ ├── boot_sect.asm │ ├── disk_load.asm │ ├── gdt.asm │ ├── print_hex.asm │ ├── print_string.asm │ ├── print_string_pm.asm │ └── switch_to_pm.asm ├── cpu │ ├── idt.c │ ├── idt.h │ ├── interrupt.asm │ ├── isr.c │ ├── isr.h │ ├── ports.c │ ├── ports.h │ ├── timer.c │ ├── timer.h │ └── types.h ├── cross-compiler.sh ├── drivers │ ├── keyboard.c │ ├── keyboard.h │ ├── screen.c │ └── screen.h ├── get_kernel_size ├── kernel │ ├── bootanimation.c │ ├── bootanimation.h │ ├── kernel.c │ ├── kernel_entry.asm │ ├── kernel.h │ ├── kshell.c │ └── kshell.h ├── libc │ ├── function.c │ ├── function.h │ ├── mem.c │ ├── mem.h │ ├── ordered_array.c │ ├── ordered_array.h │ ├── string.c │ └── string.h ├── LICENSE ├── linker.ld ├── Makefile ├── memory │ ├── kheap.c │ ├── kheap.h │ ├── paging.c │ └── paging.h ├── README.md └── Resources.md
$ sudo apt install nasm # Netwide Assembler
$ sudo apt install qemu-system-x86 # CPU emulator
$ sudo apt install make # Build system
$ ./cross-compiler # Builds the cross compiler
$ make run # Build and Run| Back | FazBrowse Home | New Git URL |