This repository contains the implementation of my kernel scheduling algorithm designed to be integrated with the Linux 6.14.8 kernel source tree.
- Linux kernel source tarball version 6.14.8
- A working Linux environment with
gcc 14.1.0
, (newer versions likegcc 15
may show compile errors because linux 6.14.8 was designed forgcc 14
)make
, and required development tools - Familiarity with kernel compilation and configuration
-
Download and Extract Kernel Source
Download the official Linux 6.14.8 kernel tarball and extract it:
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.8.tar.xz tar -xf linux-6.14.8.tar.xz
-
Integrate new Kernel Code
Clone this repository, and copy the contents into the corresponding paths within the extracted kernel source. The directory structure in this repository matches the kernel tree, so each file must be placed in its matching destination (files already in the kernel will be overwritten with the modified ones of this repo).
cp -r custom-linux-kernel-scheduler_project/customized-kernel/* linux-6.14.8/
- Configure and Build the Kernels
Run the following commands to configure and build the kernel with the new scheduler:
cd linux-6.14.8
make menuconfig
make -j$(nproc) bzImage
A prebuilt bzImage
is also included in this repository under:
arch/x86/boot/bzImage
you can use this bzImage
in an emulator with qemu providing the equivalent initramfs, or boot a linux vm with the bzImage as the -kernel option
The testbenches
folder includes user-space C programs designed to test:
The custom scheduler’s behavior
Integration of additional system calls
The scheduler has been tested and is fully functional with 6.14.11 Linux kernel as well.