Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,7 @@ scripts/*.log.*

# System-specific utility scripts (not for distribution)
scripts/disable-ollama.sh

# ignore the python cache
scripts/__pycache__/

16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![Kernel](https://img.shields.io/badge/Kernel-6.16.x%20%7C%206.17.x-orange.svg)](https://kernel.org/)
[![Kernel](https://img.shields.io/badge/Kernel-6.16.x%20|%206.17.x%20|%206.18.x|%206.19.x-orange.svg)](https://kernel.org/)
[![VMware](https://img.shields.io/badge/VMware-17.6.4-green.svg)](https://www.vmware.com/)
[![Gentoo](https://img.shields.io/badge/Gentoo-Supported-purple.svg)](https://www.gentoo.org/)

### ⚡ VMware Workstation Modules for Linux Kernel 6.16.x & 6.17.x
### ⚡ VMware Workstation Modules for Linux Kernel 6.16.x, 6.17.x & 6.18.x & 6.19.x
### 🐍 **Interactive Python Wizard** that guides you through installation
### 🚀 **Enjoy 20-35% faster VMware performance**
### ✨ **Better Wayland integration - top bar hiding works ~90% of the time**
Expand All @@ -22,7 +22,7 @@ This project provides:
3. **⚡ Performance Optimizations** - 20-35% faster VMs through hardware-specific compilation
4. **✨ Better Wayland Support** - Top bar hiding works ~90% of the time (includes automatic race condition fix)
5. **🎯 System Optimizer** - Automatically tune GRUB, kernel parameters, CPU governor, I/O scheduler for VMware
6. **🐧 Universal Linux Support** - Works on 18+ distributions (Ubuntu, Fedora, Arch, Gentoo, etc.)
6. **🐧 Universal Linux Support** - Works on 18+ distributions (Ubuntu, Fedora, Arch, Gentoo, Debian etc.)
7. **🛡️ Smart Backup System** - Hash-verified backups with automatic cleanup

## 📦 Quick Install
Expand All @@ -48,7 +48,7 @@ sudo ./scripts/install-vmware-modules.sh

### 🐍 **Interactive Python Wizard**
- **Beautiful terminal UI** using Rich library
- **Auto-detects all installed kernels** (6.16.x & 6.17.x)
- **Auto-detects all installed kernels** (6.16.x, 6.17.x, 6.18.x & 6.19.x)
- **Smart defaults:** Current kernel + Optimized mode
- Multi-kernel selection or "all at once"
- **All interaction in unified Python UI** - no more bash prompts!
Expand Down Expand Up @@ -111,7 +111,7 @@ Then **auto-generates optimal compilation flags** for your hardware!

### ⚙️ **Smart Patching**
- **Dual kernel support:** 6.16.x and 6.17.x with appropriate patches
- **Objtool auto-detection:** Applies objtool patches when needed (6.16.3+ / 6.17.x)
- **Objtool auto-detection:** Applies objtool patches when needed (6.16.3+ / 6.17.x / 6.18.x)
- **Compiler detection:** Works with GCC or Clang toolchains
- **VMware 17.5.x & 17.6.x compatible**

Expand Down Expand Up @@ -293,7 +293,7 @@ This project includes patches from [ngodn/vmware-vmmon-vmnet-linux-6.16.x](https
4. **Module Init:** `init_module()` → `module_init()` macro
5. **Function Prototypes:** `function()` → `function(void)`

### **Kernel 6.16.3+ / 6.17.x Additional Patches** (Auto-Detected)
### **Kernel 6.16.3+ / 6.17.x / 6.18.x / 6.19.x Additional Patches** (Auto-Detected)

1. **Objtool validation errors:** Fixed in `phystrack.c` and `task.c`
2. **Makefile adjustments:** `OBJECT_FILES_NON_STANDARD` for problematic files
Expand All @@ -303,7 +303,7 @@ This project includes patches from [ngodn/vmware-vmmon-vmnet-linux-6.16.x](https

## 📋 Prerequisites

- Linux kernel **6.16.x or 6.17.x** headers installed
- Linux kernel **6.16.x, 6.17.x, 6.18.x or 6.19.x** headers installed
- VMware Workstation **17.x** installed
- Build essentials: `gcc`, `make`, `kernel headers`
- Git (for cloning)
Expand All @@ -329,7 +329,7 @@ cd /usr/src/linux && make modules_prepare

## ✅ Compatibility

- **Kernels:** 6.16.x, 6.17.x (all versions)
- **Kernels:** 6.16.x, 6.17.x, 6.18.x, 6.19.x (all versions)
- **VMware:** Workstation 17.5.x, 17.6.x
- **Architecture:** x86_64
- **Distributions:** 18+ Linux distributions
Expand Down
52 changes: 52 additions & 0 deletions releases/RELEASE-v1.0.6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Release v1.0.6 - Use Semver to Identify Kernel Version Components

**Release Date:** November 18, 2025

---

## ⭐ What's New

The internal code used to identify available kernel versions has been replaced with the Python semver package.
Previously, not any variant of plus and minus symbols has been identified properly and could break identification such as `6.16.3+deb13-amd64`
which is an example for Debian kernels when using backports.

---

## 🎯 Important

If you have already used this software, you must manually delete the directory that stores all the dependencies before performing any other tasks:

`rm -r ~/.miniforge3`


## 🎯 Usage Examples

Because only internal code has been changed, all descriptions from Release v1.0.5 apply.

## 🐛 Known Issues

None reported.

---

## 🙏 Feedback

If you encounter any issues with the system optimizer or have suggestions for additional optimizations, please open an issue on GitHub:

https://github.com/Hyphaed/vmware-vmmon-vmnet-linux-6.17.x/issues

---

## 📈 Version History

- **v1.0.6** (November 18, 2025) - Using Python semver
- **v1.0.5** (October 17, 2025) - System Optimizer integration
- **v1.0.4** (October 16, 2025) - Python wizard improvements
- **v1.0.3** (October 15, 2025) - Multi-kernel support
- **v1.0.2** (October 14, 2025) - Hardware detection engine
- **v1.0.1** (October 13, 2025) - Initial release

---

**Enjoy your optimized VMware Workstation experience! 🚀**

2 changes: 1 addition & 1 deletion scripts/activate_optimizer_env.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# Activate VMware Optimizer Python environment
source "/home/ferran/.miniforge3/etc/profile.d/conda.sh"
source "~/.miniforge3/etc/profile.d/conda.sh"
conda activate vmware-optimizer
export VMWARE_PYTHON_ENV_ACTIVE=1
echo "✓ VMware Optimizer environment activated"
Expand Down
32 changes: 25 additions & 7 deletions scripts/install-vmware-modules.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#!/bin/bash
# Enhanced script to compile VMware modules for kernel 6.16.x and 6.17.x
# Supports Ubuntu, Fedora, and Gentoo
# Enhanced script to compile VMware modules for kernel 6.16.x, 6.17.x, 6.18.x and 6.19.x
# Supports Ubuntu, Fedora, Gentoo and Debian
# Uses specific patches according to kernel version
# Optional hardware-specific optimizations
# Date: 2025-10-15
# Date: 2026-03-19

set -e

Expand Down Expand Up @@ -84,7 +84,7 @@ draw_box_line() {
local text_len=${#text}
local padding=$(( (width - text_len - 2) / 2 ))
local right_padding=$(( width - text_len - padding - 2 ))

echo -n "│"
printf ' %.0s' $(seq 1 $padding)
echo -n "$text"
Expand Down Expand Up @@ -144,7 +144,7 @@ trap cleanup_on_error ERR

echo -e "${HYPHAED_GREEN}$(draw_box_top)${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_line "")${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_line "VMWARE MODULES COMPILER FOR KERNEL 6.16/6.17")${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_line "VMWARE MODULES COMPILER FOR KERNEL 6.16/6.17/6.18/6.19")${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_line "(Multi-Distribution Linux Compatible)")${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_line "")${NC}"
echo -e "${HYPHAED_GREEN}$(draw_box_bottom)${NC}"
Expand Down Expand Up @@ -343,6 +343,10 @@ else
TARGET_KERNEL="6.16"
elif [ "$FIRST_KERNEL_MINOR" = "17" ]; then
TARGET_KERNEL="6.17"
elif [ "$FIRST_KERNEL_MINOR" = "18" ]; then
TARGET_KERNEL="6.18"
elif [ "$FIRST_KERNEL_MINOR" = "19" ]; then
TARGET_KERNEL="6.19"
else
error "Unsupported kernel minor version: $FIRST_KERNEL_MINOR"
warning "Falling back to legacy installation mode..."
Expand Down Expand Up @@ -493,6 +497,10 @@ echo -e "${GREEN} 2)${NC} Kernel 6.17.x"
echo " • Uses patches from 6.16.x + additional objtool patches"
echo " • Additional patches: OBJECT_FILES_NON_STANDARD, returns in void functions"
echo ""
echo -e "${GREEN} 2)${NC} Kernel 6.18.x"
echo " • Uses patches from 6.16.x + additional objtool patches"
echo " • Additional patches: OBJECT_FILES_NON_STANDARD, returns in void functions"
echo ""
echo -e "${BLUE}Kernel detected on your system:${NC} $(uname -r)"
echo ""

Expand All @@ -510,8 +518,18 @@ while true; do
info "Selected: Kernel 6.17.x"
break
;;
3)
TARGET_KERNEL="6.18"
info "Selected: Kernel 6.18.x"
break
;;
4)
TARGET_KERNEL="6.19"
info "Selected: Kernel 6.19.x"
break
;;
*)
warning "Invalid option. Please select 1 or 2."
warning "Invalid option. Please select 1,2,3 or 4."
;;
esac
done
Expand Down Expand Up @@ -2845,4 +2863,4 @@ if [ "$AUTO_IOMMU" = "true" ] && [ "$OPTIMIZATION_MODE" = "optimized" ]; then
fi
fi

log "Process completed successfully!"
log "Process completed successfully!"
3 changes: 2 additions & 1 deletion scripts/setup_python_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ mamba install -y \
pyyaml \
click \
rich \
tabulate
tabulate \
semver

# Hardware detection packages
pip install --upgrade \
Expand Down
Empty file modified scripts/test_questionary_ui.py
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion scripts/update-vmware-modules.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ echo -e "${HYPHAED_GREEN}══════════════════
echo ""
echo "This script will:"
echo -e " 1. ${HYPHAED_GREEN}Launch interactive Python wizard${NC} (with beautiful TUI)"
echo " 2. Detect all installed kernels (6.16.x and 6.17.x)"
echo " 2. Detect all installed kernels (6.16.x, 6.17.x, 6.18.x and 6.19.x)"
echo " 3. Analyze your hardware with Python detection engine"
echo " 4. Let you choose: Optimized (20-35% faster + better Wayland) or Vanilla (portable)"
echo " 5. Automatically rebuild modules for selected kernel(s)"
Expand Down
18 changes: 10 additions & 8 deletions scripts/vmware_wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import json
import subprocess
import time
import semver
from dataclasses import dataclass, asdict
from typing import List, Dict, Optional
from pathlib import Path
Expand Down Expand Up @@ -61,16 +62,17 @@ def detect_installed_kernels(self) -> List[KernelInfo]:

# Parse version
try:
version_parts = full_version.split('-')[0].split('.')
major = int(version_parts[0])
minor = int(version_parts[1]) if len(version_parts) > 1 else 0
patch = int(version_parts[2]) if len(version_parts) > 2 else 0
ver = semver.Version.parse(full_version)
major = int(ver.major)
minor = int(ver.minor) if len(str(ver.minor)) > 1 else 0
patch = int(ver.patch) if len(str(ver.patch)) > 2 else 0
version = f"{major}.{minor}"
except (ValueError, IndexError):
print("Semver identification error for: ", full_version)
continue

# Check if supported (6.16 or 6.17)
supported = (major == 6 and minor in [16, 17])
# Check if supported (6.16, 6.17, 6.18 or 6.19)
supported = (major == 6 and minor in [16, 17, 18, 19])

# Check for headers
headers_path = kernel_dir / "build"
Expand Down Expand Up @@ -188,7 +190,7 @@ def run(self):
# Welcome banner
self.ui.show_banner(
"VMware Module Installation Wizard",
"Automated Kernel Module Compilation for Linux 6.16/6.17",
"Automated Kernel Module Compilation for Linux 6.16/6.17/6.18/6.19",
icon="⚙️"
)

Expand Down Expand Up @@ -218,7 +220,7 @@ def run(self):
supported_kernels = [k for k in self.detected_kernels if k.supported and k.headers_installed]

if not supported_kernels:
self.ui.show_error("No supported kernels (6.16.x or 6.17.x) with headers found!")
self.ui.show_error("No supported kernels (6.16.x, 6.17.x, 6.18.x or 6.19) with headers found!")
self.ui.show_info("Please install kernel headers: sudo apt install linux-headers-$(uname -r)")
return 1

Expand Down