diff --git a/prep_host.sh b/prep_host.sh new file mode 100644 index 0000000..5156426 --- /dev/null +++ b/prep_host.sh @@ -0,0 +1,68 @@ +#!/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 \ No newline at end of file