mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-07-16 05:49:49 +00:00
Add files via upload
This commit is contained in:
+105
-152
@@ -1,164 +1,117 @@
|
||||
#!/usr/bin/env bash
|
||||
# Detects and installs GPU firmwares for AMD, Intel, and NVIDIA
|
||||
# Graphics Stack — sources submodules and provides install_gpu_drivers()
|
||||
|
||||
_GPU_DIR="${MODULES_DIR}/gpu"
|
||||
source "${_GPU_DIR}/_helpers.sh"
|
||||
source "${_GPU_DIR}/amd_intel.sh"
|
||||
source "${_GPU_DIR}/nvidia.sh"
|
||||
|
||||
# Consumed by gaming.sh to know which NVIDIA driver path was taken
|
||||
NVIDIA_DRIVER_MODE=""
|
||||
|
||||
install_gpu_drivers() {
|
||||
case "$GPU_TYPE" in
|
||||
amd) install_amd ;;
|
||||
intel) install_intel ;;
|
||||
nvidia) install_nvidia ;;
|
||||
*)
|
||||
_msg "GPU" "No dedicated GPU detected.\n\nIf you are in a virtual machine, GPU acceleration\ndepends on VM configuration (SPICE, VirtIO).\n\nNo additional drivers will be installed." 12 60
|
||||
return
|
||||
;;
|
||||
esac
|
||||
# Step 1: Info banner
|
||||
local info="This section installs the latest Mesa graphics stack\n"
|
||||
info+="from Debian backports (or stable), plus GPU firmware\n"
|
||||
info+="and monitoring tools tailored to your hardware.\n\n"
|
||||
info+="Components:\n"
|
||||
info+=" Mesa (OpenGL / Vulkan / VA-API)\n"
|
||||
if [ "$GPU_TYPE" != "unknown" ]; then
|
||||
info+=" GPU firmware for ${GPU_DESC}\n"
|
||||
fi
|
||||
info+=" Monitoring tools (nvtop, vainfo, ...)"
|
||||
|
||||
if [ "$GPU_TYPE" != "nvidia" ] && [ "$(is_backports_enabled)" == true ]; then
|
||||
local mesa_pkgs=""
|
||||
for mpkg in libgl1-mesa-dri mesa-vulkan-drivers; do
|
||||
local bpo_ver
|
||||
bpo_ver=$(apt-cache madison "$mpkg" 2>/dev/null | \
|
||||
grep "${DEBIAN_CODENAME}-backports" | awk '{print $3}' | head -1)
|
||||
if [ -n "$bpo_ver" ]; then
|
||||
mesa_pkgs+=" - ${mpkg} ${bpo_ver} (backports)\n"
|
||||
if ! _confirm "Graphics Stack" "$info"; then
|
||||
echo "Skipping Graphics Stack."
|
||||
return
|
||||
fi
|
||||
|
||||
# Step 2: GPU detected?
|
||||
if [ "$GPU_TYPE" = "unknown" ] || [ -z "$GPU_TYPE" ]; then
|
||||
# --- BLOQUE B: No GPU / VM (inline, no _install_mesa_backports) ---
|
||||
local mesa_pkgs=(mesa-vulkan-drivers libgl1-mesa-dri libglx-mesa0 libegl-mesa0 mesa-va-drivers)
|
||||
local ref_ver
|
||||
ref_ver=$(apt-cache policy mesa-vulkan-drivers 2>/dev/null | awk 'NR==3 {print $2; exit}')
|
||||
local ref_bpo_ver
|
||||
ref_bpo_ver=$(apt-cache madison mesa-vulkan-drivers 2>/dev/null | \
|
||||
grep "${DEBIAN_CODENAME}-backports" | awk '{print $3}' | head -1)
|
||||
local comp_line="Components: Vulkan, OpenGL, GLX, EGL, VA-API (64-bit)"
|
||||
|
||||
if [ -n "$ref_bpo_ver" ] && [ "$(is_backports_enabled)" == "true" ]; then
|
||||
local header="No dedicated GPU was detected (VM or headless).\n"
|
||||
header+="Install Mesa stack for compute / display acceleration?\n\n"
|
||||
header+="Source: Debian ${DEBIAN_CODENAME^}-Backports\n"
|
||||
header+="Mesa ${ref_bpo_ver}\n"
|
||||
header+="${comp_line}\n\n"
|
||||
header+="Choose version:"
|
||||
if _confirm_custom "No GPU Detected" "$header" "Backports" "Stable" 14 70; then
|
||||
_run_cmd "Mesa" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports ${mesa_pkgs[*]}" \
|
||||
"Installing Mesa from backports..."
|
||||
else
|
||||
mesa_pkgs+=" - ${mpkg} (from stable)\n"
|
||||
_run_cmd "Mesa" "sudo apt install -y ${mesa_pkgs[*]}" \
|
||||
"Installing Mesa from stable..."
|
||||
fi
|
||||
done
|
||||
if _confirm_custom "Mesa Backports" "Install Mesa?\n${mesa_pkgs}" "Backports" "Stable"; then
|
||||
_run_cmd "Mesa" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports libgl1-mesa-dri mesa-vulkan-drivers" "Installing Mesa from backports..."
|
||||
else
|
||||
_run_cmd "Mesa" "sudo apt install -y libgl1-mesa-dri mesa-vulkan-drivers" "Installing Mesa from stable..."
|
||||
fi
|
||||
fi
|
||||
|
||||
local tool_pkgs
|
||||
tool_pkgs=$(pkg_versions nvtop vainfo)
|
||||
if _confirm "GPU Tools" "Install monitoring tools?\n${tool_pkgs}"; then
|
||||
_run_cmd "GPU Tools" "sudo apt install -y nvtop vainfo" "Installing GPU tools..."
|
||||
vainfo
|
||||
else
|
||||
echo "Skipping GPU monitoring tools."
|
||||
fi
|
||||
echo -e "${GREEN}GPU setup complete.${NC}"
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# AMD GPU
|
||||
# ----------------------------------------------------------------------
|
||||
install_amd() {
|
||||
local pkgs
|
||||
pkgs=$(pkg_versions firmware-amd-graphics radeontop)
|
||||
if ! _confirm "AMD GPU" "Install AMD drivers?\n${pkgs}"; then
|
||||
echo "Skipping AMD GPU drivers."
|
||||
return
|
||||
fi
|
||||
_run_cmd "AMD" "sudo apt install -y firmware-amd-graphics radeontop" "Installing AMD drivers..."
|
||||
echo -e "${GREEN}AMD drivers installed.${NC}"
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Intel GPU
|
||||
# ----------------------------------------------------------------------
|
||||
install_intel() {
|
||||
local gen
|
||||
gen=$(get_intel_generation)
|
||||
local va_driver
|
||||
if [ "$gen" = "gen7-" ]; then
|
||||
va_driver="i965-va-driver-shaders"
|
||||
else
|
||||
va_driver="intel-media-va-driver-non-free"
|
||||
fi
|
||||
|
||||
local pkgs
|
||||
pkgs=$(pkg_versions firmware-intel-graphics "$va_driver")
|
||||
if ! _confirm "Intel GPU" "Install Intel drivers?\n${pkgs}"; then
|
||||
echo "Skipping Intel GPU drivers."
|
||||
return
|
||||
fi
|
||||
|
||||
_run_cmd "Intel" "sudo apt install -y firmware-intel-graphics" "Installing Intel firmware..."
|
||||
|
||||
echo "Detected Intel GPU generation: $gen"
|
||||
echo "Installing ${va_driver}..."
|
||||
_run_cmd "Intel" "sudo apt install -y $va_driver" "Installing Intel VA driver..."
|
||||
|
||||
echo -e "${GREEN}Intel GPU drivers installed.${NC}"
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# NVIDIA GPU
|
||||
# ----------------------------------------------------------------------
|
||||
install_nvidia() {
|
||||
echo -e "${YELLOW}NVIDIA GPU detected.${NC}"
|
||||
|
||||
# --- WARNING CHECK: Backports vs NVIDIA ---
|
||||
if [ "$(is_backports_enabled)" == true ]; then
|
||||
echo -e "${YELLOW}============================================${NC}"
|
||||
echo -e "${YELLOW} IMPORTANT: Backports are currently enabled${NC}"
|
||||
echo -e "${YELLOW}============================================${NC}"
|
||||
echo ""
|
||||
echo "If you are using a backports kernel (e.g., 6.19+), the NVIDIA"
|
||||
echo "driver (especially the 550 series on Debian Trixie) may fail to"
|
||||
echo "compile via DKMS due to kernel incompatibilities."
|
||||
echo ""
|
||||
echo "We strongly recommend using the stable Debian kernel with the"
|
||||
echo "NVIDIA driver. The script will now install the recommended driver"
|
||||
echo "from the STABLE repositories only, NOT from backports."
|
||||
|
||||
if ! _confirm "NVIDIA + Backports" "Backports kernel (6.19+) may break NVIDIA driver.\nContinue with stable NVIDIA driver?"; then
|
||||
echo "Skipping NVIDIA driver installation."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
_run_cmd "NVIDIA" "sudo apt install -y nvidia-detect" "Installing nvidia-detect..."
|
||||
|
||||
# Run nvidia-detect and parse the recommended package
|
||||
echo "Detecting recommended NVIDIA driver..."
|
||||
local recommended
|
||||
recommended=$(nvidia-detect 2>/dev/null | grep -oP 'nvidia[\w-]+(?= package)')
|
||||
|
||||
if [ -z "$recommended" ]; then
|
||||
echo -e "${RED}nvidia-detect could not determine a suitable driver.${NC}"
|
||||
echo "Your GPU may not be supported by current Debian packages."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Recommended driver package: $recommended"
|
||||
|
||||
# --- CHECK FOR UNSUPPORTED LEGACY DRIVERS ---
|
||||
if [[ "$recommended" =~ tesla-470|legacy-390|legacy-340 ]]; then
|
||||
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
|
||||
echo -e "${RED}============================================${NC}"
|
||||
echo -e "${RED} NVIDIA DRIVER NOT AVAILABLE${NC}"
|
||||
echo -e "${RED}============================================${NC}"
|
||||
echo ""
|
||||
echo "Your GPU requires the $recommended driver, which is not available"
|
||||
echo "in Debian 13 (Trixie)."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " 1. Install Debian 12 (Bookworm) where $recommended is still available"
|
||||
echo " 2. Use Debian Sid (Unstable) which may still provide $recommended"
|
||||
echo " 3. Use the open-source Nouveau driver (limited performance)"
|
||||
echo ""
|
||||
echo "No driver will be installed."
|
||||
return 1
|
||||
else
|
||||
if [[ "$recommended" =~ legacy-390|legacy-340 ]]; then
|
||||
echo -e "${RED}Your GPU requires $recommended, which is not available.${NC}"
|
||||
echo "No driver will be installed."
|
||||
return 1
|
||||
if _confirm "No GPU Detected" \
|
||||
"No dedicated GPU was detected (VM or headless).\n\nInstall Mesa stack?\n\nSource: Debian Stable\nMesa ${ref_ver}\n${comp_line}" 14 70; then
|
||||
_run_cmd "Mesa" "sudo apt install -y ${mesa_pkgs[*]}" \
|
||||
"Installing Mesa..."
|
||||
else
|
||||
echo "Skipping Mesa installation."
|
||||
offer_generic_tools
|
||||
return
|
||||
fi
|
||||
fi
|
||||
offer_generic_tools
|
||||
else
|
||||
# --- BLOQUE A: GPU detectada (AMD / Intel / NVIDIA) ---
|
||||
local ref_ver
|
||||
ref_ver=$(apt-cache policy mesa-vulkan-drivers 2>/dev/null | awk 'NR==3 {print $2; exit}')
|
||||
local ref_bpo_ver
|
||||
ref_bpo_ver=$(apt-cache madison mesa-vulkan-drivers 2>/dev/null | \
|
||||
grep "${DEBIAN_CODENAME}-backports" | awk '{print $3}' | head -1)
|
||||
local comp_line="Components: Vulkan, OpenGL, GLX, EGL, VA-API (64-bit)"
|
||||
|
||||
local src_line="Source: Debian Stable"
|
||||
[ -n "$ref_bpo_ver" ] && [ "$(is_backports_enabled)" == "true" ] && src_line="Source: Debian ${DEBIAN_CODENAME^}-Backports"
|
||||
|
||||
local plan="GPU detected: ${GPU_DESC}\n\n"
|
||||
plan+="${src_line}\n"
|
||||
plan+="Mesa ${ref_bpo_ver:-$ref_ver}\n"
|
||||
plan+="${comp_line}\n"
|
||||
|
||||
case "$GPU_TYPE" in
|
||||
amd) plan+="[+] Firmware: firmware-amd-graphics\n" ;;
|
||||
intel)
|
||||
local _gen; _gen=$(get_intel_generation)
|
||||
local _va; [ "$_gen" = "gen7-" ] && _va="i965-va-driver-shaders" || _va="intel-media-va-driver-non-free"
|
||||
plan+="[+] Firmware: firmware-intel-graphics + ${_va}\n"
|
||||
;;
|
||||
nvidia) plan+="[+] NVIDIA driver (details in next step)\n" ;;
|
||||
esac
|
||||
|
||||
if ! _confirm "Graphics Stack — ${GPU_DESC}" "$plan" 14 70; then
|
||||
echo "Skipping Graphics Stack."
|
||||
return
|
||||
fi
|
||||
|
||||
# 3. _run_cmd (via vendor functions — each with its own pkg_versions + _confirm)
|
||||
case "$GPU_TYPE" in
|
||||
amd) install_amd_firmware ;;
|
||||
intel) install_intel_firmware ;;
|
||||
nvidia) install_nvidia_driver ;;
|
||||
esac
|
||||
|
||||
# Mesa (backports / stable)
|
||||
_install_mesa_backports
|
||||
|
||||
# Vendor-specific tools
|
||||
case "$GPU_TYPE" in
|
||||
amd) offer_amd_tools ;;
|
||||
intel) offer_intel_tools ;;
|
||||
nvidia) offer_generic_tools ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
local nv_pkgs
|
||||
nv_pkgs=$(pkg_versions "$recommended" firmware-misc-nonfree nvidia-vaapi-driver)
|
||||
if ! _confirm "NVIDIA Driver" "Install NVIDIA driver?\n${nv_pkgs}\nReboot required."; then
|
||||
echo "Skipping NVIDIA driver installation."
|
||||
return 0
|
||||
fi
|
||||
|
||||
_run_cmd "NVIDIA" "sudo apt install -y $recommended firmware-misc-nonfree nvidia-vaapi-driver" "Installing NVIDIA driver..."
|
||||
echo -e "${GREEN}NVIDIA drivers installed. Reboot required.${NC}"
|
||||
echo -e "${GREEN}Graphics stack setup complete.${NC}"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user