9.2 KiB
DKMS and NVIDIA Support in Particle-OS
Overview
Particle-OS supports DKMS (Dynamic Kernel Module Support) and NVIDIA drivers, following the successful patterns established by uBlue-OS. This enables users to install proprietary drivers, kernel modules, and other software that requires kernel compilation while maintaining the immutable system architecture.
Why DKMS Support is Essential
Desktop Use Cases
- NVIDIA Gaming: Proprietary NVIDIA drivers for optimal gaming performance
- Hardware Support: Custom kernel modules for specialized hardware
- Virtualization: VMware, VirtualBox, and other virtualization tools
- Network Cards: Custom drivers for enterprise network adapters
- Storage Controllers: RAID controllers and specialized storage hardware
uBlue-OS Inspiration
uBlue-OS successfully implements DKMS support through:
- NVIDIA Variants: Dedicated builds with NVIDIA drivers pre-installed
- DKMS Integration: Automatic kernel module compilation and installation
- Atomic Updates: DKMS modules are rebuilt when kernel updates occur
- Rollback Safety: Failed DKMS builds don't break the system
Particle-OS DKMS Architecture
1. DKMS Layer Management
# Create a DKMS-enabled layer
apt-layer ubuntu-base/24.04 dkms-base/24.04 dkms
# Install NVIDIA drivers with DKMS
apt-layer dkms-base/24.04 nvidia-gaming/24.04 nvidia-driver-535
# Install other DKMS modules
apt-layer dkms-base/24.04 vmware/24.04 open-vm-tools-dkms
2. Kernel Synchronization
# DKMS automatically rebuilds when kernel updates
apt-layer ubuntu-base/24.04 kernel-update/24.04 linux-generic-hwe-24.04
# Verify DKMS modules are rebuilt
apt-layer --dkms-status
3. NVIDIA Support Variants
Particle-OS Bazzite Gaming (NVIDIA)
- Base: Ubuntu 25.04 with latest Mesa drivers
- NVIDIA Support: Pre-installed NVIDIA drivers via DKMS
- Gaming Optimizations: Steam, Wine, Proton, gaming peripherals
- Performance Tuning: NVIDIA-specific performance optimizations
Particle-OS Corona Gaming (NVIDIA)
- Base: Ubuntu 24.04 LTS with KDE Plasma
- NVIDIA Support: Pre-installed NVIDIA drivers via DKMS
- Desktop Gaming: KDE Plasma gaming environment
- Stability Focus: LTS base for long-term stability
Implementation Strategy
Phase 1: DKMS Infrastructure
1.1 DKMS Layer Support
# Add DKMS support to apt-layer
apt-layer --add-dkms-support ubuntu-base/24.04
# Install DKMS packages
apt-layer ubuntu-base/24.04 dkms-base/24.04 \
dkms \
build-essential \
linux-headers-generic
1.2 Kernel Header Management
# Automatic kernel header installation
apt-layer --install-kernel-headers
# Verify kernel headers match running kernel
apt-layer --verify-kernel-headers
Phase 2: NVIDIA Driver Support
2.1 NVIDIA Repository Integration
# Add NVIDIA repository
apt-layer --add-repo nvidia
# Install NVIDIA drivers
apt-layer dkms-base/24.04 nvidia-gaming/24.04 \
nvidia-driver-535 \
nvidia-settings \
nvidia-prime
2.2 NVIDIA Variant Creation
# Create NVIDIA gaming variant
apt-layer create-variant nvidia-gaming \
--base ubuntu-base/24.04 \
--add dkms nvidia-driver-535 steam wine \
--description "Gaming variant with NVIDIA support"
Phase 3: Advanced DKMS Features
3.1 DKMS Module Management
# List installed DKMS modules
apt-layer --dkms-list
# Rebuild specific DKMS module
apt-layer --dkms-rebuild nvidia-driver-535
# Remove DKMS module
apt-layer --dkms-remove virtualbox-dkms
3.2 DKMS Atomic Operations
# Atomic DKMS installation
apt-layer --atomic-dkms-install nvidia-driver-535
# Rollback failed DKMS installation
apt-layer --dkms-rollback
Technical Implementation
DKMS Integration with apt-layer
1. DKMS Hook System
# DKMS hooks for kernel updates
/etc/apt-layer/hooks/dkms-pre-install.sh
/etc/apt-layer/hooks/dkms-post-install.sh
/etc/apt-layer/hooks/dkms-pre-remove.sh
/etc/apt-layer/hooks/dkms-post-remove.sh
2. Kernel Version Tracking
# Track kernel versions for DKMS
/var/lib/particle-os/dkms/kernel-versions.json
# Example content:
{
"current": "5.15.0-56-generic",
"installed": ["5.15.0-56-generic", "5.15.0-55-generic"],
"dkms_modules": {
"nvidia-driver-535": ["5.15.0-56-generic"],
"virtualbox-dkms": ["5.15.0-56-generic"]
}
}
3. DKMS Build Environment
# Containerized DKMS builds
apt-layer --dkms-build-container nvidia-driver-535
# Isolated build environment
/var/lib/particle-os/dkms/build-environments/
NVIDIA-Specific Optimizations
1. NVIDIA Prime Support
# Configure NVIDIA Prime
apt-layer --configure-nvidia-prime
# Switch between integrated and discrete graphics
apt-layer --gpu-switch integrated
apt-layer --gpu-switch nvidia
2. Gaming Performance Tuning
# Apply gaming optimizations
apt-layer --apply-gaming-tweaks
# Configure Steam and Wine
apt-layer --configure-gaming-environment
3. NVIDIA Settings Integration
# Install NVIDIA settings
apt-layer --install-nvidia-settings
# Configure NVIDIA settings
apt-layer --configure-nvidia-settings
Variant Definitions
Particle-OS Bazzite Gaming (NVIDIA)
{
"name": "particle-os-bazzite-gaming-nvidia",
"base": "ubuntu-base/25.04",
"description": "Gaming-focused variant with NVIDIA support",
"packages": [
"dkms",
"build-essential",
"linux-headers-generic",
"nvidia-driver-535",
"nvidia-settings",
"nvidia-prime",
"steam",
"wine",
"lutris",
"gamemode",
"mangohud"
],
"repositories": [
"nvidia",
"steam"
],
"configurations": [
"gaming-performance",
"nvidia-prime",
"steam-integration"
]
}
Particle-OS Corona Gaming (NVIDIA)
{
"name": "particle-os-corona-gaming-nvidia",
"base": "ubuntu-base/24.04",
"description": "KDE Plasma gaming variant with NVIDIA support",
"packages": [
"dkms",
"build-essential",
"linux-headers-generic",
"nvidia-driver-535",
"nvidia-settings",
"nvidia-prime",
"kde-plasma-desktop",
"steam",
"wine",
"gamemode"
],
"repositories": [
"nvidia",
"steam"
],
"configurations": [
"kde-gaming",
"nvidia-prime",
"steam-integration"
]
}
Usage Examples
Basic NVIDIA Installation
# Create NVIDIA gaming variant
apt-layer create-variant nvidia-gaming \
--base ubuntu-base/24.04 \
--add dkms nvidia-driver-535 steam
# Deploy the variant
bootc-alternative.sh deploy nvidia-gaming/24.04
DKMS Module Management
# Install VirtualBox with DKMS
apt-layer --live-install virtualbox-dkms
# Check DKMS status
apt-layer --dkms-status
# Rebuild DKMS modules after kernel update
apt-layer --dkms-rebuild-all
Gaming Environment Setup
# Apply gaming optimizations
apt-layer --apply-gaming-tweaks
# Configure Steam
apt-layer --configure-steam
# Install gaming tools
apt-layer --live-install gamemode mangohud
Troubleshooting
Common DKMS Issues
1. Kernel Header Mismatch
# Fix kernel header mismatch
apt-layer --fix-kernel-headers
# Reinstall kernel headers
apt-layer --reinstall-kernel-headers
2. DKMS Build Failures
# Check DKMS build logs
apt-layer --dkms-logs nvidia-driver-535
# Clean DKMS build environment
apt-layer --dkms-clean nvidia-driver-535
# Rebuild with verbose output
apt-layer --dkms-rebuild nvidia-driver-535 --verbose
3. NVIDIA Driver Issues
# Check NVIDIA driver status
apt-layer --nvidia-status
# Reinstall NVIDIA drivers
apt-layer --reinstall-nvidia-drivers
# Switch to integrated graphics
apt-layer --gpu-switch integrated
Recovery Procedures
1. DKMS Rollback
# Rollback failed DKMS installation
apt-layer --dkms-rollback
# Restore previous working state
apt-layer --restore-dkms-state
2. NVIDIA Driver Recovery
# Boot to recovery mode
apt-layer --boot-recovery
# Remove problematic NVIDIA drivers
apt-layer --remove-nvidia-drivers
# Reinstall from scratch
apt-layer --reinstall-nvidia-drivers
Future Enhancements
1. Automated DKMS Testing
- Automated testing of DKMS modules in containers
- Integration testing with different kernel versions
- Performance benchmarking of DKMS modules
2. Advanced NVIDIA Features
- CUDA support for machine learning workloads
- Multi-GPU support for advanced gaming setups
- NVIDIA RTX features and ray tracing support
3. Enterprise DKMS Support
- Corporate DKMS module management
- Centralized DKMS policy enforcement
- Automated DKMS compliance reporting
Conclusion
DKMS and NVIDIA support are essential for Particle-OS to compete with uBlue-OS in the desktop gaming and professional workstation markets. By implementing a comprehensive DKMS system with NVIDIA driver support, Particle-OS can provide the same level of hardware compatibility while maintaining its immutable architecture and atomic update capabilities.
The key is to follow uBlue-OS's successful patterns while adapting them to Ubuntu's package management system and Particle-OS's layer-based architecture. This ensures users can enjoy the benefits of immutable systems while still having access to the hardware support they need for gaming, development, and professional workloads.