ICode9

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

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

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

标签:双系统 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

专注分享技术,共同学习,共同进步。

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

ICode9版权所有