68 lines
2.4 KiB
Bash
68 lines
2.4 KiB
Bash
|
|
#!/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
|