Files
Scripts/prep_host.sh
T

68 lines
2.4 KiB
Bash
Raw Normal View History

#!/bin/bash
# setup_nvidia_docker.sh
# Prepares Ubuntu 24.04 host for GPU-enabled Docker containers with Hashcat
set -euo pipefail
echo "[*] Updating system..."
apt update && apt -y upgrade
echo "[*] Installing prerequisites..."
apt -y install curl wget gnupg software-properties-common lsb-release
echo "[*] Checking for NVIDIA driver..."
if ! command -v nvidia-smi &>/dev/null; then
echo "[*] Installing NVIDIA driver..."
apt -y install nvidia-driver-575 nvidia-utils-575
else
echo "[+] NVIDIA driver already installed."
nvidia-smi || true
fi
echo "[*] Installing Docker..."
if ! command -v docker &>/dev/null; then
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
else
echo "[+] Docker already installed."
fi
echo "[*] Installing Docker Buildx plugin..."
apt -y install docker-buildx-plugin || {
echo "[!] docker-buildx-plugin not available via apt, installing manually..."
mkdir -p /usr/local/lib/docker/cli-plugins
BUILDX_VERSION=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
curl -Lo /usr/local/lib/docker/cli-plugins/docker-buildx \
"https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64"
chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx
}
echo "[*] Installing NVIDIA Container Toolkit..."
# Remove any corrupted source list from previous runs
rm -f /etc/apt/sources.list.d/nvidia-container-toolkit.list
rm -f /etc/apt/sources.list.d/nvidia-toolkit.list
rm -f /usr/share/keyrings/nvidia-container-toolkit.gpg
rm -f /usr/share/keyrings/nvidia-toolkit.gpg
# Install GPG key
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg
# Download the official source list and add signed-by
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
tee /etc/apt/sources.list.d/nvidia-toolkit.list
sed -i -e "s/^deb/deb [signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg]/g" /etc/apt/sources.list.d/nvidia-toolkit.list
apt update
apt -y install nvidia-container-toolkit
echo "[*] Configuring Docker runtime..."
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
echo
echo "[+] Setup complete!"
echo "[+] Host will require a restart before Continuing"
echo " Test GPU passthrough with:"
echo " docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi"
echo