Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KeprOS

A Minimal x86 Hobby Operating System Kernel

C x86 i386 NASM Makefile QEMU Multiboot MIT License

KeprOS — минимальное 32-битное x86 ядро операционной системы,
написанное на C и Assembly с нуля, с собственной файловой системой и shell.


Overview

KeprOS — это учебно-экспериментальное ядро ОС для архитектуры i386. Проект включает загрузчик (Multiboot), драйверы VGA, клавиатуры PS/2 и ATA PATA, две файловые системы (оперативную и дисковую), а также интерактивный shell с базовым набором команд.

Ядро загружается через GRUB (Multiboot-совместимо) и может быть запущено в эмуляторе QEMU или на реальном железе.


Features

  • 🖥️ Multiboot-загрузчик — GRUB-совместимый (0x1BADB002)
  • 📟 VGA Text Mode — 80×25, цветной вывод, скроллинг
  • ⌨️ PS/2 Keyboard Driver — Shift, Caps Lock, Ctrl, Alt
  • 💾 ATA PATA Driver — LBA28, чтение/запись секторов
  • 📁 RAM File System — до 3 файлов по 512 байт
  • 🗄️ Disk File System — блочная ФС (2048 блоков, bitmap)
  • 🖩 Shell — 8 встроенных команд
  • 📀 ISO-образ — загрузка с CD/DVD через GRUB

Quick Start

Prerequisites

# Ubuntu/Debian
sudo apt install build-essential nasm qemu-system-x86 grub-pc-bin xorriso

# Arch Linux
sudo pacman -S base-devel nasm qemu-system-x86 grub libisoburn

Build & Run

git clone https://github.com/kempedron/KeprOS.git
cd KeprOS

# Сборка ядра
make

# Запуск в QEMU
make run

# Создание и запуск ISO
make iso
make run-iso

Makefile Targets

Target Description
all / kernel Сборка ядра (kernel ELF)
clean Очистка артефактов сборки
run Запуск в QEMU (-kernel)
iso Создание загрузочного ISO
run-iso Запуск ISO в QEMU

Shell Commands

После загрузки вас встретит приглашение root@keprOS>. Доступные команды:

Command Usage Description
help help Список доступных команд
clear clear Очистка экрана
echo echo <text> Вывод текста
touch touch <filename> Создание файла
write write <filename> <content> Запись в файл
cat cat <filename> Чтение файла
ls ls Список файлов
rm rm <filename> Удаление файла

Project Structure

KeprOS/
├── boot.asm          # Multiboot-загрузчик (NASM)
├── kernel.c          # Ядро: драйверы, ФС, shell (844 строки)
├── io.h              # Port I/O функции (inb/outb)
├── types.h           # Стандартные типы (uint8_t, size_t, ...)
├── link.ld           # Linker script (i386, 1MB base)
├── Makefile          # Система сборки
├── LICENSE           # MIT License
└── kernel            # Скомпилированное ядро (ELF32)

Technical Details

Kernel Memory Layout

0x00100000 ┌─────────────────────┐  ← Kernel entry point
           │     .text           │  Код ядра
           ├─────────────────────┤
           │     .rodata         │  Константы
           ├─────────────────────┤
           │     .data           │  Инициализированные данные
           ├─────────────────────┤
           │     .bss            │  Неинициализированные данные
           ├─────────────────────┤
           │  .bootstrap_stack   │  Стек (16 KB)
           └─────────────────────┘
0x000B8000 ┌─────────────────────┐
           │   VGA Text Buffer   │  Видеопамять (80×25)
           └─────────────────────┘

Build Configuration

Setting Value
Compiler gcc -m32 -ffreestanding -nostdlib
Assembler nasm -f elf32
Linker ld -m elf_i386 -T link.ld -nostdlib
Entry start (boot.asm → calls os_main())
Magic 0x1BADB002 (Multiboot)

Subsystems

Subsystem Lines Description
VGA Driver ~100 Прямая запись в 0xB8000, скроллинг, курсор
PS/2 Driver ~70 Scan code decoding, модификаторы
ATA Driver ~110 LBA28 R/W, 0x1F0-0x1F7, MBR check
RAM FS ~90 3 файла × 512B, create/delete/read/write
Disk FS ~60 Блочная структура, bitmap allocation
Shell ~160 Tokenizer (with quotes), command dispatch

Screenshots

┌─────────────────────────────────────────────────────────┐
│                                                         │
│              ╔═══════════════════════════╗               │
│              ║       KeprOS v0.1         ║               │
│              ╚═══════════════════════════╝               │
│                                                         │
│   ATA init: OK                                          │
│   MBR signature: 0xAA55                                 │
│   Disk FS: 2048 blocks available                        │
│                                                         │
│   ─────────────────────────────────────────              │
│                                                         │
│   root@keprOS> help                                     │
│   > clear  - Clear screen                               │
│   > echo   - Print text                                 │
│   > touch  - Create file                                │
│   > write  - Write to file                              │
│   > cat    - Read file                                  │
│   > ls     - List files                                 │
│   > rm     - Delete file                                │
│   > help   - This help                                  │
│                                                         │
│   root@keprOS> _                                        │
│                                                         │
└─────────────────────────────────────────────────────────┘

License

Распространяется под лицензией MIT. См. файл LICENSE для получения дополнительной информации.

MIT License
Copyright (c) 2026 kempedron

Made with ❤️ by kempedron

About

A simple OS kernel written in C

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages