Skip to content

Instantly share code, notes, and snippets.

@dualvtable
Last active February 22, 2022 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dualvtable/20323e8007a61992a5438667a1bcc782 to your computer and use it in GitHub Desktop.
Save dualvtable/20323e8007a61992a5438667a1bcc782 to your computer and use it in GitHub Desktop.
Simple script for setting up NVIDIA software on bare-metal
#!/usr/bin/env bash
# author: com/github/dualvtable
set -eo pipefail
check_root()
{
if [[ $EUID -ne 0 ]]; then
echo "This installer must be run as root."
exit 1
fi
}
usage()
{
cat << EOF
usage: $(basename "$0") [options]
Options:
-h, --help This help menu
EOF
}
#setup CUDA network repos
setup_repos()
{
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g') \
&& wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-$distribution.pin \
&& sudo mv cuda-$distribution.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
&& sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/7fa2af80.pub \
&& echo "deb http://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list
#setup nvidia-docker2 repos
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/libnvidia-container.list
echo "Setup CUDA and NVIDIA container package repos..." >&2
sudo apt-get update
}
install_driver()
{
driver_branch=$1
if [ $driver_branch ]; then
driver_branch="-$driver_branch"
fi
sudo apt-get install -y linux-headers-$(uname -r) golang-go \
&& sudo apt-get install -y cuda-drivers$driver_branch
}
check_docker()
{
error_code=$(docker run --rm hello-world)
if [ $error_code -ne 0 ]; then
echo "Docker failed to install..." >&2
exit $error_code
fi
}
install_docker()
{
curl https://get.docker.com | sh \
&& sudo systemctl start docker \
&& sudo systemctl enable docker
check_docker
}
install_nvidia_runtime()
{
sudo apt-get install -y nvidia-container-toolkit \
&& sudo systemctl restart docker
}
while true; do
case "$1" in
'-h'|'--help')
usage
shift
continue
;;
'--')
shift
break
;;
*)
echo "$@"
usage
exit 1
;;
esac
done
check_root
setup_repos
install_docker
install_driver 470
install_nvidia_runtime
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment