Skip to content

baponkar/KeblaOS

Repository files navigation

KeblaOS Badge KeblaOS Badge Float Left 🇮🇳

KeblaOS

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

Description:

This is a x86 architecture based 64 bit Operating System. This operating system has interrupt based system call.Here PCI scan discovers AHCI Devices. The OS currently has keyboard, mouse, SATA Disk, SATAPI Disk Driver. The installer can formatt SATA disk , Build GPT Partition along with 100 MB FAT32 ESP Volume. Rest of EXT2 Volume at the Disk. Here AHCI port 0 has SATAPI Disk and port 1 has SATA Disk.Currently working to build ext2 filesystem then complete systemcall and finally GNU C Header. The operating system also support userspace elf file.The operating system currently is using limine bootloader.

screenshot

screenshot 1

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, EXT2, VSFS, 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
✅ Installer GPT Disk Creator and UEFI Disk Installer


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. 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

 
 
 

Contributors

Languages