####################################################################################################
系统环境配置指北
####################################################################################################
本博客主要记录如何从一台Ubuntu 20.04裸机去配置计算机视觉开发所需的cuda环境,并实现多版本cuda的配置以及切换
1、安装基础环境的工具
sudo apt install vim
sudo apt-get install g++
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install flameshot
sudo apt install git
2、pip 更换下载源
Linux:
生成pip镜像配置文件
cd ~ # 进入家目录
mkdir .pip # 新建.pip隐藏文件夹
或者
mkdir -p .config/pip
cd .pip # 进入.pip文件夹
或者
cd .config/pip
touch pip.conf # 新建pip.conf文件
vim pip.conf # 用vim编辑pip.conf文件
pip.conf文件内容为:
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 6000
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
disable-pip-version-check = true
更换系统镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup # 备份源文件
sudo vim /etc/apt/sources.list # 编辑替换为清华源
清华源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
修改之后更新使其生效
sudo apt-get update
3、配置系统日志记录
在 /etc/profile.d/ 中创建history_conf.sh添加以下内容(全局生效,可选)
export HISTFILE="$HOME/.bash_history_new" # 指定命令写入文件(默认~/.bash_history)
export HISTSIZE=1000 # history输出记录数
export HISTFILESIZE=10000 # HISTFILE文件记录数
export HISTIGNORE="cmd1:cmd2:..." # 忽略指定cmd1,cmd2...的命令不被记录到文件;(加参数时会记录)
export HISTCONTOL=ignoreboth # ignoredups 不记录“重复”的命令;连续且相同 方为“重复” ;
# ignorespace 不记录所有以空格开头的命令;
# ignoreboth 表示ignoredups:ignorespace ,效果相当于以上两种的组合;
# erasedups 删除重复命令;
export PROMPT_COMMAND="history -a" # 设置每条命令执行完立即写入HISTFILE(默认等待退出会话写入)
export HISTTIMEFORMAT="`whoami` %F %T " # 设置命令执行时间格式,记录文件增加时间戳(`whoami`用户信息)
shopt -s histappend # 防止会话退出时覆盖其他会话写到HISTFILE的内容;
source一下生效(每次登录都要source,建议在.bashrc中加上)
source /etc/profile.d/history_conf.sh
Tip: 为了确保每个用户在登录时都执行 source /etc/profile.d/history_conf.sh,最简单且最常见的方法是将相# 关命令添加到 /etc/profile 中。这样,无论是通过终端还是图形界面登录,这个脚本都会在用户会话开始时被# 执行。
/etc/profile 文件在用户首次登录时被读取。你可以将以下行添加到 /etc/profile 中:
if [ -f /etc/profile.d/history_conf.sh ]; then
source /etc/profile.d/history_conf.sh
fi
4、Java环境配置:Java 11(Defaulg) / Java 8;
直接执行下面命令
sudo apt install openjdk-11-jdk # 安装 java 11
sudo apt install openjdk-8-jdk # 安装 java 8
java -version
sudo update-alternatives --config java # 替换默认版本,可以查看默认安装路径
配置JAVA_HOME路径
sudo nano /etc/environment
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
source /etc/environment
echo $JAVA_HOME
卸载Java
sudo apt remove openjdk-11-jdk
5、Conda环境: Miniconda环境(python 3.9)
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh
sha256sum Miniconda3-py39_4.9.2-Linux-x86_64.sh
bash Miniconda3-py39_4.9.2-Linux-x86_64.sh # 安装路径为:/usr/local/miniconda3
vim /etc/profile
export PATH=/usr/local/miniconda3/bin:$PATH # 写入
source /etc/profile
更换镜像源:
conda config --show
touch ~/.condarc # 写入
将下面内容写入 ~/.condarc中
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
对于普通用户找不到conda命令时执行
/usr/local/anaconda3/bin/conda init bash
6、安装显卡驱动
查看GPU型号
lspci | grep -i nvidia
下载显卡驱动:
从nvidia官网下载显卡驱动(根据显卡型号选择,uname -m看是X64还是arm64)
我下载的是: 535.183.01|Linux 64-bit
chmod +x NVIDIA-Linux-x86_64-535.183.01.run
sudo ./NVIDIA-Linux-x86_64-535.183.01.run
进行安装出现问题:
ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding. Please consult the NVIDIA driver README and your Linux distribution's documentation for details on how to correctly disable the Nouveau kernel driver.
-> For some distributions, Nouveau can be disabled by adding a file in the modprobe configuration directory. Would you like nvidia-installer to attempt to create this modprobe file for you? (Answer: No)
ERROR: Installation has failed. Please see the file '/var/log/nvidia-installer.log' for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.
原因分析:
Nouveau 驱动程序通常用于开源的 NVIDIA 显卡支持。为了安装 NVIDIA 官方驱动,你需要禁用它。这通常可以通过修改 modprobe 配置来实现。
解决方法
打开文件
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
写入:
blacklist nouveau
options nouveau modeset=0
更新initramfs
sudo update-initramfs -u
sudo ./NVIDIA-Linux-x86_64-535.183.01.run # 进行安装
cat /proc/driver/nvidia/version # 进行查看
7、安装CUDA
在线安装Cuda
从官网根据自己系统选择适合的cuda
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run
nvidia-smi / nvcc -V # 查看cuda是否安装成功
Tip:在后面向安装多版本cuda的话,每一个cuda的安装方法均类似。
安装路径为:
/usr/local
8、Ubuntu20.04LTS安装CUDA并支持多版本切换
已经安装了12.2版本的cuda, 驱动版本为12.2.
想额外安装11.3版本、11.0版本的cuda
配置环境变量:
使用 vim ~/.bashrc 命令进行编辑,在文件末尾添加下列代码:
# cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
然后执行 source ~/.bashrc 刷新文件使其生效。
那么如何进行切换呢?
Tip:默认使用cuda-12.2
由于环境变量的地址为 /usr/local/cuda,且我们发现该目录下存在一个软链接,即:/usr/local/cuda 指向了 /usr/local/cuda-12.2 链接,说明此时尽管安装了CUDA 12.2和 CUDA 11.0版本,但系统默认的环境版本为12.2。
如何进行多版本的切换呢,比如想把CUDA版本切换成11.0版本(但是要保留CUDA 12.2和11.0版本),我们只需要修改软链接即可,将CUDA 11.0的软链接链接到cuda目录下,代码如下:
sudo rm -rf cuda # 删除原有的软链接
sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda # 将cuda-11.0链接到cuda下
验证是否切换到正确的cuda版本
nvidia-smi / nvcc -V