mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-02-19 08:56:23 +00:00
Create intel_gpu_tools.sh
This commit is contained in:
203
scripts/gpu_tpu/intel_gpu_tools.sh
Normal file
203
scripts/gpu_tpu/intel_gpu_tools.sh
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user