Many developers hitting this issue discover their OVH VPS runs a custom kernel (2.6.32-042stab084.14
) that lacks Docker's required modules. The peculiar symptoms include:
- Empty
/boot
directory - No GRUB/LILO installed
- Missing
linux-image
packages despite availability
OVH uses para-virtualized (PV) Xen technology where:
- The host machine loads the kernel directly into memory
- Your VPS boots from this pre-loaded kernel
- Traditional bootloaders like GRUB are bypassed
Here's the working approach tested on Ubuntu/Debian:
# 1. Install kernel and headers
sudo apt-get update
sudo apt-get install linux-image-virtual linux-headers-virtual
# 2. Force GRUB installation (even if missing)
sudo apt-get install --reinstall grub-pc
sudo update-grub
# 3. Create custom /etc/default/grub
cat << EOF | sudo tee /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
EOF
# 4. Rebuild GRUB config
sudo grub-mkconfig -o /boot/grub/grub.cfg
# 5. Request kernel change via OVH API
curl -X POST https://api.ovh.com/1.0/vps/YOUR_VPS_ID/changeKernel \
-H "X-Ovh-Application: YOUR_APP_KEY" \
-H "X-Ovh-Consumer: YOUR_CONSUMER_KEY" \
-H "Content-Type: application/json" \
-d '{"kernel":"yourCustomKernelName"}'
After reboot (initiated via OVH panel), verify with:
uname -r
lsmod | grep overlay # Check Docker requirements
If standard methods fail, consider:
- Using
kexec
to load custom kernels dynamically - Compiling a custom kernel with Xen PV support
- Migrating to OVH's newer VPS ranges with better kernel support
OVH's design offers:
- Reduced boot times (no full kernel loading)
- Centralized security updates
- Hardware compatibility guarantees
When deploying Docker on OVH's VPS infrastructure, many users encounter a fundamental roadblock - the host runs a custom OpenVZ kernel (typically 2.6.32-042stab084.14
) which lacks essential modules for containerization. This manifests through several key symptoms:
# Empty /boot directory ls -la /boot total 8 drwxr-xr-x 2 root root 4096 Mar 12 2020 . drwxr-xr-x 22 root root 4096 Aug 10 09:15 .. # Missing standard boot components which grub which lilo dpkg -l | grep linux-image
OVH's architecture uses a para-virtualized environment where:
- The host machine runs the OpenVZ kernel
- Your VPS operates as a container (VE) within this environment
- Standard kernel packages won't affect the running kernel
Attempting traditional update methods proves ineffective:
# Typical failed upgrade attempt sudo apt-get install linux-image-generic sudo update-grub reboot # Post-reboot verification uname -r 2.6.32-042stab084.14 # Still the old kernel
Option 1: Use OVH's v3 Manager (Legacy)
If available for your VPS:
- Access the old v3 control panel
- Navigate to Netboot settings
- Switch from "Rescue" to "Normal" mode
Option 2: Migrate to KVM-based VPS
OVH's newer KVM solutions (like VPS SSD) provide full kernel control:
# On KVM VPS after kernel install uname -r 5.4.0-42-generic # Proper kernel version
Option 3: Use User-Mode Linux (Advanced)
A more complex workaround involves UML:
# Install required packages sudo apt-get install user-mode-linux # Download and run a UML kernel wget https://example.com/uml-kernel-image linux ubd0=/dev/sda1 mem=256M
After successful implementation:
# Check kernel modules lsmod | grep overlay overlay 49152 0 # Test Docker installation sudo docker run hello-world Hello from Docker!