A lightweight Linux container runtime in C with a long-running supervisor and a kernel-space memory monitor.
Read project-guide.md for the full project specification.
- Go to github.com/shivangjhalani/OS-Jackfruit
- Click Fork (top-right)
- Clone your fork:
git clone https://github.com/<your-username>/OS-Jackfruit.git
cd OS-JackfruitYou need an Ubuntu 22.04 or 24.04 VM with Secure Boot OFF. WSL will not work.
Install dependencies:
sudo apt update
sudo apt install -y build-essential linux-headers-$(uname -r)cd boilerplate
chmod +x environment-check.sh
sudo ./environment-check.shFix any issues reported before moving on.
mkdir rootfs-base
wget https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-minirootfs-3.20.3-x86_64.tar.gz
tar -xzf alpine-minirootfs-3.20.3-x86_64.tar.gz -C rootfs-base
# Make one writable copy per container you plan to run
cp -a ./rootfs-base ./rootfs-alpha
cp -a ./rootfs-base ./rootfs-betaDo not commit rootfs-base/ or rootfs-* directories to your repository.
The boilerplate/ folder contains starter files:
| File | Purpose |
|---|---|
engine.c |
User-space runtime and supervisor skeleton |
monitor.c |
Kernel module skeleton |
monitor_ioctl.h |
Shared ioctl command definitions |
Makefile |
Build targets for both user-space and kernel module |
cpu_hog.c |
CPU-bound test workload |
io_pulse.c |
I/O-bound test workload |
memory_hog.c |
Memory-consuming test workload |
environment-check.sh |
VM environment preflight check |
Use these as your starting point. You are free to restructure the repository however you want — the submission requirements are listed in the project guide.
cd boilerplate
makeIf this compiles without errors, your environment is ready.
Your fork will inherit a minimal GitHub Actions workflow from this repository.
That workflow only performs CI-safe checks:
make -C boilerplate ci- user-space binary compilation (
engine,memory_hog,cpu_hog,io_pulse) ./boilerplate/enginewith no arguments must print usage and exit with a non-zero status
The CI-safe build command is:
make -C boilerplate ciThis smoke check does not test kernel-module loading, supervisor runtime behavior, or container execution.
Read project-guide.md end to end. It contains:
- The six implementation tasks (multi-container runtime, CLI, logging, kernel monitor, scheduling experiments, cleanup)
- The engineering analysis you must write
- The exact submission requirements, including what your
README.mdmust contain (screenshots, analysis, design decisions)
Your fork's README.md should be replaced with your own project documentation as described in the submission package section of the project guide. (As in get rid of all the above content and replace with your README.md)