From f42334917e3f34bd965be08617b4055e71f1eec9 Mon Sep 17 00:00:00 2001 From: MacRimi Date: Thu, 29 Jan 2026 19:59:12 +0100 Subject: [PATCH] Create intel_gpu_tools.sh --- scripts/gpu_tpu/intel_gpu_tools.sh | 203 +++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 scripts/gpu_tpu/intel_gpu_tools.sh diff --git a/scripts/gpu_tpu/intel_gpu_tools.sh b/scripts/gpu_tpu/intel_gpu_tools.sh new file mode 100644 index 00000000..c4b28b14 --- /dev/null +++ b/scripts/gpu_tpu/intel_gpu_tools.sh @@ -0,0 +1,203 @@ +#!/bin/bash +# ProxMenux - Intel GPU Tools Installer +# ============================================ +# Author : MacRimi +# License : MIT +# Version : 1.0 +# Last Updated: 29/01/2026 +# ============================================ +# Installs intel-gpu-tools for monitoring Intel GPUs + +SCRIPT_TITLE="Intel GPU Tools Installer for Proxmox VE" + +LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts" +BASE_DIR="/usr/local/share/proxmenux" +UTILS_FILE="$BASE_DIR/utils.sh" +COMMON_FUNC="$LOCAL_SCRIPTS/global/share_common.func" +COMPONENTS_STATUS_FILE="$BASE_DIR/components_status.json" +LOG_FILE="/tmp/intel_gpu_tools_install.log" + +export BASE_DIR +export COMPONENTS_STATUS_FILE + +if [[ -f "$UTILS_FILE" ]]; then + source "$UTILS_FILE" +fi + +if [[ -f "$COMMON_FUNC" ]]; then + source "$COMMON_FUNC" +fi + +if [[ ! -f "$COMPONENTS_STATUS_FILE" ]]; then + echo "{}" > "$COMPONENTS_STATUS_FILE" +fi + +load_language 2>/dev/null || true +initialize_cache 2>/dev/null || true + +# ========================================================== +# Intel GPU detection +# ========================================================== +detect_intel_gpus() { + local lspci_output + lspci_output=$(lspci | grep -iE "Intel.*VGA|Intel.*Display|Intel.*Graphics" || true) + + if [[ -z "$lspci_output" ]]; then + INTEL_GPU_PRESENT=false + DETECTED_GPUS_TEXT="No Intel GPU detected on this system." + else + INTEL_GPU_PRESENT=true + DETECTED_GPUS_TEXT="" + local i=1 + while IFS= read -r line; do + DETECTED_GPUS_TEXT+=" ${i}. ${line}\n" + ((i++)) + done <<< "$lspci_output" + fi +} + +# ========================================================== +# Check if intel-gpu-tools is installed +# ========================================================== +check_intel_gpu_tools_installed() { + if command -v intel_gpu_top >/dev/null 2>&1; then + INTEL_GPU_TOOLS_INSTALLED=true + INTEL_GPU_TOOLS_VERSION=$(dpkg -s intel-gpu-tools 2>/dev/null | grep '^Version:' | awk '{print $2}' || echo "unknown") + else + INTEL_GPU_TOOLS_INSTALLED=false + INTEL_GPU_TOOLS_VERSION="" + fi +} + +# ========================================================== +# Install intel-gpu-tools +# ========================================================== +install_intel_gpu_tools() { + msg_info "$(translate 'Installing intel-gpu-tools...')" + + if apt-get install -y intel-gpu-tools >>"$LOG_FILE" 2>&1; then + msg_ok "$(translate 'intel-gpu-tools installed successfully')" + + # Get installed version + INTEL_GPU_TOOLS_VERSION=$(dpkg -s intel-gpu-tools 2>/dev/null | grep '^Version:' | awk '{print $2}' || echo "unknown") + + # Update component status + if type update_component_status &>/dev/null; then + update_component_status "intel_gpu_tools" "installed" "$INTEL_GPU_TOOLS_VERSION" "gpu" '{"source":"apt"}' + fi + + return 0 + else + msg_error "$(translate 'Failed to install intel-gpu-tools')" + return 1 + fi +} + +# ========================================================== +# Uninstall intel-gpu-tools +# ========================================================== +uninstall_intel_gpu_tools() { + msg_info "$(translate 'Uninstalling intel-gpu-tools...')" + + if apt-get remove -y intel-gpu-tools >>"$LOG_FILE" 2>&1; then + msg_ok "$(translate 'intel-gpu-tools uninstalled successfully')" + + if type update_component_status &>/dev/null; then + update_component_status "intel_gpu_tools" "uninstalled" "" "gpu" '{}' + fi + return 0 + else + msg_error "$(translate 'Failed to uninstall intel-gpu-tools')" + return 1 + fi +} + +# ========================================================== +# Main execution +# ========================================================== +main() { + # Show ProxMenux logo and title + show_proxmenux_logo + msg_title "$(translate "$SCRIPT_TITLE")" + + # Detect Intel GPUs + detect_intel_gpus + + if ! $INTEL_GPU_PRESENT; then + msg_warn "$(translate 'No Intel GPU detected on this system.')" + msg_info2 "$(translate 'This tool is designed for systems with Intel GPUs.')" + msg_info2 "$(translate 'You can still install intel-gpu-tools if needed.')" + echo "" + else + msg_ok "$(translate 'Intel GPU(s) detected:')" + echo -e "$DETECTED_GPUS_TEXT" + fi + + # Check if already installed + check_intel_gpu_tools_installed + + if $INTEL_GPU_TOOLS_INSTALLED; then + msg_ok "$(translate 'intel-gpu-tools is already installed:') $INTEL_GPU_TOOLS_VERSION" + + # Check for updates + msg_info "$(translate 'Checking for updates...')" + apt-get update -qq >>"$LOG_FILE" 2>&1 + + local available_version + available_version=$(apt-cache policy intel-gpu-tools 2>/dev/null | grep 'Candidate:' | awk '{print $2}') + + if [[ -n "$available_version" && "$available_version" != "$INTEL_GPU_TOOLS_VERSION" ]]; then + msg_info2 "$(translate 'A newer version is available:') $available_version" + msg_info "$(translate 'Updating intel-gpu-tools...')" + + if apt-get install -y intel-gpu-tools >>"$LOG_FILE" 2>&1; then + INTEL_GPU_TOOLS_VERSION="$available_version" + msg_ok "$(translate 'intel-gpu-tools updated to') $INTEL_GPU_TOOLS_VERSION" + + if type update_component_status &>/dev/null; then + update_component_status "intel_gpu_tools" "installed" "$INTEL_GPU_TOOLS_VERSION" "gpu" '{"source":"apt"}' + fi + else + msg_error "$(translate 'Failed to update intel-gpu-tools')" + fi + else + msg_ok "$(translate 'intel-gpu-tools is up to date')" + fi + else + msg_info2 "$(translate 'intel-gpu-tools is not installed')" + msg_info "$(translate 'Starting installation...')" + + # Ensure repositories are configured + if type ensure_repositories &>/dev/null; then + ensure_repositories + fi + + # Install intel-gpu-tools + if ! install_intel_gpu_tools; then + msg_error "$(translate 'Installation failed')" + exit 1 + fi + fi + + echo "" + msg_ok "$(translate 'Intel GPU Tools installation completed!')" + echo "" + msg_info2 "$(translate 'You can now monitor your Intel GPU using:')" + echo " intel_gpu_top - $(translate 'TUI mode (requires root)')" + echo " intel_gpu_frequency - $(translate 'Show GPU frequency')" + echo " intel_gpu_time - $(translate 'Show GPU time')" + echo "" + + # In web mode, don't wait for user input + if ! is_web_mode 2>/dev/null; then + msg_success "$(translate 'Installation completed. Press Enter to continue...')" + read -r + else + msg_success "$(translate 'Installation completed.')" + fi +} + +# Run main function +if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then + main +fi \ No newline at end of file