Skip to content

baponkar/KeblaOS

Repository files navigation

KeblaOS Badge KeblaOS Badge Float Left

KeblaOS

Subject Value
🏷️Version 1.1
🖥️Architecture x86
🔢Bit 64
📅Start Date 09.06.2024
🔄Last Update 14.09.2025

screenshot

Description:

This is a x86 architecture based 64 bit Operating System.

KeblaOS Features

Feature Sub-Features / Notes
✅ 🚀Limine Bootloader Getting Various Boot Information, Getting Firmware Information
ACPI RSDT, FADT, MADT, MCFG, HPET
CPU Info & Control CPUID, SMP
GDT Multi-core support
TSS Multi-core support
✅ ⚡Interrupts APIC (Multi-core), PIC, ISR, IRQ
✅ 🧠Memory Management Memory Info Parsing, 4-Level Paging, PMM, Kmalloc, VMM, KHEAP
✅ ⏱️Timers TSC, RTC, PIT, APIC, ⚠️ HPET (Not Using)
Multitasking Process, Thread, Scheduler, CPU State Handling, Multi-core Multitasking
Kernel Shell (kshell) Calculator, Steam Locomotive Animation
✅ 📂Filesystem FAT32 (via FatFs, ⚠️ Issues in implementation), VFS Layer
System Calls Interrupt-based (Using), MSR-based (Not Using)
User Mode Switching ELF Loader, Binary Loader, minimal libc,stemcall
✅ 🔌Drivers 🎴PCI, AHCI SATA Disk, VGA Framebuffer, I/O Ports, Serial, Keyboard, Speaker, Mouse


Used Tools Version :

  • Limine Bootloader - 9.2.3
  • x86_64-elf-gcc (GCC) 14.2.0
  • GNU ld (GNU Binutils) 2.43
  • GNU Make 4.3
  • bison (GNU Bison) 3.8.2
  • flex 2.6.4
  • xorriso 1.5.6
  • NASM version 2.16.01
  • GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
  • FatFs R0.15b Library
  • QEMU emulator 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.9)
  • WSL 2.5.10.0
  • mkfs util-linux 2.39.3
  • parted (GNU parted) 3.6
  • sync (GNU coreutils) 9.4
  • mount from util-linux 2.39.3 (libmount 2.39.3: selinux, smack, btrfs, verity, namespaces, idmapping, statx, assert, debug)

System Call:

  • General System Call:

    1. int syscall_keyboard_read(uint8_t *buffer, size_t size)

    2. int syscall_print(const char *msg)

    3. int syscall_exit()

    4. int syscall_print_rax()

    5. uint64_t syscall_uheap_alloc(size_t size, enum allocation_type type);

    6. uint64_t syscall_uheap_free(void *ptr, size_t size);

  • FatFs File Manage:

    1. int64_t syscall_vfs_mkfs(int fs_type, char *disk);

    2. nt64_t syscall_vfs_init(char *fs_name);

    3. uint64_t syscall_mount(char *path);

    4. uint64_t syscall_open(const char *path, uint64_t flags);

    5. uint64_t syscall_close(void *file);

    6. uint64_t syscall_read(void *file, uint64_t offset, void *buf, uint32_t size);

    7. uint64_t syscall_write(void *file, uint64_t offset, void *buf, uint32_t btw);

    8. uint64_t syscall_lseek(void *file, uint32_t offs);

    9. uint64_t syscall_unlink(char *path);

  • FatFs Directory Manage:

    1. uint64_t syscall_opendir(const char *path);
    2. uint64_t syscall_closedir(void * dir_ptr);
    3. uint64_t syscall_readdir(void * dir_ptr);
    4. uint64_t syscall_mkdir(void * dir_ptr);
    5. int syscall_list_dir(const char* path);
    6. int syscall_getcwd(void *buf, size_t size);
    7. int syscall_chdir(const char *path);
    8. int syscall_chdrive(const char *path);
  • Process Manage:

    1. void *syscall_create_process(char* process_name);
    2. int syscall_delete_process(void *process);
    3. void *syscall_get_process_from_pid(size_t pid);
    4. void *syscall_get_current_process();
  • Thread Manage:

    1. void *syscall_create_thread(void* parent, const char* thread_name, void (*function)(void*), void* arg);
    2. void *syscall_delete_thread(void *thread);
  • Time Manage:

    1. time_t syscall_time(time_t *t);
    2. int syscall_clock_gettime(int clk_id, struct timespec *tp);
    3. int syscall_gettimeofday(struct timeval *tv, struct timezone *tz);
    4. clock_t syscall_times(struct tms *buf);
    5. uint64_t syscall_get_uptime(void);
  • VGA:

    1. int syscall_set_pixel(int x, int y, uint32_t color);
    2. uint32_t syscall_get_pixel(int x, int y);
    3. int syscall_cls_color();
    4. int syscall_display_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);
    5. int syscall_display_transparent_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);

Before building set GCC , LD, OBJDUMP, src directory is containing source code. build directory is containing generated object file, binary file and iso file. iso_root is required for building image.iso file.

To build and run by QEmu iso make -B. To get Make help by make help

Downloaded from here.


© 2025 baponkar. All rights reserved except externel library used.

About

KeblaOS is a simple Operating System based on x86 32 bit and 64 bit architecture and made with C and assembly.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages