ubuntu双系统+NVIDIA+cuda驱动安装+bios grub+深度学习环境配置一条龙踩坑

ubuntu双系统+NVIDIA+cuda驱动+grub一条龙踩坑

最近装了好几台机器,都是ubuntu双系统,然后要安装cuda进行深度学习训练,期间遇到了不少很多从前没有遇到过的坑(也可能是太久没有装机器,所以忘记这些坑了),因此做个笔记从头到尾记录一下坑。因为不断在更新,所以有的部分直接贴链接了

ubuntu+windows双系统

至于如何进入bios界面,每个品牌电脑有不同的按键,比如thinkpad/thinkstation系列都是在开机进入lenovo的标志时,按F1。台式机的话注意看显示器的线(DP线HDMI线等)是否插到了显卡上,不然的话可能没有开机lenovo的界面(如果没有连到独显上,显示器连接的是核显)。

可以看这两篇
https://blog.csdn.net/NeoZng/article/details/122779035
https://blog.csdn.net/Flag_ing/article/details/121908340

ubuntu分区的时候直接分三个就行:/boot, swap, /。/boot分几百M,swap可以看文章或者官方建议,剩下的都给根目录/就行。

boot loader的位置我一般直接放在windows系统盘所在的设备上(注意区分设备粒度和分区粒度,一块硬盘是一个设备,一个设备可以分不同的分区p1 p2 p3等)。这样子在开机的时候会进入选择界面,是进入ubuntu还是windows。之后在ubuntu的grub文件里面可以修改默认进入的系统。

时间设置

双系统时间经常设置不对,见下面这个问题的第二条回答,弄清楚local time, RTC time等
https://www.zhihu.com/question/46525639

修改启动时默认进入的系统

修改ubuntu中的grub文件
https://blog.csdn.net/qq_42180695/article/details/105636285

ubuntu内部

NVIDIA驱动+cuda

ps:

  • 新方法(安装或升级都可以这样):直接在ubuntu的软件和更新中选择一个合适的nvidia-driver,手动点击安装;此时安装完之后使用nvidia-smi会有NVML的报错问题;然后再直接安装cudaxxx.run即可(去掉nvidia driver的勾选),重启发现安装成功了

老方法: 先装依赖(见https://blog.csdn.net/ytusdc/article/details/132403852),然后装NVIDIA驱动,再装cuda。可以直接去官网下载对应的安装包版本https://www.nvidia.cn/Download/index.aspx?lang=cn(这个驱动版本应该是根据显卡型号来的),然后安装: https://www.cnblogs.com/chua-n/p/13208398.html 这里需要进入tty,记得将你所下载的nvidiaxxx.run文件放在一个没有中文路径的目录下,然后ctrl+alt+f4进入tty界面(不是图形界面,只能用命令行,你可以sudo apt install vim安装一个vim方便编辑文件),先关闭X服务,接着进入nvidiaxxx.run所在目录,然后按照https://blog.csdn.net/ytusdc/article/details/132403852所说的禁用nouveau,sudo sh nvidiaxxx.run来安装。 可能有一些坑: https://gist.github.com/walsvid/cc4d399fe2ffc8bd78e2e721af1ba803
安装好NVIDIA驱动后,通过`nvidia-smi`查看显卡相关信息,然后右上角写着CUDA version,之后装cuda的时候应该不能超过这个CUDA version。然后去google上搜类似于cuda 11.7,点进官网下载对应的.run文件: https://www.cnblogs.com/chua-n/p/13208414.html 然后安装,只要之前NVIDIA驱动和CUDA版本选择正确了,这里在安装CUDA时,不需要勾选NVIDIA driver那一项。

最后会出来一个WARNING: Incomplete installation! 。不用管。但要按照提示的说明将/usr/local/cuda-11.7这种路径加到环境变量PATH, LD_LIBRARY_PATH里面。

使用nvcc --version就可以判断cuda是否安装成功

系统启动时和安装cuda时可能遇到的坑

因为我是GeForce系列的显卡,似乎在bios设置方面会有一些奇怪的坑,这会联动前两个板块

ubuntu启动

启动的时候进入不了GNOME桌面系统,只能进入tty字符界面:

  1. 检查Xorg或Wayland配置
  • 检查/etc/gdm3/custom.conf文件,确保WaylandEnable=false被注释掉或者设置为true(如果你使用的是Wayland)。
  • 如果你使用的是Xorg,确保WaylandEnable=false
    sudo nano /etc/gdm3/custom.conf
    
    找到#WaylandEnable=false,去掉注释或确保它存在:
    WaylandEnable=false
    
  1. 删除临时文件
  • 有时临时文件会导致问题,可以尝试删除它们:
    sudo rm -rf /var/lib/gdm3/*
    sudo rm -rf /tmp/.X11-unix
    sudo rm -rf /tmp/.ICE-unix
    sudo systemctl restart gdm
    
  1. 重新安装GNOME和相关组件
  • 重新安装GNOME Display Manager和桌面环境:
    sudo apt-get update
    sudo apt-get install --reinstall gdm3 gnome-shell ubuntu-desktop
    sudo dpkg-reconfigure gdm3
    sudo systemctl restart gdm
    

使用以上解决方法之后,尝试:

sudo systemctl start gdm
sudo systemctl enable gdm

看看能不能进入桌面系统。

启动时碰到ACPI error了,导致一直停留在黑屏白字界面开不了机:

  • 临时解决方法1:在选择系统的界面中,(在ubuntu选项上)按e,临时修改这个类似于grub的文件,将linux那一行最后面加上一个acpi=off。但这个可能会影响nvidia驱动的安装,见下面nomodeset的解决方法。加了这个以后,还可能碰到snd_hda_intel 0000:01:00.1:unable to grab IRQ 0, disabling device 等 irq相关的error,见https://askubuntu.com/questions/1258283/no-irq-handler-error-while-installing-ubuntu-20-04 ,就是我下面一条要讲的方法
  • 临时解决方法2: 同样是上面的方法,只不过不加acpi=off,加nomodeset (我用这种方法进入系统也用不了显卡)
  • 永久解决方法:在ubuntu里修改grub文件并保存生效:https://www.jianshu.com/p/f9e17ba42943GRUB_CMDLINE_LINUX那两项内核启动参数即可,修改是类似的。修改完要用sudo update-grub生效。

2023.05.29upd:
看了https://askubuntu.com/questions/1416198/ubuntu-22-04-acpi-bios-error-bug-could-not-resolve-symbol-errors-on-asus-x7,应该是linux内核、BIOS、驱动的某些版本不兼容,该链接第一个回答告诉我是linux内核的问题,需要升级linux内核。

安装NVIDIA驱动,cuda

安装NVIDIA驱动时碰到IRQ问题了

[    2.172069] NVRM: Can't find an IRQ for your NVIDIA card!
[    2.172070] NVRM: Please check your BIOS settings.

说明可能是开机的时候使用了acpi=off...


如果碰到An NVIDIA kernel module ‘nvidia-drm‘ appears to already be load,说明现在ubuntu桌面是通过nvidia显卡加载的,因此需要进入字符终端卸载nvidia相关驱动,参见:
https://blog.csdn.net/sdnuwjw/article/details/110290280
那么如何在字符终端界面下卸载旧驱动安装新驱动呢?对于台式机可以将显示器的线从独显上拔下来,插到核显上,就进入tty1的字符终端界面了。

这可能是因为启动时增加了acpi=off这一选项导致的,所以碰到ACPI error时可能还是要用nomodeset来开机。

安装cuda驱动时碰到 Error installing Cuda toolkit: Existing package manager installation of the driver found, 见https://askubuntu.com/questions/1211919/error-installing-cuda-toolkit-existing-package-manager-installation-of-the-driv
或者直接continue就行。

cudnn:
https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local
但是我用官方的.deb安装cudnn安装失败了... 后来照着这个博客安装成功了:https://bbs.huaweicloud.com/blogs/388651 。 需要去这里下载.tar.xz的安装包 https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/ , 然后解压、按照博客中的命令安装。

conda, ssh, 深度学习环境

conda:

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh 
bash Miniconda3-latest-Linux-x86_64.sh 
# 然后按enter, q, yes(确认协议), enter(或者你选择你想要安装的位置,这一步选错了没关系,可以移动miniconda3文件夹然后建立软链接), yes(bash打开自动进入conda的base环境)
# 换源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# 确认换源:
conda config --get channels

然后就差不多了。重启终端使用conda env list即可看到现在处于什么环境。
新建一个环境:

conda create -n ml python=3.9
conda activate ml
...

我只写过两篇关于安装RL相关环境的笔记...:
https://www.cnblogs.com/thkkk/p/15867276.html
https://www.cnblogs.com/thkkk/p/15562917.html

未完待续...

posted @ 2022-11-18 11:39  BLMontgomery  阅读(2004)  评论(0编辑  收藏  举报