mirror of
https://github.com/stornic56/openvino-runtime-simple-installer.git
synced 2026-10-31 13:08:06 +00:00
fix
An issue with the verification and extraction of the .tgz file was resolved.
This commit is contained in:
+11
-4
@@ -1,9 +1,16 @@
|
||||
#!/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# Common printing functions for all installer scripts.
|
||||
# Dual output: colores ANSI a stdout + texto plano (sin codigos) a $LOG_FILE.
|
||||
# El log es AUXILIAR: su fallo de escritura no debe abortar la operacion
|
||||
# (p. ej. log root-owned + doctor sin root) — por eso el append va guardado.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
print_step() { echo -e "\n\033[1;34m>>>\033[0m \033[1m$1\033[0m"; }
|
||||
print_substep() { echo -e "\033[1;32m =>\033[0m $1"; }
|
||||
print_warning() { echo -e "\033[1;33m [AVISO]\033[0m $1"; }
|
||||
print_error() { echo -e "\033[1;31m [ERROR]\033[0m $1"; }
|
||||
LOG_FILE="${LOG_FILE:-install.log}"
|
||||
|
||||
_log_plain() { printf '%s\n' "$1" >> "$LOG_FILE" 2>/dev/null || true; }
|
||||
|
||||
print_step() { echo -e "\n\033[1;34m>>>\033[0m \033[1m$1\033[0m"; _log_plain ""; _log_plain ">>> $1"; }
|
||||
print_substep() { echo -e "\033[1;32m =>\033[0m $1"; _log_plain " => $1"; }
|
||||
print_warning() { echo -e "\033[1;33m [WARNING]\033[0m $1"; _log_plain " [WARNING] $1"; }
|
||||
print_error() { echo -e "\033[1;31m [ERROR]\033[0m $1"; _log_plain " [ERROR] $1"; }
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# doctor: post-installation verification (no root required).
|
||||
# Sourced by main.sh (doctor subcommand) and by the menu.
|
||||
# Output with print_* from common.sh; exit code = number of failed checks.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
run_doctor_checks() {
|
||||
print_step "Doctor: verifying OpenVINO installation..."
|
||||
local fails=0
|
||||
|
||||
# 1. Stable symlink
|
||||
if [ -L /opt/intel/openvino_2026 ]; then
|
||||
print_substep "Symlink OK: /opt/intel/openvino_2026 -> $(readlink /opt/intel/openvino_2026)"
|
||||
else
|
||||
print_error "Missing symlink /opt/intel/openvino_2026 (was the installation performed?)"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
|
||||
# 2. Installed version
|
||||
if [ -f /opt/intel/openvino_2026/runtime/version.txt ]; then
|
||||
print_substep "Installed version: $(cat /opt/intel/openvino_2026/runtime/version.txt)"
|
||||
else
|
||||
print_error "runtime/version.txt not found"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
|
||||
# 3. OpenCL (clinfo) — capture first (clinfo output is large; grep -q would
|
||||
# SIGPIPE-kill the pipe and report a false negative under pipefail)
|
||||
if command -v clinfo >/dev/null 2>&1; then
|
||||
CLINFO_OUT=$(clinfo 2>/dev/null || true) # clinfo exits !=0 when no devices
|
||||
if [[ "${CLINFO_OUT^^}" == *"DEVICE NAME"* ]]; then
|
||||
print_substep "OpenCL OK (device detected)"
|
||||
else
|
||||
print_warning "clinfo does not detect a device (missing NEO driver or render/video groups?)"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
else
|
||||
print_warning "clinfo is not installed"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
|
||||
# 4. VAAPI (vainfo) — same capture-first pattern (consistency + latent SIGPIPE)
|
||||
if command -v vainfo >/dev/null 2>&1; then
|
||||
VAINFO_OUT=$(vainfo 2>/dev/null || true)
|
||||
if [[ "${VAINFO_OUT^^}" == *"DRIVER VERSION"* ]]; then
|
||||
print_substep "VAAPI OK (driver loaded)"
|
||||
else
|
||||
print_warning "vainfo does not load a driver (missing intel-media-va-driver?)"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
else
|
||||
print_warning "vainfo is not installed"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
|
||||
# 5. render/video groups
|
||||
if id -Gn 2>/dev/null | grep -qw render && id -Gn 2>/dev/null | grep -qw video; then
|
||||
print_substep "Groups OK: user is in render and video"
|
||||
else
|
||||
print_warning "User is NOT in the render/video groups (restart your session after installing)"
|
||||
fails=$((fails+1))
|
||||
fi
|
||||
|
||||
if [ "$fails" -eq 0 ]; then
|
||||
print_substep "Doctor: ALL OK"
|
||||
else
|
||||
print_warning "Doctor: $fails check(s) with warnings or failures"
|
||||
fi
|
||||
return "$fails"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# Minimalist pure-bash menu (zero external dependencies: ANSI + read -sn1).
|
||||
# Navigation: up/down arrows + Enter, number keys as a shortcut, q/ESC exit.
|
||||
# Returns: 0=exit, 1=full installation, 2=NEO only, 3=OpenVINO only,
|
||||
# 4=doctor, 5=uninstall
|
||||
# Requires: common.sh already sourced (print_*), no root needed to navigate.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
MENU_OPTS=("Full installation" "NEO drivers only" "OpenVINO Runtime only" "Verify installation (doctor)" "Uninstall" "Exit")
|
||||
|
||||
show_menu() {
|
||||
local sel=0
|
||||
local n=${#MENU_OPTS[@]}
|
||||
local key rest i opt pad
|
||||
while true; do
|
||||
printf '\033[2J\033[H'
|
||||
echo ""
|
||||
echo "┌──────────────────────────────────────────────┐"
|
||||
echo "│ OpenVINO Simple Installer 2026.4 │"
|
||||
echo "└──────────────────────────────────────────────┘"
|
||||
echo ""
|
||||
i=0
|
||||
for opt in "${MENU_OPTS[@]}"; do
|
||||
pad=$(( 38 - ${#opt} ))
|
||||
if [ "$i" -eq "$sel" ]; then
|
||||
printf '│ \033[1;34m▸ %s. %s\033[0m%*s│\n' "$((i+1))" "$opt" "$pad" ""
|
||||
else
|
||||
printf '│ %s. %s%*s│\n' "$((i+1))" "$opt" "$pad" ""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
echo "└──────────────────────────────────────────────┘"
|
||||
echo ""
|
||||
echo " Arrows + Enter · number + Enter · q/ESC exit"
|
||||
if ! read -rsn1 key; then
|
||||
print_error "No input available."
|
||||
return 0
|
||||
fi
|
||||
if [ "$key" = $'\x1b' ]; then
|
||||
rest=""
|
||||
read -rsn2 -t 0.001 rest || true
|
||||
case "$rest" in
|
||||
'[A') sel=$(( (sel - 1 + n) % n )) ;;
|
||||
'[B') sel=$(( (sel + 1) % n )) ;;
|
||||
*) return 0 ;; # ESC sin flecha: salir
|
||||
esac
|
||||
elif [ "$key" = "" ]; then
|
||||
# Enter: seleccionar la opcion marcada
|
||||
[ "$sel" -eq $((n-1)) ] && return 0
|
||||
return $((sel+1))
|
||||
elif [[ "$key" =~ ^[0-9]$ ]]; then
|
||||
# Atajo numerico: 1..5 seleccionan, 0 sale
|
||||
[ "$key" = "0" ] && return 0
|
||||
if [ "$key" -ge 1 ] && [ "$key" -le $((n-1)) ]; then
|
||||
return "$key"
|
||||
fi
|
||||
elif [ "$key" = "q" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# Shared NEO block: version variables, SHA256 hashes, download with
|
||||
# verification and install via apt. Sourced by the setup_*.sh modules.
|
||||
#
|
||||
# The next version update changes ONLY the 4 variables here
|
||||
# (+ the NEO_HASHES values if the hashes change).
|
||||
# Requires: common.sh already sourced (uses print_*), CWD = TEMP_DIR when
|
||||
# calling install_neo_packages.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# --- Versions (pinned; no auto-detection) ---
|
||||
IGC_TAG="v2.41.5" # release tag in intel/intel-graphics-compiler
|
||||
IGC_BUILD="22716" # IGC package build: 2.41.5+22716
|
||||
IGC_VERSION="${IGC_TAG#v}" # derived: 2.41.5
|
||||
NEO_VERSION="26.35.39758.10" # release in intel/compute-runtime
|
||||
GMM_VERSION="22.10.0" # libigdgmm12 (stable across releases)
|
||||
|
||||
# --- SHA256 hashes by package name (values change with each version) ---
|
||||
declare -A NEO_HASHES=(
|
||||
["intel-igc-core-2"]="0a6e64a663ae65a0fa02d6912ae3b6b37cf85b90c21cc423fd9fef70aaf4f628"
|
||||
["intel-igc-opencl-2"]="779e1b9e88098eb25711e9a8f67c2752665bad22f134aa40ed5649f6e1b87058"
|
||||
["intel-ocloc"]="c64bff586edf2bd9b49f3e4c9c2be25e05c43466e4dafa2a2c3948d498c736b7"
|
||||
["intel-opencl-icd"]="61712caaddeba3d38e4f79e2a0fb23fea25596ca2d72c3144c6eea2331ec4301"
|
||||
["libigdgmm12"]="6031a63d6e8a12ce61c14efc15f2c8e727061286e3820b8594e6d00615e04d54"
|
||||
["libze-intel-gpu1"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
|
||||
)
|
||||
|
||||
# --- Package filename by family ---
|
||||
neo_pkg_filename() {
|
||||
case "$1" in
|
||||
intel-igc-core-2|intel-igc-opencl-2)
|
||||
echo "${1}_${IGC_VERSION}+${IGC_BUILD}_amd64.deb" ;;
|
||||
libigdgmm12)
|
||||
echo "${1}_${GMM_VERSION}_amd64.deb" ;;
|
||||
*)
|
||||
echo "${1}_${NEO_VERSION}-0_amd64.deb" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# --- Download URL by family ---
|
||||
neo_pkg_url() {
|
||||
case "$1" in
|
||||
intel-igc-core-2|intel-igc-opencl-2)
|
||||
echo "https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_TAG}/$(neo_pkg_filename "$1")" ;;
|
||||
*)
|
||||
echo "https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/$(neo_pkg_filename "$1")" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# --- Download with SHA256 verification ---
|
||||
download_and_verify() {
|
||||
local url="$1"
|
||||
local filename="$2"
|
||||
local expected="$3"
|
||||
wget -q --show-progress "$url" -O "$filename"
|
||||
local actual
|
||||
actual=$(sha256sum "$filename" | awk '{print $1}')
|
||||
if [ "$actual" != "$expected" ]; then
|
||||
print_error "SHA256 mismatch for $filename"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Download + verify + install of the 6 production packages ---
|
||||
install_neo_packages() {
|
||||
local pkg f
|
||||
for pkg in intel-igc-core-2 intel-igc-opencl-2 intel-ocloc libigdgmm12 libze-intel-gpu1 intel-opencl-icd; do
|
||||
f="$(neo_pkg_filename "$pkg")"
|
||||
download_and_verify "$(neo_pkg_url "$pkg")" "$f" "${NEO_HASHES[$pkg]}"
|
||||
done
|
||||
|
||||
print_substep "Installing deb packages..."
|
||||
apt-get install -y ./*.deb
|
||||
}
|
||||
+36
-9
@@ -6,10 +6,40 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/common.sh"
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
print_error "Usage: $0 <URL> <OUTPUT_FILE> | $0 --install <FILE>"
|
||||
print_error "Usage: $0 <URL> <OUTPUT_FILE> | $0 --extract <FILE> | $0 --install <FILE>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "--extract" ]; then
|
||||
FILENAME="$2"
|
||||
if [ ! -f "$FILENAME" ]; then
|
||||
print_error " $FILENAME could not be found to extract."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Known before tar (enables partial-extraction cleanup on abort)
|
||||
DIRNAME="${FILENAME%.tgz}"
|
||||
# Cleanup ONLY on abort: the trap is set before tar and DISARMED on success —
|
||||
# otherwise the EXIT trap deletes the just-extracted folder on 'exit 0' and
|
||||
# the deps step (and the later --install) find nothing.
|
||||
trap 'rm -rf "$DIRNAME"' EXIT
|
||||
|
||||
print_substep "Unzipping $FILENAME..."
|
||||
if ! tar -xf "$FILENAME"; then
|
||||
print_error "Extraction of $FILENAME failed."
|
||||
exit 1 # trap fires: partial extraction is cleaned up
|
||||
fi
|
||||
trap - EXIT # success: keep the extracted folder for the deps and install steps
|
||||
|
||||
# fallback if the extracted folder name differs from the tarball name
|
||||
if [ ! -d "$DIRNAME" ]; then
|
||||
TAR_LIST=$(tar -tf "$FILENAME")
|
||||
DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE)
|
||||
DIRNAME="${DIRNAME%%/*}"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "--install" ]; then
|
||||
FILENAME="$2"
|
||||
if [ ! -f "$FILENAME" ]; then
|
||||
@@ -30,9 +60,9 @@ if [ "$1" = "--install" ]; then
|
||||
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.
|
||||
# Known limitation: the previous install is deleted BEFORE moving the new one; if the
|
||||
# mv failed afterwards, the system would be left without OpenVINO. Acceptable because
|
||||
# the extraction and its SHA256 verification already succeeded in the --extract step.
|
||||
if ls -d /opt/intel/openvino_2026.* >/dev/null 2>&1; then
|
||||
print_warning "An existing OpenVINO installation was found. Replacing it..."
|
||||
fi
|
||||
@@ -40,10 +70,7 @@ if [ "$1" = "--install" ]; then
|
||||
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"
|
||||
DIRNAME="${FILENAME%.tgz}"
|
||||
|
||||
if [ ! -d "$DIRNAME" ]; then
|
||||
# guess the real name
|
||||
@@ -51,7 +78,7 @@ if [ "$1" = "--install" ]; then
|
||||
DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE)
|
||||
DIRNAME="${DIRNAME%%/*}"
|
||||
fi
|
||||
print_substep "Moving $DIRNAME a $INSTALL_DIR..."
|
||||
print_substep "Moving $DIRNAME to $INSTALL_DIR..."
|
||||
mv "$DIRNAME" "$INSTALL_DIR"
|
||||
|
||||
print_substep "Create symbolic link /opt/intel/openvino_2026..."
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
# ------------------------------------------------------------------------------
|
||||
# uninstall: removes OpenVINO Runtime (and optionally the NEO drivers).
|
||||
# Sourced by main.sh (uninstall subcommand). Requires root to operate.
|
||||
# Arguments: --purge-drivers (dpkg -r of the 6 NEO packages), --yes (no prompt).
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
run_uninstall() {
|
||||
local PURGE_DRIVERS=false
|
||||
local ASSUME_YES=false
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--purge-drivers) PURGE_DRIVERS=true ;;
|
||||
--yes) ASSUME_YES=true ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
print_error "uninstall requires root. Use: sudo bash main.sh uninstall [--purge-drivers] [--yes]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_step "Uninstall: removing OpenVINO Runtime..."
|
||||
|
||||
# Mandatory confirmation (skipped with --yes)
|
||||
if [ "$ASSUME_YES" != true ]; then
|
||||
read -r -p "This will remove /opt/intel/openvino_2026* (all 2026 installations). Continue? [y/n]: " response || {
|
||||
print_error "No input available. Uninstall cancelled."
|
||||
exit 1
|
||||
}
|
||||
case "$response" in
|
||||
[yY]*) ;;
|
||||
*)
|
||||
print_error "Uninstall cancelled by the user."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Runtime: symlink OR real directory + any 2026 installation
|
||||
# (rm -rf does not follow symlinks — covers both cases)
|
||||
rm -rf /opt/intel/openvino_2026
|
||||
rm -rf /opt/intel/openvino_2026.*
|
||||
print_substep "OpenVINO Runtime removed (/opt/intel/openvino_2026*)"
|
||||
|
||||
# NEO drivers (optional, best-effort with a warning)
|
||||
if [ "$PURGE_DRIVERS" = true ]; then
|
||||
print_substep "Purging NEO drivers (dpkg -r)..."
|
||||
if ! dpkg -r intel-opencl-icd intel-ocloc libigdgmm12 libze-intel-gpu1 intel-igc-core-2 intel-igc-opencl-2 2>/dev/null; then
|
||||
print_warning "Some NEO packages were not installed (on Fedora: dnf remove intel-compute-runtime)"
|
||||
fi
|
||||
fi
|
||||
|
||||
print_substep "Uninstall completed."
|
||||
}
|
||||
@@ -7,6 +7,79 @@ set -euo pipefail
|
||||
# It supports Debian 13, Ubuntu 22.04/24.04/26.04, and Fedora (latest stable versions).
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# routes
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CORE_DIR="$SCRIPT_DIR/core"
|
||||
MODULES_DIR="$SCRIPT_DIR/modules"
|
||||
|
||||
# print
|
||||
source "$CORE_DIR/common.sh"
|
||||
|
||||
# Subcommands (before the root check: doctor is a post-install user verification)
|
||||
case "${1:-}" in
|
||||
doctor)
|
||||
shift
|
||||
source "$CORE_DIR/doctor.sh"
|
||||
run_doctor_checks
|
||||
exit 0
|
||||
;;
|
||||
uninstall)
|
||||
shift
|
||||
source "$CORE_DIR/uninstall.sh"
|
||||
run_uninstall "$@"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# Option parsing (before the root check: parsing needs no privileges)
|
||||
ASSUME_YES=false
|
||||
FORCE_NO_GPU=false
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--yes) ASSUME_YES=true ;;
|
||||
--no-gpu) FORCE_NO_GPU=true ;;
|
||||
--help | -h)
|
||||
echo "Usage: sudo bash main.sh [--yes] [--no-gpu] [doctor]"
|
||||
echo " --yes non-interactive: assume 'yes' at the GPU-absent prompt"
|
||||
echo " --no-gpu skip NEO drivers without prompting"
|
||||
echo " doctor post-install verification (no root required)"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
print_error "Unknown option: $1 (use --help)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Menu (Pure-bash ANSI, cero dependencias): la entrada por defecto; los flags la bypassan
|
||||
MODE="full"
|
||||
if [ "$ASSUME_YES" != true ] && [ "$FORCE_NO_GPU" != true ]; then
|
||||
source "$CORE_DIR/menu.sh"
|
||||
sel=0
|
||||
show_menu || sel=$?
|
||||
case "$sel" in
|
||||
0)
|
||||
print_step "See you soon."
|
||||
exit 0
|
||||
;;
|
||||
1) : ;;
|
||||
2) MODE="neo" ;;
|
||||
3) MODE="openvino" ;;
|
||||
4)
|
||||
source "$CORE_DIR/doctor.sh"
|
||||
run_doctor_checks
|
||||
exit 0
|
||||
;;
|
||||
5)
|
||||
source "$CORE_DIR/uninstall.sh"
|
||||
run_uninstall
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# privileges
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "ERROR: This script must be run as root. Use:"
|
||||
@@ -14,15 +87,6 @@ if [ "$EUID" -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# routes
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CORE_DIR="$SCRIPT_DIR/core"
|
||||
MODULES_DIR="$SCRIPT_DIR/modules"
|
||||
DEPS_DIR="$SCRIPT_DIR/deps"
|
||||
|
||||
# print
|
||||
source "$CORE_DIR/common.sh"
|
||||
|
||||
print_step "============================================="
|
||||
print_step " OpenVINO 2026 - SimpleInstaller"
|
||||
print_step "============================================="
|
||||
@@ -82,23 +146,29 @@ if [ -n "$GPU_LINE" ]; then
|
||||
else
|
||||
print_warning "No Intel GPU was detected."
|
||||
GPU_PRESENT=false
|
||||
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
|
||||
;;
|
||||
esac
|
||||
if [ "$FORCE_NO_GPU" = true ]; then
|
||||
print_substep "--no-gpu set: skipping NEO driver installation."
|
||||
elif [ "$ASSUME_YES" = true ]; then
|
||||
print_substep "--yes set: continuing WITHOUT GPU support."
|
||||
else
|
||||
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
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 3. Install NEO (only if there is a GPU)
|
||||
# ------------------------------------------------------------------------------
|
||||
if [ "$GPU_PRESENT" = true ]; then
|
||||
if [ "$MODE" != "openvino" ] && [ "$GPU_PRESENT" = true ]; then
|
||||
print_step "3. Installing GPU drivers (Intel Compute Runtime NEO)..."
|
||||
case "$OS_ID" in
|
||||
debian)
|
||||
@@ -115,6 +185,11 @@ else
|
||||
print_step "3. Skipping NEO driver installation (no Intel GPU)."
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "neo" ]; then
|
||||
print_step "NEO installation finished."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 4. Download OpenVINO Runtime
|
||||
# ------------------------------------------------------------------------------
|
||||
@@ -132,10 +207,19 @@ bash "$CORE_DIR/openvino_logic.sh" "$URL" "$FILENAME"
|
||||
print_step "5. Integrity verification completed."
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 6. Install system dependencies for OpenVINO
|
||||
# ------------------------------------------------------------------------------
|
||||
print_step "6. Installing system dependencies (Python, cmake, etc.)..."
|
||||
bash "$DEPS_DIR/install_openvino_dependencies.sh" -y
|
||||
# 6. Extract the tarball and install system dependencies from it (official flow)
|
||||
# ------------------------------------------------------------------------------
|
||||
print_step "6. Extracting tarball and installing system dependencies..."
|
||||
bash "$CORE_DIR/openvino_logic.sh" --extract "$FILENAME"
|
||||
|
||||
DEPS_SCRIPT="${FILENAME%.tgz}/install_dependencies/install_openvino_dependencies.sh"
|
||||
if [ ! -f "$DEPS_SCRIPT" ]; then
|
||||
print_error "Unexpected tarball layout: install_dependencies/ not found in the extracted folder."
|
||||
exit 1
|
||||
fi
|
||||
print_substep "Installing system dependencies from the tarball..."
|
||||
bash "$DEPS_SCRIPT" -y
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 7. Install OpenVINO
|
||||
|
||||
+2
-36
@@ -4,6 +4,7 @@ set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../core/common.sh"
|
||||
source "$SCRIPT_DIR/../core/neo_apt.sh"
|
||||
|
||||
print_step "Debian Module – Drivers and Multimedia"
|
||||
|
||||
@@ -44,42 +45,7 @@ cd "$TEMP_DIR"
|
||||
trap 'rm -rf "$TEMP_DIR"' EXIT
|
||||
|
||||
# Hashes SHA256
|
||||
declare -A NEO_HASHES=(
|
||||
["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.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
|
||||
)
|
||||
|
||||
download_and_verify() {
|
||||
local url="$1"
|
||||
local filename="$2"
|
||||
local expected="$3"
|
||||
wget -q --show-progress "$url" -O "$filename"
|
||||
actual=$(sha256sum "$filename" | awk '{print $1}')
|
||||
if [ "$actual" != "$expected" ]; then
|
||||
print_error "SHA256 mismatch para $filename"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
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.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..."
|
||||
apt-get install -y ./*.deb
|
||||
install_neo_packages
|
||||
|
||||
cd /
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
+3
-36
@@ -3,6 +3,7 @@ set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../core/common.sh"
|
||||
source "$SCRIPT_DIR/../core/neo_apt.sh"
|
||||
|
||||
print_step "Ubuntu Module – Drivers and Multimedia"
|
||||
|
||||
@@ -32,47 +33,13 @@ TEMP_DIR=$(mktemp -d)
|
||||
cd "$TEMP_DIR"
|
||||
trap 'rm -rf "$TEMP_DIR"' EXIT
|
||||
|
||||
declare -A NEO_HASHES=(
|
||||
["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.35.39758.10-0_amd64.deb"]="c19a641b953d55aebbf1d51bec364a84bf629f985e02fbbe6dc70224c0e88470"
|
||||
)
|
||||
|
||||
download_and_verify() {
|
||||
local url="$1"
|
||||
local filename="$2"
|
||||
local expected="$3"
|
||||
wget -q --show-progress "$url" -O "$filename"
|
||||
actual=$(sha256sum "$filename" | awk '{print $1}')
|
||||
if [ "$actual" != "$expected" ]; then
|
||||
print_error "SHA256 mismatch para $filename"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
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.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"]}"
|
||||
|
||||
apt-get install -y ./*.deb
|
||||
install_neo_packages
|
||||
|
||||
cd /
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# ---- 4. add user ----
|
||||
print_substep "Añadiendo usuario a grupos render y video..."
|
||||
print_substep "Adding user to render and video groups..."
|
||||
if [ -n "${SUDO_USER:-}" ]; then
|
||||
usermod -a -G render,video "$SUDO_USER"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user