Development environment setup for minibox container runtime
Set up development environment and verify required kernel features for minibox.
Use this skill when:
Linux kernel 5.0+ required for:
Supported distributions:
Not supported:
Check cgroups v2:
# Should show cgroup2
mount | grep cgroup2
# Should show /sys/fs/cgroup
cat /proc/mounts | grep cgroup2
# Verify unified hierarchy
ls /sys/fs/cgroup/cgroup.controllers
Enable cgroups v2 (if needed):
# Add to kernel boot parameters
# /etc/default/grub:
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=1"
# Update grub
sudo update-grub
sudo reboot
Check namespace support:
# Should show namespace types
ls -la /proc/self/ns/
# Expected: ipc, mnt, net, pid, user, uts
Check overlay filesystem:
# Should show overlay
grep overlay /proc/filesystems
Install Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
Verify installation:
rustc --version
cargo --version
Install toolchain components:
rustup component add rustfmt clippy
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y \
build-essential \
pkg-config \
libssl-dev \
git
Fedora:
sudo dnf install -y \
gcc \
pkg-config \
openssl-devel \
git
Arch:
sudo pacman -S base-devel openssl git
# Clone repository
git clone https://github.com/username/minibox.git
cd minibox
# Build all components
cargo build --all
# Build release version
cargo build --release --all
Minibox uses these directories at runtime:
Container storage:
sudo mkdir -p /var/lib/minibox/{containers,images}
sudo chmod 755 /var/lib/minibox
Daemon socket:
# Created automatically at /var/run/minibox.sock
# Requires root permissions
Check build:
./target/debug/minibox-cli --version
./target/debug/miniboxd --version
Test daemon start:
sudo ./target/debug/miniboxd &
# Should start without errors
# Check socket created
ls -la /var/run/minibox.sock
# Stop daemon
sudo pkill miniboxd
Code quality:
# Format on save
cargo install cargo-watch
cargo watch -x fmt
# Continuous testing
cargo watch -x test
Performance profiling:
cargo install flamegraph
sudo cargo flamegraph --bin miniboxd
Dependency management:
cargo install cargo-tree
cargo tree
VS Code:
{
"rust-analyzer.cargo.allFeatures": true,
"rust-analyzer.checkOnSave.command": "clippy",
"[rust]": {
"editor.formatOnSave": true
}
}
Vim/Neovim:
" Use rust-analyzer with coc.nvim or nvim-lsp
Check current setup:
mount | grep cgroup
If using cgroups v1:
systemd.unified_cgroup_hierarchy=1 to kernel parameterscgroup_no_v1=allUpdate Rust toolchain:
rustup update
Clear build cache:
cargo clean
rm -rf target/
cargo build --all
Daemon requires root:
# Must use sudo
sudo ./target/debug/miniboxd
Container operations require root:
# namespaces, cgroups need CAP_SYS_ADMIN
sudo ./target/debug/minibox-cli run ubuntu:latest /bin/bash
Missing kernel module:
# Load overlay module
sudo modprobe overlay
# Auto-load on boot
echo overlay | sudo tee /etc/modules-load.d/overlay.conf
Verify kernel features:
./skills/minibox/setup/scripts/verify-kernel.sh
Comprehensive kernel feature verification with color-coded output.
Setup environment:
./skills/minibox/setup/scripts/setup-env.sh
Automated environment setup (directories, modules, Rust toolchain, build).
Root requirement:
Future improvements:
For comprehensive kernel feature documentation, load references/kernel-features.md which covers: