🐧 Modern Docker-based setup for Linux kernel development with C and Rust support.
# 1. Deploy environment
./deploy.sh
# 2. Download kernel sources  
./run.sh setup
# 3. Build kernel and rootfs
./run.sh build
# 4. Enter development environment
./run.sh start
# 5. Test your kernel (inside container)
./scripts/run-qemu.sh| Feature | Description | 
|---|---|
| 🔧 Modern Toolchain | LLVM/Clang + GCC fallback for optimal builds | 
| 🦀 Rust Support | Full Rust-for-Linux development environment | 
| 🖥️ QEMU Testing | Safe kernel testing with hardware virtualization | 
| 🐛 GDB Debugging | Kernel-aware debugging with Python extensions | 
| 📊 Performance Tools | perf, ftrace, bpftrace, eBPF for analysis | 
| 🧪 Automated Testing | Syzkaller kernel fuzzing (optional) | 
| 📦 Portable | Works on Linux, macOS, Windows via Docker | 
# Enter development environment
./run.sh start
# Edit kernel code
vim /workspace/linux/drivers/your_driver.c
# Rebuild everything
./scripts/build-all.sh
# Test your changes
./scripts/run-qemu.sh
# Debug issues (2 terminals)
./scripts/run-qemu.sh debug    # Terminal 1: Start QEMU in debug mode
./scripts/debug-kernel.sh      # Terminal 2: Attach GDB debugger# Inside container
cd /workspace/linux
# Setup Rust development helpers (one-time)
/scripts/rust-kernel-setup.sh
# Rust development commands
./rust-dev.sh check    # Run Clippy lints
./rust-dev.sh fmt      # Format Rust code  
./rust-dev.sh doc      # Generate documentation
./rust-dev.sh clean    # Clean build artifacts
# Edit Rust kernel samples
vim samples/rust/rust_echo_server.rs| Command | Description | 
|---|---|
| ./run.sh start | Enter development container | 
| ./run.sh setup | Download kernel sources | 
| ./run.sh build | Build kernel and rootfs | 
| ./run.sh clean | Clean workspace and Docker cache | 
| Command | Description | 
|---|---|
| ./scripts/run-qemu.sh | Boot and test your kernel | 
| ./scripts/run-qemu.sh debug | Boot kernel in debug mode | 
| ./scripts/debug-kernel.sh | Attach GDB to running kernel | 
| ./scripts/build-all.sh | Rebuild kernel and rootfs | 
| /scripts/rust-kernel-setup.sh | Setup Rust development tools | 
# Boot your kernel
./scripts/run-qemu.sh
# Inside QEMU guest:
dmesg                    # View kernel messages
cat /proc/version        # Check kernel version
poweroff                 # Shutdown cleanly# Terminal 1: Start kernel in debug mode (paused)
./scripts/run-qemu.sh debug
# Terminal 2: Attach debugger
./scripts/debug-kernel.sh
# In GDB:
(gdb) continue           # Start kernel execution
(gdb) break sys_open     # Set breakpoint on system call
(gdb) bt                 # Show call stack
(gdb) lx-ps              # List kernel processes (if available)
(gdb) lx-dmesg           # Show kernel log (if available)# Inside container, with kernel running
perf record -g sleep 5   # Profile system
perf report              # View results
# eBPF tracing (if bpftrace available)
bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("open: %s\n", str(args->filename)); }'# Test specific kernel features
./scripts/run-qemu.sh
# In guest: exercise your driver/subsystem# During setup, choose 'y' for syzkaller
./run.sh setup
# Run fuzzer (inside container)
cd /workspace/syzkaller
./bin/syz-manager -config /configs/syzkaller.cfg
# View results at http://localhost:56741├── Dockerfile              # Development container definition
├── deploy.sh               # Environment setup script
├── run.sh                  # Main control script (generated)
├── README.md               # This file
├── configs/
│   └── syzkaller.cfg       # Kernel fuzzer configuration
├── scripts/
│   ├── build-all.sh        # Complete build script
│   ├── debug-kernel.sh     # GDB debugging helper
│   ├── init-workspace.sh   # Source code downloader
│   ├── run-qemu.sh         # QEMU launcher
│   └── rust-kernel-setup.sh # Rust development setup
└── workspace/              # Development workspace (created)
    ├── linux/              # Linux kernel source
    ├── busybox/            # Minimal userland
    ├── rootfs.img          # Built root filesystem
    └── syzkaller/          # Kernel fuzzer (optional)
- Complete Linux kernel source with latest features and Rust support
- Minimal busybox-based userland for fast testing
- QEMU virtualization for safe development without host crashes
- Full debugging support with GDB and kernel debugging scripts
- Modern build system supporting both C and Rust development
- Performance analysis tools for optimization and profiling
- Automated testing via syzkaller for finding bugs
- Docker 20.10+ (with BuildKit support)
- 8GB+ RAM (16GB recommended for large builds)
- 50GB+ free disk space (kernel source + builds + container)
- KVM support (optional, for faster QEMU virtualization)
- First build takes time: Kernel compilation is CPU-intensive (~20-30 minutes)
- Use KVM: Much faster QEMU if /dev/kvmexists on host
- Incremental builds: Only changed files recompile after first build
- Multiple terminals: Use separate terminals for QEMU and debugging
- Save your work: Edit files in workspace/which persists outside container
This environment supports the full Linux kernel development workflow:
- Clone/modify kernel source in workspace/linux/
- Build and test with the provided scripts
- Debug issues using QEMU + GDB
- Submit patches to Linux kernel mailing lists
Happy kernel hacking! 🐧🦀
Built for the 2025 Linux kernel development ecosystem with modern tooling and best practices.