ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装

2019-07-16 13:02:40  阅读:822  来源: 互联网

标签:双系统 sudo apt BIOS UEFI ubuntu 安装 cuda


欢迎转载,转载请说明出处

前言

之前(旧笔记本电脑)装过Ubuntu,按照经验贴一次就成功了,所以我以为不就是装系统嘛,很简单马上就能完事。

结果……这次(新笔记本电脑)花了 4天时间才装好、配好环境,重装次数不下于20次,真的。

原因无他:NVIDIA驱动在ubuntu上的支持不够好的缘故。

旧电脑使用的是intel集成显卡,而新电脑是NVIDIA gtx 1070独立显卡,需要对应的显卡驱动,才能正常使用该显卡。

在显卡驱动没有装好的情况下,会出现各种BUG,包括且不限于(我经历过的):

  • U盘插好后,点击install Ubuntu后,黑屏没反应
  • 通过某方法解决上述问题后,装好后,重启显示登录页面,卡住了登不了/循环登录(输入密码没登进去又回到登录界面了)
  • 通过某方法解决上述问题后,进入ubuntu桌面后,点击系统设置,没反应/ctrl+alt+F1进入命令行模式,在命令行模式中又让你循环登录

通过一定trick安装完成ubuntu,紧接着在ubuntu内正确安装显卡驱动,这一切的一切bug才(亲测)烟消云散,从此月朗风清!

以下正文,希望帮助大家以正确姿势、顺利、不浪费时间地初步搭建ubuntu开发环境:

正文

安装Ubuntu 18.04 LST

一、准备工作——明确:u盘作为安装盘 + BIOS使用UEFI模式启动电脑

Knowledge:什么是UEFI模式?

先简单提一下BIOS吧,供诸君回忆:

BIOS是一组程序(输入输出程序、开机自检程序、系统自启动程序等),固化在主板上的一个ROM芯片上。开机后,CPU自动读取BIOS中的代码(汇编语言编写)到内存,开始执行BIOS程序。

然后就是和UEFI模式相关的内容了:

BIOS具有两种模式,一个是传统的Legacy模式,一种是新的UEFI模式:

二者最大的区别在于磁盘分区架构 ,前者使用主引导分区记录(MBR)架构(感兴趣的同学请自行查阅其具体实现),该架构对单个磁盘容量的支持仅为2 TB(显然不能满足大型服务器),并且每个磁盘最多有4个主分区(如果主分区的需求大,该架构显然也不能满足)。 而后者使用GPT架构,对单个磁盘容量的支持增大到18 EB(1EB=1024PB、1PB=1024TB),并且每块磁盘最多有 128 个分区。另外,GPT架构的磁盘还具有多余的主要及备份分区表,来提高分区数据结构的完整性。

Practice:现在来实践一下吧,看一看你的电脑的BIOS支持哪些模式?

方式一:百度经验:如何查看电脑硬盘是gpt分区还是MBR分区

如果结果是gpt分区,那么你的BIOS就使用的是UEFI模式。一般来说,预装了win8/win10的电脑使用的都是gpt分区,预装了win7的一般是mbr分区。

方式二:开机后进入BIOS界面查看——由于不同的机型BIOS界面长得千差万别,不好描述,而且方式一已经足够好了,所以这里就不提了。但是,是一定能看到的。

再次请君注意,由于本人条件、精力限制,本教程仅针对BIOS为UEFI模式的电脑。

 

二、准备U盘——将ios镜像文件写入磁盘映像

我尝试过很多工具:软碟通、rufus、etcher、老毛桃。

rufus我忘记了...etcher会把u盘容量变小,需要一定方法在u盘使用过后恢复u盘;老毛桃貌似使用了一个PE系统,操作复杂度高,不推荐。

软碟通的操作简单,关键是最后用它成功了……所以建议使用软碟通。

1. 在ubuntu官网下载对应版本的 Ubuntu 18.04.2 LTS Desktop image(ubuntu桌面版本的ios镜像文件)

2. 使用软碟通将ios镜像文件写入磁盘映像:见该百度经验贴

Tips:

1. 这个百度经验贴已经足够好,本人就使用了这个方法(写入方式设为了hdd+)。

2. 在重装系统时,建议再重新执行一次该步骤,而不要用已经用过一次的U盘。实测,确实会出现一些第一次没有出现过的问题,还不知道这些问题是哪里冒出的,明明操作完全相同……

 

三、为ubuntu准备“未分配/空闲的空间”、考虑ubuntu使用多少空间+怎样分配它们的问题

虽然在ubuntu安装时,有“ubuntu与windows共存的选项”,但是听说这样不方便管理ubuntu,而且会出现各种BUG。所以我使用的是为ubuntu系统、该系统下 下载使用的文件,准备另外的独立的空间。

因此需要在安装ubuntu之前,将磁盘上的一部分空间设为“未分配”。这个操作可以在windows下完成(也可以通过一个PE系统完成),并且有多种方式都可以完成,下面将介绍一种方便简单的方式。

1. 考虑ubuntu使用多少空间、怎样分配它们的问题

这个问题其实水蛮深的,需要知道Linux系统的目录树结构、目录树的挂载等基础知识,还需要知道自己将要在ubuntu上使用哪些软件,这些软件的大小、默认安装在什么位置(一般使用默认位置,不然有时出了bug上网找解决方案时得再自行修改些东西,有些麻烦)

在这里不再将这些知识点展开了,而是直接说下我的实操方案,供诸君参考:

  • 配置:16G内存,一块512G的SSD
  • 需求:平时基本不使用windows,而是使用ubuntu进行深度学习学习、工作。需要在ubuntu上安装CUDA+CUDNN(默认安装在/usr)、Anaconda3(默认安装在/home)、Pytorch、TensorFlow、Pycharm,还有自己的project(想要放在/home下)。
  • 综上:
    • 290G给win10,216G给ubuntu(剩余空间被系统分区等占有):
    • 8G给交换空间
    • 20G给/
    • 60G给/usr
    • 余下的空间128G给/home

2. 将所需空间设为“未分配”:方法见该百度经验贴,注意执行到第5步即可。

 

四、安装ubuntu——11个关键步骤

1. 关机,插好U盘

2. 开机,立即进入BIOS:

  • 保持UEFI选项不变(不要设为Legacy)
  • 找到security boot设置项,设为disabled
  • 在启动顺序中,将USB硬盘设为第一位
  • 保存退出BIOS

这里不、也无法详述了,因为不同机型进入BIOS的方式不同、BIOS界面差距也很大,还请诸君耐心寻找这些选项并修改。

security boot设置项设为disabled

我看到别人的博客有写到遇到,在security boot设为启动时,BIOS将不会经过ubuntu的grub,而是自动执行windows manager。而且ubuntu还会有其他的各种BUG。

3. 保持U盘插入状态,开机后将见到黑色的安装界面。

4. [※重要※] 将光标移动到第二行“Install Ubuntu”,按e键,进入grub配置界面,在倒数第二行,将“quiet splash --” 替换为 “quiet splash $vt_handoff acpi_osi=linux nomodeset”,按F10保存修改并进入安装界面。见下图。

 

进入ubuntu临时系统,默认打开了安装程序,一步一步执行:

5. [※重要※] 选择“最小安装”,其他选项包括“安装时下载更新”、“安装第三方软件”,均不要勾选,不仅会拖慢速度,而且由于显卡驱动还没有装好,安装好的第三方软件还可能会让装好的ubuntu卡住(没错,我就掉坑了…)

6. [※重要※] 选择安装类型时,点击“其他选项”

7. 在分区界面时时发现窗口有部分被遮挡,按alt+F7,拖动鼠标,即可在窗口的任意位置(不仅标题)拖动该窗口。

8. 选中设备状态为“空闲”的一行,点击其左下的“+”,按照事先自己的约定填写选项即可。另需注意:

对于交换空间,“新分区位置”都保持默认,分区类型填为“主分区”,“用于”改为交换空间;

对于/、/usr、/home,“新分区位置”都保持默认,分区类型填为“逻辑分区”,“用于”保持默认;

 [※重要※] "安装启动引导器的设备“:选择 windows manager即可,因为ubuntu 18.04支持UEFI模式启动。而不需要挂载/boot。

9. [※重要※] 设置用户时,点选“自动登录”,否则会遇到安装完成后登录不进去的问题,其实还是显卡驱动的问题。

10. 安装完成,点击“立即重启”,注意出现让拔U盘的提示后,快速把U盘拔掉

11. 重启时进入BIOS,把启动顺序改为UEFI硬盘启动优先,并且把ubuntu设为优先(较windows manager)

 

安装Nvidia驱动

进入Ubuntu后切记!不要兴奋得太早,东点西点电脑卡住了又得重启……

一、思考选择合适的驱动版本

所谓合适,是指支持你的GPU型号、支持你将要使用的cuda版本、cudnn版本、pytorch版本、tensorflow版本。

不要急,自底向上,一步步分析:

1. 进入Nvidia官网,输入你的GPU、操作系统信息,在结果列表中查看支持你GPU的驱动有那些,驱动版本在第二行小字部分有写;

    我的搜索结果:

 

 

2. 到CUDA官网查看CUDA版本和驱动版本的对照图,截图:

    

 

3. 进入cuDNN版本页面,查看与CUDA版本对应的cuDNN版本,网页截图:

    

 

4. 进入pytorch官网,可以看到pytorch支持CUDA9.0及以上。网页截图:

    

 

5. 进入tensorflow官网,可以看到tensorflow版本与cuda、cudnn的版本对应关系。网页截图“

    

 

6. 综上,可以确定出自己的版本对照表格,以我为例:

可用驱动版本  

CUDA版本  

cuDNN版本 pytorch版本  tensorflow版本             
410.66以上均可 10.0 7.4.0 1.1 tensorflow_gpu-1.13.0

 

 

 

 所以我决定安装Nvidia 410版本的驱动。

 

二、安装驱动

网上有很多种安装方式

1. 添加NVIDIA显卡驱动的源,apt-get安装

2. 官网下载驱动文件,然后本地安装

3. 安装CUDA的时候,自动安装相应的显卡驱动

我最后用第三种方式成功安装了,参考资料:How do I install NVIDIA and CUDA drivers into Ubuntu?

1. 移除已存在的CUDA PPA源和安装过的nvidia-cuda-toolkit

sudo rm /etc/apt/sources.list.d/cuda*
sudo apt remove --autoremove nvidia-cuda-toolkit

2. 移除之前存在的Nvidia驱动

sudo apt remove --autoremove nvidia-*

3. 更新源

sudo apt update

4. 添加graphics-drivers ppa

sudo add-apt-repository ppa:graphics-drivers/ppa

5. 安装key

sudo apt-key adv --fetch-keys  http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

6. 添加仓库

sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo bash -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda_learn.list'

7. 再次更新

sudo apt update

8. 安装CUDA。在安装的同时自动安装了Nvidia驱动。

sudo apt install cuda-10-0

如果提示依赖缺失,根据提示,执行:

sudo apt update
sudo apt install cuda-10-0 --fix-missing
sudo apt update

9. 安装CUDNN

sudo apt install libcudnn7

10. 将CUDA加入环境变量

gedit ~/.profile

把以下内容复制到文件末尾

# set PATH for cuda 10.0 installation
if [ -d "/usr/local/cuda-10.0/bin/" ]; then
    export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
fi

11. 安装nvidia-cuda-toolkit

sudo apt install nvidia-cuda-toolkit

如果提示依赖缺失,同样地,执行:

sudo apt update
sudo apt install nvidia-cuda-toolkit --fix-missing
sudo apt update

12. 重启

13. 检查是否安装成功

1)检查CUDA版本

nvcc --version

显示如下信息:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

 

2)检查CUDNN版本

/sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

显示如下信息:

    libcudnn.so.7 -> libcudnn.so.7.6.1

 

3)检查NVIDIA驱动:

nvidia-smi

显示如下信息:

Tue Jul 16 12:39:49 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 107...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A   52C    P5     6W /  N/A |    651MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1113      G   /usr/lib/xorg/Xorg                           216MiB |
|    0      1456      G   /usr/bin/gnome-shell                         266MiB |
|    0      2550      G   ...quest-channel-token=2425377841825622846   133MiB |
|    0     25058      G   ...er/下载/WizNote-2.7.5-x86_64.AppImage    29MiB |
+-----------------------------------------------------------------------------+

 

看到这里你已经完美地完成啦~本教程也到此为止~

 

标签:双系统,sudo,apt,BIOS,UEFI,ubuntu,安装,cuda
来源: https://www.cnblogs.com/hesse-summer/p/10689291.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有