diff --git a/.gitignore b/.gitignore index b7cd11a..1a594e6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,7 @@ scripts/*.log.* # System-specific utility scripts (not for distribution) scripts/disable-ollama.sh + +# ignore the python cache +scripts/__pycache__/ + diff --git a/README.md b/README.md index 6520746..eb16000 100644 --- a/README.md +++ b/README.md @@ -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** @@ -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 @@ -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! @@ -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** @@ -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 @@ -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) @@ -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 diff --git a/releases/RELEASE-v1.0.6.md b/releases/RELEASE-v1.0.6.md new file mode 100644 index 0000000..8f55714 --- /dev/null +++ b/releases/RELEASE-v1.0.6.md @@ -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! 🚀** + diff --git a/scripts/activate_optimizer_env.sh b/scripts/activate_optimizer_env.sh index c631398..9fc490b 100755 --- a/scripts/activate_optimizer_env.sh +++ b/scripts/activate_optimizer_env.sh @@ -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" diff --git a/scripts/install-vmware-modules.sh b/scripts/install-vmware-modules.sh index f412e97..e752416 100755 --- a/scripts/install-vmware-modules.sh +++ b/scripts/install-vmware-modules.sh @@ -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 @@ -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" @@ -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}" @@ -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..." @@ -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 "" @@ -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 @@ -2845,4 +2863,4 @@ if [ "$AUTO_IOMMU" = "true" ] && [ "$OPTIMIZATION_MODE" = "optimized" ]; then fi fi -log "Process completed successfully!" \ No newline at end of file +log "Process completed successfully!" diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh index 391d85e..461199c 100755 --- a/scripts/setup_python_env.sh +++ b/scripts/setup_python_env.sh @@ -104,7 +104,8 @@ mamba install -y \ pyyaml \ click \ rich \ - tabulate + tabulate \ + semver # Hardware detection packages pip install --upgrade \ diff --git a/scripts/test_questionary_ui.py b/scripts/test_questionary_ui.py old mode 100644 new mode 100755 diff --git a/scripts/update-vmware-modules.sh b/scripts/update-vmware-modules.sh index 3bbf405..de51349 100755 --- a/scripts/update-vmware-modules.sh +++ b/scripts/update-vmware-modules.sh @@ -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)" diff --git a/scripts/vmware_wizard.py b/scripts/vmware_wizard.py index d4fa9c3..2ea6506 100755 --- a/scripts/vmware_wizard.py +++ b/scripts/vmware_wizard.py @@ -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 @@ -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" @@ -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="⚙️" ) @@ -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