From 9fa67d432cf3581a6c5f0c255d029f2792eb87ff Mon Sep 17 00:00:00 2001 From: stornic56 <71296607+stornic56@users.noreply.github.com> Date: Mon, 28 Sep 2026 22:41:41 -0500 Subject: [PATCH] Update: OpenVINO 2026.4.0 + NEO 26.35.39758.10 + fixes de robustez y Mesa - OpenVINO Runtime 2026.4.0.22959.99c81491cc3 (BASE_URL packages/2026.4) - NEO 26.35.39758.10 + IGC 2.41.5+22716 (6 paquetes de produccion, sin dbgsym/-devel) - Mesa >= 25.2 en Debian 13: mesa-libgallium sustituye mesa-va-drivers/mesa-vdpau-drivers (Rompe < 25.2.8-3) - INSTALL_DIR derivado de la version (/opt/intel/openvino_2026.4.0) con politica replace y symlink estable - rm -rf cubre symlink O directorio real en la limpieza previa - deps/: set -euo pipefail + guard ${1:-} (sin abortos esporios) - DRY flags/GPU: read -r con guard EOF, deteccion GPU sin SIGPIPE, trap EXIT en modulos, GPU_PRESENT como comparacion - .gitignore: artefactos de instalacion fuera del repo --- .gitignore | 6 + README.md | 41 ++-- core/openvino_logic.sh | 45 +++-- deps/install_openvino_dependencies.sh | 258 +++++++++++++------------- main.sh | 84 +++++---- modules/setup_debian.sh | 56 +++--- modules/setup_fedora.sh | 2 +- modules/setup_ubuntu.sh | 54 +++--- 8 files changed, 288 insertions(+), 258 deletions(-) create mode 100644 .gitignore mode change 100644 => 100755 main.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d568afa --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Artefactos de instalacion (no versionar) +*.tgz +*.sha256 +openvino_toolkit_*/ +temp/ +install.log diff --git a/README.md b/README.md index 94c0b2e..2cacc5c 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,11 @@ This project repository provides a comprehensive automated installation and conf ## Supported Operating Systems -* Debian 13 -* Ubuntu 24.04 -* Ubuntu 26.04 -* Fedora 43 +* Debian 13 +* Ubuntu 22.04 +* Ubuntu 24.04 +* Ubuntu 26.04 +* Fedora 43 --- @@ -16,7 +17,9 @@ This project repository provides a comprehensive automated installation and conf The installer scripts are designed to be executed as a root user (`sudo`). Ensure all necessary system dependencies (such as `git`, `wget`, and the respective package managers like `dpkg`/`dnf`) exist before execution. ### Setup & Clone Repository + First, clone the repository from GitHub: + ```bash # 1. Clone the installer repository git clone https://github.com/stornic56/openvino-runtime-simple-installer @@ -27,7 +30,9 @@ chmod +x main.sh ``` ### Execution + Execute the primary installation script using elevated privileges (root access is mandatory): + ```bash sudo ./main.sh ``` @@ -37,19 +42,21 @@ sudo ./main.sh The execution of `main.sh` automatically handles OS detection and conditionally installs components based on hardware presence, ensuring a fully configured inference pipeline: **Core Runtime & Libraries:** -* **OpenVINO Toolkit 2026.0:** The complete runtime package is downloaded from the official OpenVINO repository (`https://storage.openvinotoolkit.org/repositories/openvino/packages/2026.0/linux`) and installed under `/opt/intel/openvino_2026`. It is the same version used in llama.cpp in its builds. -* **System Dependencies:** Required libraries, including `cmake`, Python 3 (with version-specific dependencies like `libpython3.13` for Debian 13 or `libpython3.13` for Ubuntu 26.04), GCC compilers (`g++`), NumPy bindings, and standard development tools are installed via system package managers (`apt`/`dnf`). + +* **OpenVINO Toolkit 2026.4:** The complete runtime package is downloaded from the official OpenVINO repository (`https://storage.openvinotoolkit.org/repositories/openvino/packages/2026.4/linux`) and installed under `/opt/intel/openvino_2026`. It is the same version used in llama.cpp in its builds. +* **System Dependencies:** Required libraries, including `cmake`, Python 3 (with version-specific dependencies like `libpython3.13` for Debian 13 or `libpython3.13` for Ubuntu 26.04), GCC compilers (`g++`), NumPy bindings, and standard development tools are installed via system package managers (`apt`/`dnf`). **Hardware Acceleration & Drivers (NEO):** -* **Intel Compute Runtime NEO:** If an Intel GPU is detected, the respective module script installs critical proprietary drivers: - * `intel-igc-core`: Graphics Compiler core components. - * `intel-igc-opencl`: OpenCL interface libraries for graphics compilation. - * `intel-ocloc`/`libze-intel-gpu1`: Compute Runtime interfaces and GPU acceleration layers (OpenCL/oneAPI). - * **Multimedia Support:** Installation of `mesa-va-drivers`, `vainfo`, and related packages to ensure Video Acceleration API support, crucial for media inference tasks. + +* **Intel Compute Runtime NEO (26.35.39758.10):** If an Intel GPU is detected, the respective module script installs critical proprietary drivers: + * `intel-igc-core` (2.41.5): Graphics Compiler core components. + * `intel-igc-opencl` (2.41.5): OpenCL interface libraries for graphics compilation. + * `intel-ocloc`/`libze-intel-gpu1`: Compute Runtime interfaces and GPU acceleration layers (OpenCL/oneAPI). + * **Multimedia Support:** Installation of `mesa-va-drivers`, `vainfo`, and related packages to ensure Video Acceleration API support, crucial for media inference tasks. **Environment Configuration:** -* User permissions are configured by adding the executing user (`$SUDO_USER`) to the system groups `render` and `video` to allow proper GPU access post-installation. +* User permissions are configured by adding the executing user (`$SUDO_USER`) to the system groups `render` and `video` to allow proper GPU access post-installation. ## After Installation @@ -66,8 +73,10 @@ clinfo | grep -i "device name" 4. Check video acceleration vainfo ``` -## Note: + +## Note + Users should reference the following official projects: -- Llamacpp: [Official Repository Link](https://github.com/ggml-org/llama.cpp) and [OpenvinoBackend](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/OPENVINO.md) -- OpenVino Toolkit: [Docs](https://docs.openvino.ai/2026/get-started/install-openvino/install-openvino-archive-linux.html) and [github](https://github.com/openvinotoolkit/openvino) -- Intel NEO Drivers: [Intel Compute Runtime](https://github.com/intel/compute-runtime) +* Llamacpp: [Official Repository Link](https://github.com/ggml-org/llama.cpp) and [OpenvinoBackend](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/OPENVINO.md) +* OpenVino Toolkit: [Docs](https://docs.openvino.ai/2026/get-started/install-openvino/install-openvino-archive-linux.html) and [github](https://github.com/openvinotoolkit/openvino) +* Intel NEO Drivers: [Intel Compute Runtime](https://github.com/intel/compute-runtime) diff --git a/core/openvino_logic.sh b/core/openvino_logic.sh index 0f0a5d4..ca0e278 100644 --- a/core/openvino_logic.sh +++ b/core/openvino_logic.sh @@ -17,30 +17,45 @@ if [ "$1" = "--install" ]; then exit 1 fi - # Clean up any previous installation before proceeding - if [ -d "/opt/intel/openvino_2026.0" ]; then - print_warning "An existing OpenVINO installation was found. Removing it..." - rm -rf "/opt/intel/openvino_2026.0" - fi - if [ -L "/opt/intel/openvino_2026" ]; then - rm -f "/opt/intel/openvino_2026" - fi + # Derive destination from version (official doc pattern: year.patch) + # e.g. openvino_toolkit_ubuntu24__x86_64.tgz -> /opt/intel/openvino_ + VERSION_FULL="$(echo "$FILENAME" | cut -d_ -f4)" + case "$VERSION_FULL" in + 20[0-9][0-9].*) ;; # valid version format, continue + *) + print_error "Could not derive version from: $FILENAME" + exit 1 + ;; + esac + INSTALL_DIR="/opt/intel/openvino_$(echo "$VERSION_FULL" | cut -d. -f1-3)" + # Replace policy (updates): remove ANY previous 2026 install and the previous symlink. + # Known limitation: the previous install is deleted BEFORE extracting; if the tar + # failed afterwards, the system would be left without OpenVINO. Acceptable because + # the SHA256 was already verified during the download step. + if ls -d /opt/intel/openvino_2026.* >/dev/null 2>&1; then + print_warning "An existing OpenVINO installation was found. Replacing it..." + fi + rm -rf /opt/intel/openvino_2026 # remove previous symlink OR real directory (rm -rf does not follow symlinks) + rm -rf /opt/intel/openvino_2026.* # ANY previous 2026 install + mkdir -p /opt/intel + + DIRNAME="${FILENAME%.tgz}" # known before tar (enables trap cleanup) + trap 'rm -rf "$DIRNAME"' EXIT print_substep "Unzipping $FILENAME..." tar -xf "$FILENAME" - # The name of the extracted folder matches the name of the tarball without the .tgz extension - DIRNAME="${FILENAME%.tgz}" if [ ! -d "$DIRNAME" ]; then # guess the real name - DIRNAME=$(tar -tf "$FILENAME" | head -1 | cut -d/ -f1) + TAR_LIST=$(tar -tf "$FILENAME") + DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE) + DIRNAME="${DIRNAME%%/*}" fi - print_substep "Moving $DIRNAME a /opt/intel/openvino_2026.0..." - mkdir -p /opt/intel - mv "$DIRNAME" "/opt/intel/openvino_2026.0" + print_substep "Moving $DIRNAME a $INSTALL_DIR..." + mv "$DIRNAME" "$INSTALL_DIR" print_substep "Create symbolic link /opt/intel/openvino_2026..." - ln -sf /opt/intel/openvino_2026.0 /opt/intel/openvino_2026 + ln -s "$INSTALL_DIR" /opt/intel/openvino_2026 exit 0 fi diff --git a/deps/install_openvino_dependencies.sh b/deps/install_openvino_dependencies.sh index 268da71..c635db2 100644 --- a/deps/install_openvino_dependencies.sh +++ b/deps/install_openvino_dependencies.sh @@ -6,7 +6,7 @@ # Modified by stornic56 (2026) to add support for Debian 13 (Trixie), Ubuntu 26.04, # and Python 3.13 dependencies. Also ensures dnf is used on Fedora. -set -e +set -euo pipefail #=================================================================================================== # Option parsing @@ -26,24 +26,24 @@ keepcache= selftest= while :; do - case $1 in - -h|-\?|--help) - echo "Options:" - echo " -y non-interactive run (off)" - echo " -n dry-run, assume no (off)" - echo " -c= install component , can be repeated (${all_comp[*]})" - echo " -e add extra repositories (RHEL 7, 8, 9) (off)" - echo " -p print package list and exit (off)" - exit - ;; - -y) interactive= ;; - -n) dry=yes ;; - -c=?*) comp+=("${1#*=}") ;; - -e) extra=yes ;; - -p) print=yes ;; - --selftest) selftest=yes ;; - --keepcache) keepcache=yes ;; - *) break ;; + case "${1:-}" in + -h | -\? | --help) + echo "Options:" + echo " -y non-interactive run (off)" + echo " -n dry-run, assume no (off)" + echo " -c= install component , can be repeated (${all_comp[*]})" + echo " -e add extra repositories (RHEL 7, 8, 9) (off)" + echo " -p print package list and exit (off)" + exit + ;; + -y) interactive= ;; + -n) dry=yes ;; + -c=?*) comp+=("${1#*=}") ;; + -e) extra=yes ;; + -p) print=yes ;; + --selftest) selftest=yes ;; + --keepcache) keepcache=yes ;; + *) break ;; esac shift done @@ -56,22 +56,22 @@ fi #=================================================================================================== # Selftest -if [ -n "$selftest" ] ; then +if [ -n "$selftest" ]; then for image in centos:7 centos:8 rhel:8 rhel:9.1 \ - almalinux:8.7 amazonlinux:2 \ - fedora:34 fedora:35 fedora:36 fedora:37 fedora:38 \ - opensuse/leap:15.3 \ - raspbian:9 debian:9 ubuntu:18.04 \ - raspbian:10 debian:10 ubuntu:20.04 ubuntu:20.10 ubuntu:21.04 \ - raspbian:11 debian:11 ubuntu:21.10 ubuntu:22.04 \ - raspbian:12 debian:12 debian:13 ubuntu:22.10 ubuntu:23.04 ubuntu:24.04; do - for opt in "-h" "-p" "-e -p" "-n" "-n -e" "-y" "-y -e" ; do + almalinux:8.7 amazonlinux:2 \ + fedora:34 fedora:35 fedora:36 fedora:37 fedora:38 \ + opensuse/leap:15.3 \ + raspbian:9 debian:9 ubuntu:18.04 \ + raspbian:10 debian:10 ubuntu:20.04 ubuntu:20.10 ubuntu:21.04 \ + raspbian:11 debian:11 ubuntu:21.10 ubuntu:22.04 \ + raspbian:12 debian:12 debian:13 ubuntu:22.10 ubuntu:23.04 ubuntu:24.04; do + for opt in "-h" "-p" "-e -p" "-n" "-n -e" "-y" "-y -e"; do echo "||" echo "|| Test $image / '$opt'" echo "||" - SCRIPT_DIR="$( cd "$( dirname "$(realpath "${BASH_SOURCE:-$0}")" )" >/dev/null 2>&1 && pwd )" + SCRIPT_DIR="$(cd "$(dirname "$(realpath "${BASH_SOURCE:-$0}")")" >/dev/null 2>&1 && pwd)" docker run -it --rm \ - --volume "${SCRIPT_DIR}":/scripts:ro,Z \ + --volume "${SCRIPT_DIR}":/scripts:ro,Z \ --volume yum-cache:/var/cache/yum \ --volume apt-cache:/var/cache/apt/archives \ -e DEBIAN_FRONTEND=noninteractive \ @@ -87,9 +87,9 @@ if [ -n "$selftest" ] ; then echo "||" echo "|| Test ubuntu:26.04 / '$opt'" echo "||" - SCRIPT_DIR="$( cd "$( dirname "$(realpath "${BASH_SOURCE:-$0}")" )" >/dev/null 2>&1 && pwd )" + SCRIPT_DIR="$(cd "$(dirname "$(realpath "${BASH_SOURCE:-$0}")")" >/dev/null 2>&1 && pwd)" docker run -it --rm \ - --volume "${SCRIPT_DIR}":/scripts:ro,Z \ + --volume "${SCRIPT_DIR}":/scripts:ro,Z \ --volume yum-cache:/var/cache/yum \ --volume apt-cache:/var/cache/apt/archives \ -e DEBIAN_FRONTEND=noninteractive \ @@ -108,32 +108,40 @@ fi #=================================================================================================== # OS detection -if [ "$os" == "auto" ] ; then - # shellcheck source=/dev/null - os=$( . /etc/os-release ; echo "${ID}${VERSION_ID}" ) - if [[ "$os" =~ "rhel8".* ]] ; then - os="rhel8" +if [ "$os" == "auto" ]; then + os="" + if [ -f /etc/os-release ]; then + os=$( + . /etc/os-release + echo "${ID:-}${VERSION_ID:-}" + ) + fi + if [[ "$os" =~ "rhel8".* ]]; then + os="rhel8" fi case $os in - centos7|centos8|centos9|\ - rhel8|rhel9.1|rhel9.2|rhel9.3|rhel9.4|\ - opencloudos8.5|opencloudos8.6|opencloudos8.8|opencloudos9.0|opencloudos9.2|\ - tencentos3.1|tencentos3.2|tencentos3.3|tencentos4.0|tencentos4.2|\ - anolis8.6|anolis8.8|\ - openEuler20.03|openEuler22.03|openEuler23.03|openEuler24.03|\ - almalinux8.7|almalinux8.8|almalinux9.2|almalinux9.3|almalinux9.4|\ - amzn2|amzn2022|amzn2023|\ - ol8.7|ol8.8|ol9.2|ol9.3|ol9.4|\ - rocky8.7|rocky8.8|rocky9.2|rocky9.3|rocky9.4|\ - fedora29|fedora30|fedora31|fedora32|fedora33|fedora34|fedora35|fedora36|\ - fedora37|fedora38|fedora39|fedora40|fedora41|\ - fedora42|fedora43|fedora44|fedora*|\ - opensuse-leap15.3|\ - raspbian9|debian9|ubuntu18.04|\ - raspbian10|debian10|ubuntu20.04|ubuntu20.10|ubuntu21.04|\ - raspbian11|debian11|ubuntu21.10|ubuntu22.04|\ - raspbian12|debian12|debian13|ubuntu22.10|ubuntu23.04|ubuntu23.10|ubuntu24.04|ubuntu26.04) [ -z "$print" ] && echo "Detected OS: ${os}" ;; - *) echo "Unsupported OS: ${os:-detection failed}" >&2 ; exit 1 ;; + centos7 | centos8 | centos9 | \ + rhel8 | rhel9.1 | rhel9.2 | rhel9.3 | rhel9.4 | \ + opencloudos8.5 | opencloudos8.6 | opencloudos8.8 | opencloudos9.0 | opencloudos9.2 | \ + tencentos3.1 | tencentos3.2 | tencentos3.3 | tencentos4.0 | tencentos4.2 | \ + anolis8.6 | anolis8.8 | \ + openEuler20.03 | openEuler22.03 | openEuler23.03 | openEuler24.03 | \ + almalinux8.7 | almalinux8.8 | almalinux9.2 | almalinux9.3 | almalinux9.4 | \ + amzn2 | amzn2022 | amzn2023 | \ + ol8.7 | ol8.8 | ol9.2 | ol9.3 | ol9.4 | \ + rocky8.7 | rocky8.8 | rocky9.2 | rocky9.3 | rocky9.4 | \ + fedora29 | fedora30 | fedora31 | fedora32 | fedora33 | fedora34 | fedora35 | fedora36 | \ + fedora37 | fedora38 | fedora39 | fedora40 | fedora41 | \ + fedora42 | fedora43 | fedora44 | fedora* | \ + opensuse-leap15.3 | \ + raspbian9 | debian9 | ubuntu18.04 | \ + raspbian10 | debian10 | ubuntu20.04 | ubuntu20.10 | ubuntu21.04 | \ + raspbian11 | debian11 | ubuntu21.10 | ubuntu22.04 | \ + raspbian12 | debian12 | debian13 | ubuntu22.10 | ubuntu23.04 | ubuntu23.10 | ubuntu24.04 | ubuntu26.04) [ -z "$print" ] && echo "Detected OS: ${os}" ;; + *) + echo "Unsupported OS: ${os:-detection failed}" >&2 + exit 1 + ;; esac fi @@ -147,15 +155,15 @@ if [ "$os" == "raspbian9" ] || [ "$os" == "debian9" ]; then pkgs_python=() pkgs_dev=(pkg-config g++ gcc libc6-dev make sudo) -elif [ "$os" == "ubuntu18.04" ] ; then +elif [ "$os" == "ubuntu18.04" ]; then pkgs_gpu=(ocl-icd-libopencl1) pkgs_python=(python3.8 libpython3.8 python3.8-venv python3-pip) pkgs_dev=(cmake pkg-config g++ gcc libc6-dev make sudo) -elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] || \ - [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] || [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] || \ - [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] || [ "$os" == "ubuntu24.04" ] || [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] || \ - [ "$os" == "debian13" ] || [ "$os" == "ubuntu26.04" ]; then +elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] || + [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] || [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] || + [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] || [ "$os" == "ubuntu24.04" ] || [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] || + [ "$os" == "debian13" ] || [ "$os" == "ubuntu26.04" ]; then pkgs_gpu=(ocl-icd-libopencl1) pkgs_python=(python3 python3-venv python3-pip) @@ -165,11 +173,11 @@ elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "debian10" ] || [ "$os" == "raspbi pkgs_python+=(libpython3.7) elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "ubuntu20.10" ] || [ "$os" == "ubuntu21.04" ]; then pkgs_python+=(libpython3.8) - elif [ "$os" == "ubuntu21.10" ] || \ - [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ]; then + elif [ "$os" == "ubuntu21.10" ] || + [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ]; then pkgs_python+=(libpython3.9) - elif [ "$os" == "ubuntu22.04" ] || [ "$os" == "ubuntu22.10" ] || \ - [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ]; then + elif [ "$os" == "ubuntu22.04" ] || [ "$os" == "ubuntu22.10" ] || + [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ]; then pkgs_python+=(libpython3.10) elif [ "$os" == "ubuntu23.04" ]; then pkgs_python+=(libpython3.11) @@ -182,29 +190,29 @@ elif [ "$os" == "ubuntu20.04" ] || [ "$os" == "debian10" ] || [ "$os" == "raspbi fi elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] || - [ "$os" == "rhel8" ] || - [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ] || - [ "$os" == "opencloudos8.5" ] || [ "$os" == "opencloudos8.6" ] || [ "$os" == "opencloudos8.8" ] || - [ "$os" == "opencloudos9.0" ] || [ "$os" == "opencloudos9.2" ] || - [ "$os" == "tencentos3.1" ] || [ "$os" == "tencentos3.2" ] || [ "$os" == "tencentos3.3" ] || - [ "$os" == "tencentos4.0" ] || [ "$os" == "tencentos4.2" ] || - [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || - [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ] || - [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] || - [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || - [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || - [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || - [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || - [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || - [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || - [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || - [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || - [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || - [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] ; then + [ "$os" == "rhel8" ] || + [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ] || + [ "$os" == "opencloudos8.5" ] || [ "$os" == "opencloudos8.6" ] || [ "$os" == "opencloudos8.8" ] || + [ "$os" == "opencloudos9.0" ] || [ "$os" == "opencloudos9.2" ] || + [ "$os" == "tencentos3.1" ] || [ "$os" == "tencentos3.2" ] || [ "$os" == "tencentos3.3" ] || + [ "$os" == "tencentos4.0" ] || [ "$os" == "tencentos4.2" ] || + [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || + [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ] || + [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] || + [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || + [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || + [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || + [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || + [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || + [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || + [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || + [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || + [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || + [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ]; then arch=$(uname -m) - if [ "$os" == "amzn2" ] ; then + if [ "$os" == "amzn2" ]; then amazon-linux-extras install epel python3.8 fi @@ -212,42 +220,42 @@ elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] pkgs_python=() pkgs_dev=(gcc gcc-c++ make glibc libstdc++ libgcc cmake3 sudo) - if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ] ; then + if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ]; then pkgs_dev+=(pkgconfig) else pkgs_dev+=(pkgconf-pkg-config) fi if [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] || - [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || - [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || - [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || - [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || - [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || - [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || - [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || - [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || - [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || - [ "$os" == "centos8" ] || [ "$os" == "centos9" ] || - [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] || - [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || - [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ] ; then + [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || + [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || + [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || + [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || + [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || + [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || + [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || + [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || + [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || + [ "$os" == "centos8" ] || [ "$os" == "centos9" ] || + [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] || + [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || + [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ]; then pkgs_python+=(python3 python3-pip) fi - if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ] ; then + if [ "$os" == "centos7" ] || [ "$os" == "amzn2" ]; then pkgs_gpu+=("ocl-icd.$arch") extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm") - elif [ "$os" == "rhel8" ] ; then + elif [ "$os" == "rhel8" ]; then pkgs_gpu+=("http://vault.centos.org/centos/8-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.12-1.el8.$arch.rpm") pkgs_python+=(python38 python38-pip) extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm") - elif [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ] ; then + elif [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ]; then pkgs_gpu+=("https://mirror.stream.centos.org/9-stream/AppStream/$arch/os/Packages/ocl-icd-2.2.13-4.el9.$arch.rpm") pkgs_python+=(python3 python3-pip) extra_repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm") fi -elif [ "$os" == "opensuse-leap15.3" ] ; then +elif [ "$os" == "opensuse-leap15.3" ]; then pkgs_gpu=(libOpenCL1) pkgs_python=(python39-base python39 python39-venv python39-pip) pkgs_dev=(cmake pkg-config gcc-c++ gcc make sudo) @@ -260,13 +268,13 @@ fi # Gather packages and print list pkgs=() -for comp in "${comp[@]}" ; do +for comp in "${comp[@]}"; do var="pkgs_${comp}[@]" pkgs+=("${!var}") done if [ ${#pkgs[@]} -eq 0 ]; then - if [ -n "$print" ] ; then + if [ -n "$print" ]; then echo "No packages to install" >&2 exit 1 else @@ -275,7 +283,7 @@ if [ ${#pkgs[@]} -eq 0 ]; then fi fi -if [ -n "$print" ] ; then +if [ -n "$print" ]; then echo "${pkgs[*]}" exit 0 fi @@ -292,9 +300,9 @@ fi iopt= if [ "$os" == "debian9" ] || [ "$os" == "raspbian9" ] || [ "$os" == "ubuntu18.04" ] || - [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] || [ "$os" == "ubuntu20.04" ] || [ "$os" == "ubuntu20.10" ] || [ "$os" == "ubuntu21.04" ] || - [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] || [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] || - [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] || [ "$os" == "debian13" ] || [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] || [ "$os" == "ubuntu23.10" ] || [ "$os" == "ubuntu24.04" ] || [ "$os" == "ubuntu26.04" ] ; then + [ "$os" == "debian10" ] || [ "$os" == "raspbian10" ] || [ "$os" == "ubuntu20.04" ] || [ "$os" == "ubuntu20.10" ] || [ "$os" == "ubuntu21.04" ] || + [ "$os" == "debian11" ] || [ "$os" == "raspbian11" ] || [ "$os" == "ubuntu21.10" ] || [ "$os" == "ubuntu22.04" ] || + [ "$os" == "debian12" ] || [ "$os" == "raspbian12" ] || [ "$os" == "debian13" ] || [ "$os" == "ubuntu22.10" ] || [ "$os" == "ubuntu23.04" ] || [ "$os" == "ubuntu23.10" ] || [ "$os" == "ubuntu24.04" ] || [ "$os" == "ubuntu26.04" ]; then [ -z "$interactive" ] && iopt="-y" [ -n "$dry" ] && iopt="--dry-run" @@ -303,21 +311,21 @@ if [ "$os" == "debian9" ] || [ "$os" == "raspbian9" ] || [ "$os" == "ubuntu18.04 apt-get update && apt-get install --no-install-recommends "$iopt" "${pkgs[@]}" elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] || - [ "$os" == "rhel8" ] || - [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ] || - [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || - [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ] || - [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] || - [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || - [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || - [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || - [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || - [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || - [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || - [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || - [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || - [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || - [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ] ; then + [ "$os" == "rhel8" ] || + [ "$os" == "rhel9.1" ] || [ "$os" == "rhel9.2" ] || [ "$os" == "rhel9.3" ] || [ "$os" == "rhel9.4" ] || + [ "$os" == "anolis8.6" ] || [ "$os" == "anolis8.8" ] || + [ "$os" == "openEuler20.03" ] || [ "$os" == "openEuler22.03" ] || [ "$os" == "openEuler23.03" ] || [ "$os" == "openEuler24.03" ] || + [ "$os" == "fedora29" ] || [ "$os" == "fedora30" ] || [ "$os" == "fedora31" ] || [ "$os" == "fedora32" ] || + [ "$os" == "fedora33" ] || [ "$os" == "fedora34" ] || [ "$os" == "fedora35" ] || [ "$os" == "fedora36" ] || + [ "$os" == "fedora37" ] || [ "$os" == "fedora38" ] || [ "$os" == "fedora39" ] || [ "$os" == "fedora40" ] || + [ "$os" == "fedora41" ] || [ "$os" == "fedora42" ] || [ "$os" == "fedora43" ] || [ "$os" == "fedora44" ] || [[ "$os" == fedora* ]] || + [ "$os" == "ol8.7" ] || [ "$os" == "ol8.8" ] || + [ "$os" == "ol9.2" ] || [ "$os" == "ol9.3" ] || [ "$os" == "ol9.4" ] || + [ "$os" == "rocky8.7" ] || [ "$os" == "rocky8.8" ] || + [ "$os" == "rocky9.2" ] || [ "$os" == "rocky9.3" ] || [ "$os" == "rocky9.4" ] || + [ "$os" == "almalinux8.7" ] || [ "$os" == "almalinux8.8" ] || + [ "$os" == "almalinux9.2" ] || [ "$os" == "almalinux9.3" ] || [ "$os" == "almalinux9.4" ] || + [ "$os" == "amzn2" ] || [ "$os" == "amzn2022" ] || [ "$os" == "amzn2023" ]; then # Usar dnf en Fedora moderna, yum en el resto if [[ "$os" == fedora* ]]; then @@ -333,7 +341,7 @@ elif [ "$os" == "centos7" ] || [ "$os" == "centos8" ] || [ "$os" == "centos9" ] $PKGCMD install ${iopt:+$iopt} "${pkgs[@]}" -elif [ "$os" == "opensuse-leap15.3" ] ; then +elif [ "$os" == "opensuse-leap15.3" ]; then [ -z "$interactive" ] && iopt="-y" [ -n "$dry" ] && iopt="--dry-run" diff --git a/main.sh b/main.sh old mode 100644 new mode 100755 index a64e405..745dd50 --- a/main.sh +++ b/main.sh @@ -45,26 +45,27 @@ print_substep "System detected: $OS_ID $VERSION_ID" # Prefix mapping case "$OS_ID" in - debian) - PREFIX="ubuntu24" # Tested and working on Debian 13 - ;; - ubuntu) - case "$VERSION_ID" in - 22.04) PREFIX="ubuntu22" ;; - 24.04|26.04) PREFIX="ubuntu24" ;; - *) - print_error "Unsupported Ubuntu version: $VERSION_ID" - exit 1 - ;; - esac - ;; - fedora) - PREFIX="rhel8" - ;; +debian) + PREFIX="ubuntu24" # Tested and working on Debian 13 + ;; +ubuntu) + case "$VERSION_ID" in + 22.04) PREFIX="ubuntu22" ;; + 24.04) PREFIX="ubuntu24" ;; + 26.04) PREFIX="ubuntu26" ;; *) - print_error "Unsupported distribution: $OS_ID" + print_error "Unsupported Ubuntu version: $VERSION_ID" exit 1 ;; + esac + ;; +fedora) + PREFIX="rhel8" + ;; +*) + print_error "Unsupported distribution: $OS_ID" + exit 1 + ;; esac # ------------------------------------------------------------------------------ @@ -72,38 +73,43 @@ esac # ------------------------------------------------------------------------------ print_step "2. Detecting Intel GPU..." -if GPU_LINE=$(lspci -nn | grep -i "vga\|3d\|display" | grep -i "intel" | head -1); then +LSPCI_INTEL=$(lspci -nn 2>/dev/null | grep -i "vga\|3d\|display" | grep -i "intel" || true) # lspci missing -> empty -> prompt (documented degradation) +GPU_LINE="${LSPCI_INTEL%%$'\n'*}" +if [ -n "$GPU_LINE" ]; then GPU_NAME=$(echo "$GPU_LINE" | awk -F': ' '{print $2}') print_substep "Intel GPU detected: $GPU_NAME" GPU_PRESENT=true else print_warning "No Intel GPU was detected." GPU_PRESENT=false - read -p "Do you want to continue the installation WITHOUT GPU support? [y/n]: " response + read -r -p "Do you want to continue the installation WITHOUT GPU support? [y/n]: " response || { + print_error "No interactive input available (stdin closed). Installation cancelled." + exit 1 + } case "$response" in - [yY]*) ;; - *) - print_error "Installation cancelled by the user." - exit 0 - ;; + [yY]*) ;; + *) + print_error "Installation cancelled by the user." + exit 0 + ;; esac fi # ------------------------------------------------------------------------------ # 3. Install NEO (only if there is a GPU) # ------------------------------------------------------------------------------ -if $GPU_PRESENT; then +if [ "$GPU_PRESENT" = true ]; then print_step "3. Installing GPU drivers (Intel Compute Runtime NEO)..." case "$OS_ID" in - debian) - bash "$MODULES_DIR/setup_debian.sh" - ;; - ubuntu) - bash "$MODULES_DIR/setup_ubuntu.sh" - ;; - fedora) - bash "$MODULES_DIR/setup_fedora.sh" - ;; + debian) + bash "$MODULES_DIR/setup_debian.sh" + ;; + ubuntu) + bash "$MODULES_DIR/setup_ubuntu.sh" + ;; + fedora) + bash "$MODULES_DIR/setup_fedora.sh" + ;; esac else print_step "3. Skipping NEO driver installation (no Intel GPU)." @@ -113,8 +119,8 @@ fi # 4. Download OpenVINO Runtime # ------------------------------------------------------------------------------ print_step "4. Downloading OpenVINO Runtime package..." -BASE_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2026.0/linux" -VERSION="2026.0.0.20965.c6d6a13a886" +BASE_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2026.4/linux" +VERSION="2026.4.0.22959.99c81491cc3" FILENAME="openvino_toolkit_${PREFIX}_${VERSION}_x86_64.tgz" URL="$BASE_URL/$FILENAME" @@ -143,8 +149,8 @@ bash "$CORE_DIR/openvino_logic.sh" --install "$FILENAME" print_step "Installation completed successfully!" # installed version -if [ -f "/opt/intel/openvino_2026.0/runtime/version.txt" ]; then - echo "Version: $(cat /opt/intel/openvino_2026.0/runtime/version.txt)" +if [ -f "/opt/intel/openvino_2026/runtime/version.txt" ]; then + echo "Version: $(cat /opt/intel/openvino_2026/runtime/version.txt)" else echo "Version: could not be determined" fi @@ -155,7 +161,7 @@ echo " source /opt/intel/openvino_2026/setupvars.sh" echo "" echo "----------------------------------------------------------------------" -if $GPU_PRESENT; then +if [ "$GPU_PRESENT" = true ]; then echo "IMPORTANT NOTES:" echo "1. Restart your session (or system) for the group changes (render, video) to take effect and for you to be able to use the GPU." echo "2. Check the OpenCL status with: clinfo" diff --git a/modules/setup_debian.sh b/modules/setup_debian.sh index f295d86..98d97b7 100644 --- a/modules/setup_debian.sh +++ b/modules/setup_debian.sh @@ -11,9 +11,9 @@ print_step "Debian Module – Drivers and Multimedia" print_substep "Ensuring non-free components in sources.list..." SOURCES_FILE="/etc/apt/sources.list" if [ -f "$SOURCES_FILE" ]; then - sudo sed -i 's/^\(deb.*trixie.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" - sudo sed -i 's/^\(deb.*trixie-security.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" - sudo sed -i 's/^\(deb.*trixie-updates.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" + sed -i 's/^\(deb.*trixie.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" + sed -i 's/^\(deb.*trixie-security.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" + sed -i 's/^\(deb.*trixie-updates.*main\)[^#]*/\1 contrib non-free non-free-firmware/' "$SOURCES_FILE" fi if [ -f /etc/apt/sources.list.d/debian.sources ]; then @@ -27,7 +27,7 @@ print_substep "Installing graphics and diagnostic packages..." apt-get install -y \ python3-numpy libmfx-gen1.2 libvpl2 libegl-mesa0 libegl1-mesa-dev libgbm1 \ libgl1-mesa-dri libglapi-mesa libgles2-mesa-dev libglx-mesa0 libxatracker2 \ - mesa-va-drivers mesa-vdpau-drivers vainfo clinfo nvtop ocl-icd-libopencl1 + mesa-libgallium vainfo clinfo nvtop ocl-icd-libopencl1 print_substep "Installing Intel video driver..." if apt-get install -y intel-media-va-driver-non-free; then @@ -41,15 +41,16 @@ fi print_substep "Downloading and installing NEO…" TEMP_DIR=$(mktemp -d) cd "$TEMP_DIR" +trap 'rm -rf "$TEMP_DIR"' EXIT # Hashes SHA256 declare -A NEO_HASHES=( - ["intel-igc-core-2_2.34.4+21428_amd64.deb"]="1150de9f1b8c06aab0bf6e619a6c02ed4cd0c7b4135752ae74c82c8f8fb7acb2" - ["intel-igc-opencl-2_2.34.4+21428_amd64.deb"]="f36cb8a6899353c61cc7261b650f287f4a652acadaad859103bdfc51f93b6e8a" - ["intel-ocloc_26.18.38308.1-0_amd64.deb"]="74b98d91a92d59c487e4938175284e57d5a84ec35d9997a9d65fa4db3f51b96b" - ["intel-opencl-icd_26.18.38308.1-0_amd64.deb"]="b2d0c924e56b3f9e5837774d68b0c67461b8633035d93ca18b1a8e3e5ead15fa" + ["intel-igc-core-2_2.41.5+22716_amd64.deb"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628" + ["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058" + ["intel-ocloc_26.35.39758.10-0_amd64.deb"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7" + ["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301" ["libigdgmm12_22.10.0_amd64.deb"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54" - ["libze-intel-gpu1_26.18.38308.1-0_amd64.deb"]="12b8254e6d3415c32cee9cd13943030b991d91212445c79fe1cc27176a72eca4" + ["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470" ) download_and_verify() { @@ -64,32 +65,21 @@ download_and_verify() { fi } -download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.34.4/intel-igc-core-2_2.34.4+21428_amd64.deb" \ - "intel-igc-core-2_2.34.4+21428_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.34.4+21428_amd64.deb"]}" -download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.34.4/intel-igc-opencl-2_2.34.4+21428_amd64.deb" \ - "intel-igc-opencl-2_2.34.4+21428_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.34.4+21428_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/intel-ocloc_26.18.38308.1-0_amd64.deb" \ - "intel-ocloc_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.18.38308.1-0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/intel-opencl-icd_26.18.38308.1-0_amd64.deb" \ - "intel-opencl-icd_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.18.38308.1-0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/libigdgmm12_22.10.0_amd64.deb" \ +download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-core-2_2.41.5+22716_amd64.deb" \ + "intel-igc-core-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.41.5+22716_amd64.deb"]}" +download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-opencl-2_2.41.5+22716_amd64.deb" \ + "intel-igc-opencl-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-ocloc_26.35.39758.10-0_amd64.deb" \ + "intel-ocloc_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.35.39758.10-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-opencl-icd_26.35.39758.10-0_amd64.deb" \ + "intel-opencl-icd_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libigdgmm12_22.10.0_amd64.deb" \ "libigdgmm12_22.10.0_amd64.deb" "${NEO_HASHES["libigdgmm12_22.10.0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/libze-intel-gpu1_26.18.38308.1-0_amd64.deb" \ - "libze-intel-gpu1_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.18.38308.1-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libze-intel-gpu1_26.35.39758.10-0_amd64.deb" \ + "libze-intel-gpu1_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]}" print_substep "Instalando paquetes deb..." -dpkg -i libigdgmm12_22.10.0_amd64.deb - -dpkg -i intel-igc-core-2_2.34.4+21428_amd64.deb - -dpkg -i intel-igc-opencl-2_2.34.4+21428_amd64.deb - -dpkg -i intel-ocloc_26.18.38308.1-0_amd64.deb - -dpkg -i libze-intel-gpu1_26.18.38308.1-0_amd64.deb - -dpkg -i intel-opencl-icd_26.18.38308.1-0_amd64.deb -apt-get install -f -y +apt-get install -y ./*.deb cd / rm -rf "$TEMP_DIR" @@ -100,6 +90,6 @@ if [ -n "${SUDO_USER:-}" ]; then usermod -a -G render,video "$SUDO_USER" else # root - current_user=$(logname 2>/dev/null || echo "$USER") + current_user="${SUDO_USER:-$(logname 2>/dev/null || id -un)}" usermod -a -G render,video "$current_user" fi diff --git a/modules/setup_fedora.sh b/modules/setup_fedora.sh index 274c0fc..05ee490 100644 --- a/modules/setup_fedora.sh +++ b/modules/setup_fedora.sh @@ -23,6 +23,6 @@ print_substep "Adding user to render and video groups (if they exist)..." if [ -n "${SUDO_USER:-}" ]; then usermod -a -G render,video "$SUDO_USER" else - current_user=$(logname 2>/dev/null || echo "$USER") + current_user="${SUDO_USER:-$(logname 2>/dev/null || id -un)}" usermod -a -G render,video "$current_user" fi diff --git a/modules/setup_ubuntu.sh b/modules/setup_ubuntu.sh index cbd189e..614a279 100644 --- a/modules/setup_ubuntu.sh +++ b/modules/setup_ubuntu.sh @@ -12,6 +12,12 @@ apt-get update # ---- 2. Paquetes multimedia y diagnóstico ---- print_substep "Installing graphics and diagnostic packages..." +# TODO (H0 watch-out): Debian 13 required dropping mesa-va-drivers AND mesa-vdpau-drivers +# in favor of mesa-libgallium (Mesa >= 25.2 moved the gallium VA-API and VDPAU drivers into +# mesa-libgallium, which Breaks both old names < 25.2.8-3; no amd64 version >= 25.2.8-3 +# exists in trixie nor backports -- see setup_debian.sh). Ubuntu 24.04 is not affected +# (mesa 24.x, real packages). Ubuntu 26.04 may be affected if it ships Mesa >= 25.2 (same +# transition) -- change only with evidence. apt-get install -y \ python3-numpy libmfx-gen1.2 libvpl2 libegl-mesa0 libegl1-mesa-dev libgbm1 \ libgl1-mesa-dri libglapi-mesa libgles2-mesa-dev libglx-mesa0 libxatracker2 \ @@ -24,14 +30,15 @@ apt-get install -y intel-media-va-driver-non-free print_substep "Downloading and installing NEO…" TEMP_DIR=$(mktemp -d) cd "$TEMP_DIR" +trap 'rm -rf "$TEMP_DIR"' EXIT declare -A NEO_HASHES=( - ["intel-igc-core-2_2.34.4+21428_amd64.deb"]="1150de9f1b8c06aab0bf6e619a6c02ed4cd0c7b4135752ae74c82c8f8fb7acb2" - ["intel-igc-opencl-2_2.34.4+21428_amd64.deb"]="f36cb8a6899353c61cc7261b650f287f4a652acadaad859103bdfc51f93b6e8a" - ["intel-ocloc_26.18.38308.1-0_amd64.deb"]="74b98d91a92d59c487e4938175284e57d5a84ec35d9997a9d65fa4db3f51b96b" - ["intel-opencl-icd_26.18.38308.1-0_amd64.deb"]="b2d0c924e56b3f9e5837774d68b0c67461b8633035d93ca18b1a8e3e5ead15fa" + ["intel-igc-core-2_2.41.5+22716_amd64.deb"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628" + ["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058" + ["intel-ocloc_26.35.39758.10-0_amd64.deb"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7" + ["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301" ["libigdgmm12_22.10.0_amd64.deb"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54" - ["libze-intel-gpu1_26.18.38308.1-0_amd64.deb"]="12b8254e6d3415c32cee9cd13943030b991d91212445c79fe1cc27176a72eca4" + ["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470" ) download_and_verify() { @@ -46,31 +53,20 @@ download_and_verify() { fi } -download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.34.4/intel-igc-core-2_2.34.4+21428_amd64.deb" \ - "intel-igc-core-2_2.34.4+21428_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.34.4+21428_amd64.deb"]}" -download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.34.4/intel-igc-opencl-2_2.34.4+21428_amd64.deb" \ - "intel-igc-opencl-2_2.34.4+21428_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.34.4+21428_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/intel-ocloc_26.18.38308.1-0_amd64.deb" \ - "intel-ocloc_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.18.38308.1-0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/intel-opencl-icd_26.18.38308.1-0_amd64.deb" \ - "intel-opencl-icd_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.18.38308.1-0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/libigdgmm12_22.10.0_amd64.deb" \ +download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-core-2_2.41.5+22716_amd64.deb" \ + "intel-igc-core-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-core-2_2.41.5+22716_amd64.deb"]}" +download_and_verify "https://github.com/intel/intel-graphics-compiler/releases/download/v2.41.5/intel-igc-opencl-2_2.41.5+22716_amd64.deb" \ + "intel-igc-opencl-2_2.41.5+22716_amd64.deb" "${NEO_HASHES["intel-igc-opencl-2_2.41.5+22716_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-ocloc_26.35.39758.10-0_amd64.deb" \ + "intel-ocloc_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-ocloc_26.35.39758.10-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/intel-opencl-icd_26.35.39758.10-0_amd64.deb" \ + "intel-opencl-icd_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["intel-opencl-icd_26.35.39758.10-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libigdgmm12_22.10.0_amd64.deb" \ "libigdgmm12_22.10.0_amd64.deb" "${NEO_HASHES["libigdgmm12_22.10.0_amd64.deb"]}" -download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.18.38308.1/libze-intel-gpu1_26.18.38308.1-0_amd64.deb" \ - "libze-intel-gpu1_26.18.38308.1-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.18.38308.1-0_amd64.deb"]}" +download_and_verify "https://github.com/intel/compute-runtime/releases/download/26.35.39758.10/libze-intel-gpu1_26.35.39758.10-0_amd64.deb" \ + "libze-intel-gpu1_26.35.39758.10-0_amd64.deb" "${NEO_HASHES["libze-intel-gpu1_26.35.39758.10-0_amd64.deb"]}" -dpkg -i libigdgmm12_22.10.0_amd64.deb - -dpkg -i intel-igc-core-2_2.34.4+21428_amd64.deb - -dpkg -i intel-igc-opencl-2_2.34.4+21428_amd64.deb - -dpkg -i intel-ocloc_26.18.38308.1-0_amd64.deb - -dpkg -i libze-intel-gpu1_26.18.38308.1-0_amd64.deb - -dpkg -i intel-opencl-icd_26.18.38308.1-0_amd64.deb -apt-get install -f -y +apt-get install -y ./*.deb cd / rm -rf "$TEMP_DIR" @@ -80,6 +76,6 @@ print_substep "Añadiendo usuario a grupos render y video..." if [ -n "${SUDO_USER:-}" ]; then usermod -a -G render,video "$SUDO_USER" else - current_user=$(logname 2>/dev/null || echo "$USER") + current_user="${SUDO_USER:-$(logname 2>/dev/null || id -un)}" usermod -a -G render,video "$current_user" fi