46d6e00166
Change-Id: I46e8d9fd32c7745c313030da62da41486a77b3ea
121 lines
4.3 KiB
Bash
121 lines
4.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
nvidia_run_file=""
|
|
|
|
## @description get nvidia version
|
|
## @audience public
|
|
## @stability stable
|
|
function get_nvidia_version()
|
|
{
|
|
chmod +x ${DOWNLOAD_DIR}/nvidia/nvidia-detect
|
|
local nvidia_detect_info=`${DOWNLOAD_DIR}/nvidia/nvidia-detect -v`
|
|
echo $nvidia_detect_info | sed "s/^.*This device requires the current \([0-9.]*\).*/\1/"
|
|
}
|
|
|
|
## @description download nvidia driver
|
|
## @audience public
|
|
## @stability stable
|
|
function download_nvidia_driver()
|
|
{
|
|
# submarin http server
|
|
if [[ -n "$DOWNLOAD_HTTP" ]]; then
|
|
MY_NVIDIA_DETECT_URL="${DOWNLOAD_HTTP}/downloads/nvidia/nvidia-detect"
|
|
else
|
|
MY_NVIDIA_DETECT_URL=${NVIDIA_DETECT_URL}
|
|
fi
|
|
|
|
# download nvidia_detect
|
|
if [[ -f "${DOWNLOAD_DIR}/nvidia/nvidia-detect" ]]; then
|
|
echo "${DOWNLOAD_DIR}/nvidia/nvidia-detect is exist."
|
|
else
|
|
echo "download ${MY_NVIDIA_DETECT_URL} ..."
|
|
wget -P ${DOWNLOAD_DIR}/nvidia/ ${MY_NVIDIA_DETECT_URL}
|
|
fi
|
|
|
|
echo "execution nvidia-detect to check the graphics card ..."
|
|
local nvidiaVersion=`get_nvidia_version`
|
|
echo -e "detect nvidia version is \033[31m${nvidiaVersion}\033[0m"
|
|
|
|
# download NVIDIA driver
|
|
if [[ "$nvidiaVersion" = "" ]]; then
|
|
echo -e "\033[31mERROR: No graphics card device detected.\033[0m"
|
|
return 1
|
|
else
|
|
nvidia_run_file="NVIDIA-Linux-x86_64-${nvidiaVersion}.run"
|
|
|
|
# submarin http server
|
|
if [[ -n "$DOWNLOAD_HTTP" ]]; then
|
|
MY_NVIDIA_DRIVER_RUN_URL="${DOWNLOAD_HTTP}/downloads/nvidia/${nvidia_run_file}"
|
|
else
|
|
# http://us.download.nvidia.com/XFree86/Linux-x86_64/390.87/NVIDIA-Linux-x86_64-390.87.run
|
|
MY_NVIDIA_DRIVER_RUN_URL="http://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidiaVersion}/${nvidia_run_file}"
|
|
fi
|
|
|
|
if [[ -f ${DOWNLOAD_DIR}/nvidia/${nvidia_run_file} ]]; then
|
|
echo "NVIDIA driver files already exist in the ${DOWNLOAD_DIR}/nvidia/${nvidia_run_file} directory."
|
|
echo "===== Please make sure the ${DOWNLOAD_DIR}/nvidia/nvidia/${nvidia_run_file} file is complete and can be used normally. ====="
|
|
else
|
|
echo "Download the NVIDIA driver from the ${MY_NVIDIA_DRIVER_RUN_URL}"
|
|
wget -P ${DOWNLOAD_DIR}/nvidia/ ${MY_NVIDIA_DRIVER_RUN_URL}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
## @description install nvidia
|
|
## @audience public
|
|
## @stability stable
|
|
function install_nvidia()
|
|
{
|
|
download_nvidia_driver
|
|
|
|
# Confirm that the system disables nouveau
|
|
local disable_nouveau_info=`lsmod | grep nouveau`
|
|
if [[ "$disable_nouveau_info" = "" ]]; then
|
|
echo "===== Start installing the NVIDIA driver ====="
|
|
echo -e "Some options during the installation
|
|
Would you like to register the kernel module sources with DKMS?
|
|
This will allow DKMS to automatically build a new module, if you install a different kernel later. \033[33m[Yes]\033[0m
|
|
Install NVIDIA's 32-bit compatibility libraries \033[33m[Yes]\033[0m
|
|
centos Install NVIDIA's 32-bit compatibility libraries \033[33m[Yes]\033[0m
|
|
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file... \033[33m[No]\033[0m"
|
|
sleep 2
|
|
sh ${DOWNLOAD_DIR}/nvidia/${nvidia_run_file}
|
|
else
|
|
echo -e "ERROR: Nouveau is not disabled"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "\033[32m===== execute nvidia-smi. You should be able to see the list of graphics cards =====\033[0m"
|
|
sleep 1
|
|
nvidia-smi
|
|
}
|
|
|
|
## @description uninstall nvidia
|
|
## @audience public
|
|
## @stability stable
|
|
function uninstall_nvidia()
|
|
{
|
|
if [ ! -f "/usr/bin/nvidia-uninstall" ]; then
|
|
echo -e "\033[31mERROR: /usr/bin/nvidia-uninstall file is not exist!\033[0m"
|
|
return 1
|
|
fi
|
|
|
|
echo -e "execute /usr/bin/nvidia-uninstall"
|
|
/usr/bin/nvidia-uninstall
|
|
}
|