particle-os-tools/docs/dkms-nvidia-support.md
2025-07-14 01:09:07 -07:00

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.