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

382 lines
No EOL
9.2 KiB
Markdown

# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# Apply gaming optimizations
apt-layer --apply-gaming-tweaks
# Configure Steam and Wine
apt-layer --configure-gaming-environment
```
#### 3. NVIDIA Settings Integration
```bash
# Install NVIDIA settings
apt-layer --install-nvidia-settings
# Configure NVIDIA settings
apt-layer --configure-nvidia-settings
```
## Variant Definitions
### Particle-OS Bazzite Gaming (NVIDIA)
```json
{
"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)
```json
{
"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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# Fix kernel header mismatch
apt-layer --fix-kernel-headers
# Reinstall kernel headers
apt-layer --reinstall-kernel-headers
```
#### 2. DKMS Build Failures
```bash
# 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
```bash
# 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
```bash
# Rollback failed DKMS installation
apt-layer --dkms-rollback
# Restore previous working state
apt-layer --restore-dkms-state
```
#### 2. NVIDIA Driver Recovery
```bash
# 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.