How mhdsahil1/nyota-os works
Nyota OS is a small, experimental x86-32 hobby operating system. Its documented execution path starts at the assembly bootloader and proceeds into the kernel; the sampled kernel entry initializes serial and VGA output, descriptor tables, keyboard interrupts, and then the interactive shell. The shell reads keyboard input, dispatches built-in commands, and prints results through VGA (which also mirrors characters to serial). The README describes bootable-image and QEMU capabilities, but build and image-generation machinery is excluded. Links for unsampled boot details follow the documented architecture only.
Main entry points: kernel.c Kernel main · idt.c IDT and PIC · vga.c VGA console · keyboard.c Keyboard driver
Components 16
Boot
- Bootloader
bootloader/boot.asm - Kernel entry
kernel/kernel_entry.asm
Kernel setup
- Kernel main
kernel/kernel.c - GDT setup
kernel/gdt/gdt.c - GDT reload
kernel/gdt/gdt_flush.asm - IDT and PIC
kernel/idt/idt.c - Interrupt stubs
kernel/idt/idt_asm.asm
Shell interaction
- Keyboard driver
kernel/keyboard/keyboard.c - Command shell
kernel/shell/shell.c
Hardware I/O
- VGA console
kernel/vga/vga.c - Serial console
kernel/serial/serial.c
Other components
- Computer
- PS/2 keyboard
- VGA framebuffer
- Host serial
- x86 CPU
Connections 19
- Computer → Bootloader: starts boot
- Bootloader → Kernel entry: transfers control
- Kernel entry → Kernel main: enters kernel
- Kernel main → Serial console: initializes
- Kernel main → VGA console: initializes
- Kernel main → GDT setup: initializes
- Kernel main → IDT and PIC: initializes
- Kernel main → Keyboard driver: initializes
- Kernel main → Command shell: starts
- GDT setup → GDT reload: loads table
- IDT and PIC → Interrupt stubs: loads IDT
- IDT and PIC → x86 CPU: configures interrupts
- Keyboard driver → IDT and PIC: registers IRQ handler
- PS/2 keyboard → Keyboard driver: sends scan codes
- Command shell → Keyboard driver: reads characters
- Command shell → VGA console: prints commands
- VGA console → VGA framebuffer: writes text
- VGA console → Serial console: mirrors characters
- Serial console → Host serial: sends output