DeepinV20安装nvidia-docker略有不同的经历,已成功
Tofloor
poster avatar
滢泷迷雾
deepin
2020-06-17 22:51
Author
本帖最后由 yingshuang 于 2020-6-17 16:22 编辑

先说一下“略有不同”的部分吧,安装步骤都一样。
就是安装完启动一个CUDA的容器测试一下是否正常,同样跟其他帖子说的一样 找不到libnvidia-ml.so
不过,学着解决问题时 不一样的地方就来了:
其他帖子是这样的:

我遇到的 是这样的:

其他帖子都是两个so文件,一个是 so.1一个是后缀驱动版本号。
因为我启动tensorflow镜像后  python  加载它时报错 ImportError: libcuda.so.1: canxxxxxx....
我就以为这里少的这个  .1的文件是不是nvidia-smi默认要加载的呢?
我用  ln 软连接(硬连接报错无法创建)  或者cp  后缀为驱动版本号那个 为  so.1
然后直接运行  nvidia-smi  (没有添加环境变量)能成功运行,但是显示信息不完整,CUDA镜像容器 竟然显示CUDA版本  N/A

这就开始不一样了吧,其他帖子说这个文件一开始就有。但是我的没有,我给他补上之后什么都没做竟然能运行了至少。
然后我就按照帖子说的 添加一下环境变量吧。
我有点懒,不想安装vim(网速慢,安装之前还不好更改到国内源)
我就用echo  "export PATH=\$PATH:/usr/lib/x86_64-linux-gnu"  >>/etc/profile      替代了 Vim编辑
结果source /etc/profile 之后 还是不行
没办法,安装吧,至少看一下 有没有”玄学“的东西存在
安装完Vim 之后,查看了一下文件内容,跟cat 显示一样没有添加错误,再运行测试 竟然好了。
(宿主机  /data/var/lib/docker/overlay2 目录下  find查找 sources.list。更改所有 结尾/etc/apt/sources.list的文件内容
可以直接更改已下载的docker镜像内的默认源  sudo权限可以做到
我就删掉这个容器重新测试,启动新的容器,先运行 nvidia-smi  报错。
安装vim  其他啥都不做更改。好了  为了能整张截图,我就重定向 apt命令的输出了
还有值得庆幸的是,1.11版本以前的 tensorflow镜像容器 import载入错误,这个安装vim 竟然也能解决

有没有大神给解释一下 到底最初原因是少了那个依赖,为什么安装vim就解决了呢???
有没有大神给解释一下 到底最初原因是少了那个依赖,为什么安装vim就解决了呢???
有没有大神给解释一下 到底最初原因是少了那个依赖,为什么安装vim就解决了呢???



Reply Favorite View the author
All Replies
滢泷迷雾
deepin
2020-06-18 00:14
#1
附录:
我安装过程的笔记,来自很多帖子。实在想不全来源了就不不附上原帖地址了
$ lspci | egrep "VGA|3D"   #查看显卡ID
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile)
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)

系统源 apt安装驱动方法:#之前自己如果安装其他版本 自己解决(我本事有限)
        $ sudo apt install nvidia-driver  # 中间点一下确定 屏蔽nounevu
        创建配置文件:
        $ sudo vim /etc/X11/xorg.conf
        内容如下,cat命令执行结果 够详细吧   BusID  是上面查看显卡ID 结果,01:00.0 VGA   就是"1:0:0"也可以写成 "PCI:1:0:0"
        $ cat  /etc/X11/xorg.conf
        Section "Module"
            Load "modesetting"
        EndSection
        
        Section "Device"
            Identifier "nvidia"
            Driver "nvidia"
            BusID "PCI:1:0:0"      
            Option "AllowEmptyInitialConfiguration"
        EndSection
        
        创建一个脚本,应该是告诉系统显卡请求交给谁处理
        $ sudo vim /usr/local/bin/switch_nvidia.sh    #文件名和位置无所谓
        $ cat  /usr/local/bin/switch_nvidia.sh
        xrandr --setprovideroutputsource modesetting NVIDIA-0
        xrandr --auto
        xrandr --dpi 96
        添加这个脚本的可执行权限
        $ sudo chmod +x /usr/local/bin/switch_nvidia.sh

        系统相关配置中调这个脚本
        编辑 /etc/lightdm/lightdm.conf 找到  #display-setup-scrīpt= 解注释 编辑为:
        display-setup-scrīpt=/usr/local/bin/switch_nvidia.sh
        !!!切记 不是#display-setup-scrīpt = xxxxx 那一行
        重启后就正常使用显卡了
NVIDIA官网run包安装方法:
        安装包自己去下载,方法百度帖子多的是
        这个需要手动禁用nouveau 之后才能允许安装
        sudo vim /etc/modprobe.d/blacklist-nouveau.conf
            写入以下内容:
            blacklist nouveau
              options nouveau modeset=0
        重新生成 kernel initramfs:
        sudo update-initramfs -u
        然后重启
        
        进入系统后 打开终端   sudo  init 3   进入纯命令行模式 #我试过 直接  Ctrl + Alt + F3  进入其他终端 还是会提示 X11服务正在运行 不让安装
        sudo sh NVIDIA-Linux-x86_64-xxx.xx.run   #下载的驱动版本号不同,文件名有所不同
        安装里的选项里,只有yes和no的 选yes ,有3个选项的选择中间那个over 的,最后进度条走完那个弹窗的2个选项 是问是否需要生成/etc/X11/xorg.conf  文件
        我的笔记本用它生成的这个 xorg.conf  文件 显示有问题,必须外接显示器,并且内屏不能用。所以
        我用的上面 apt 方法的 xorg.conf  文件  这个文件不能没有
        /usr/local/bin/switch_nvidia.sh  和 /etc/lightdm/lightdm.conf 两个文件还是要做的,方法看上面 apt 安装
        然后也就安装完成了

### 安装docker
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo bash -c 'echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable" >>/etc/apt/sources.list'  #也可以在/etc/apt/sources.list.d/ 目录下创建一个单独的 .list 文件写入
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

### 安装nvidia-docker扩展
distribution="debian10"
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit   #喜欢 nvidia-docker 命令启动容器的  可以把 nvidia-container-toolkit 换成 nvidia-docker2  前者是后者的一个依赖包
sudo systemctl restart docker
Reply View the author
滢泷迷雾
deepin
2020-06-18 00:23
#2
这个论坛帖子排版太难了
Reply View the author