Skip to content

Latest commit

 

History

History
50 lines (48 loc) · 3.22 KB

CHECKLIST.md

File metadata and controls

50 lines (48 loc) · 3.22 KB

Mini Checklist

This is a mini checklist of things you might do in Osdev! Note that a few of the first ones are almost completely necessary (memory allocator, GDT, IDT, TSS)

Please also checkout the limine protocol as it has some interesting things it provides like Framebuffer for drawing stuff on screen, Boot information, kernel info (where the kernel is and its file structure)

I link to Osdev Wiki which just describes some of the things mentioned here, but doesn't solve them for you (you figure it out :D)

  • - Get printf to serial0 working using stb_sprintf (You'll need to do a bit of tweaking and some definitions to disable floats (SSE2 isn't enabled when the computer starts))
  • - A memory allocator
  • - IDT - Osdev Wiki
  • - GDT - Osdev Wiki
  • - TSS - Osdev Wiki
  • - PIC (simpler) or APIC - PIC Osdev Wiki APIC Osdev Wiki
  • - PS2 keyboard and mouse drivers - PS2 Keyboard Osdev Wiki PS2 Mouse Osdev Wiki
  • - RTC clock driver (for date and time)
  • - Serial drivers for serial consoles
  • - Play around with PCIe devices - Osdev Wiki
  • - Paging - Osdev Wiki
  • - Task Switch - (Simple task switch using PIT for example (0 bit on PIC; 0x20 interrupt))
  • - Task Scheduler - Osdev Wiki
  • - Load User Tasks
  • - Syscalls - (either using int 0x80 or syscall)
  • - Virtual File System (VFS) - Osdev Wiki
  • - Linking and DLLs
  • - Driver/Device Tree and creating drivers
  • - SMP and multiple processors - Osdev Wiki
  • - NVMe driver or ATA driver for reading/writing from/to disk - NVMe Osdev Wiki ATA Osdev Wiki
  • - File system drivers - FAT32 for example
  • - Sound driver - Osdev Wiki
  • - Shutdown using ACPI - Osdev Wiki
  • - Networking stack
  • - Using Time protocol to sync the RTC clock - Wikipedia
  • - USB driver
  • - A desktop Environment
  • - Clipboard :)
  • - File explorer
  • - FTP file sharing
  • - Task scheduling (Running tasks on specific times or events)
  • - Zip/Unzip library
  • - 3D demos
  • - Porting an Assembler
  • - Porting a C compiler - Tiny C Compiler
  • - Porting libc
  • - Integrated graphics card driver (for laptops for example) - Osdev Wiki
  • - Mini Browser
  • - Porting gcc
  • - Building the OS from within the OS
  • - Porting Busybox
  • - Porting qemu or bochs
  • - Subset of git
  • - Porting to other architectures