双硬盘安装双系统,配置显卡驱动,安装cuda,pycuda

本文主要记录了在双硬盘笔记本电脑自带的Windows10之外安装ubuntu18.04,并安装NVIDIA显卡驱动与cuda 和 pycuda 的步骤和注意事项。

软硬件清单: 128G SSD + 1T HDD + Windows10 + Ubuntu18.04.2 + nvidia driver 418.xxx + cuda 10.1 + pycuda 2018.1.1


过程清单

1. 系统安装

双硬盘安装双系统根据启动方式的不同以及引导区是否共用同一硬盘有多种选择。本文中所采用的是,Windows10系统安装在固态硬盘进行启动,ubuntu18.04安装在机械硬盘进行启动。双硬盘均是GPT分区表,系统均使用UEFI引导启动(近年新出的双硬盘笔记本电脑基本都属于这一类)。
 

1.1安装前处理: 

  • ubuntu官网的Download选项中下载桌面版系统镜像;
    • 在下载之前,建议根据将在Ubuntu上安装的核心软件对Ubuntu内核版本的要求来选择Ubuntu的版本。例如,计划在ubutnu上安装CUDA10.1, 而其目前仅支持4.15.0的内核,那么我们需要下载Ubuntu18.04.3而非18.04.4;因为18.04.4内核为5.3.0,在安装CUDA10.1可能出现较难解决的报错;
  • 使用ubuntu官方推的rufus-3.4将下载好的ubuntu ISO文件写到 U盘中,可参考此处
    • 建议所有选项均使用rufus的默认设置,例如Partition Scheme 为 MBR, Target system 为 BIOS or UEFI-CSM。笔者在给第二台笔记本装Ubuntu时讲前述两项进行了更改,导致在使用USB启动时,UBS无法被识别而直接进入grub命令行,使用默认推荐设置后成功安装;
  • 压缩卷(阅读到链接中第三步即可) 给ubuntu系统提供安装空间,笔者在机械硬盘上压缩了200G空间;
  • 在Windows中关闭快速启动
  • 在开机引导中关闭security boot 安全启动项,并将`USB/USB硬盘`置为最优先(在引导中调整到最上方);建议安装完成后将Windows最优,以便继续享受其带来的快速开机体验;
  • 最后插上U盘,开机按 ESC/F10/F12 进入UEFI引导选项,选择从U盘启动即可开始系统安装与设置;如果报错进入grub命令行,检查使用rufus制作U盘启动盘时的设置

1.2安装中:

  • 有用户反馈提到ubuntu18.04存在WiFi驱动等问题,可能导致安装后WiFi无法使用的情况,因此有人建议先使用 'try ubuntu' 的选项。不过对于读写速度较慢的U盘,使用 'try ubuntu' 可能会很卡顿,对于命令的响应也很缓慢,甚至可能会因为一些指令或者操作而crash,从而不得不强制关机。由于笔者直接安装ubuntu 18.04.2的过程中,并未察觉有明显的问题,所以建议可以`直接安装`。而且按照本流程,即便出现安装错误,也不会影响Windows,删除ubuntu也非常简单。
  • 安装过程中大部分是填写一些信息,真正重要的步骤是分区设置,这里以笔者的设置为例:
  1. swap 交换空间。分配大小:8192MB (1-2倍内存);分区类型:逻辑分区 (Logical);新分区位置:空间起始位置(beginning of the space),用于(use of):swap area
  2. EFI 系统分区。分配大小:512MB;分区类型:逻辑分区 (Logical); 新分区位置:空间起始位置(beginning of the space),用于(use of):efi 
  3. 挂载 /home。分配大小:102400MB; 分区类型:逻辑分区 (Logical); 新分区位置:空间起始位置(beginning of the space)。本目录一般用来放用户文件,一般用的不会太多。如果会有大量数据存放和处理任务,需要预留更多空间。
  4. 挂载 /usr。分配大小:51200MB; 分区类型:逻辑分区 (Logical); 新分区位置:空间起始位置(beginning of the space)。本目录会用来安装很多ubuntu下的软件和包,共享库等等,需要准备较多空间,这里设为50G。
  5. 挂载 /。 分配所有余下空间。分区类型:逻辑分区 (Logical); 新分区位置:空间起始位置(beginning of the space)。本目录下的文件夹会放置系统启动,硬件相关的文件,需要一定的空间
  • 安装启动引导的设备改成上述第2点所设置的EFI系统分区。
  • 完成部分信息录入,重启。(如果在点击restart now后,电脑卡住并处于失控状态,笔者一般会强制关机,再重新通过按ESC进入UEFI引导,选择Ubuntu)。
  • 此时的空间划分在安装完成后仍然可以进行更改,所以不必太担忧有的分区空间可能不足的问题。

1.3安装完成后:

  • 安装完成重启后,可能会在开机界面、登录界面、桌面或者紫屏状态下卡住,无法操作,绝大多数情况下是因为搭载了双显卡,而开源驱动与NVIDIA显卡兼容性有问题。因此需要在grub界面先临时禁用开源的nouveau的显卡驱动,并在成功登陆后修改grub文件。具体操作为:
    1. 按电源键开机后,反复按ESC键进入UEFI引导选项(不同品牌笔记本不同,可以上网查询);

    2. 在UEFI引导选中ubuntu所在硬盘,进入grub;

    3. 在grub界面中通过上下键选中ubuntu, 按e进入选项编辑,在倒数第二行的quiet splash 后添加acpi_osi=linux nomodeset,按F10保存并登入系统。

  • 成功登陆系统后禁用nouveau的具体操作为:命令行中输入: sudo gedit /etc/default/grub, 在文件中的 quiet splash 后添加acpi_osi=linux nomodeset即可, 完成后在命令行输入 sudo update-grub 使修改被应用即可。
  • 在许多教程中,上一步的 /etc/default/grub 被改为了 /boot/grub/grub.cfg,但其实后者是由前者生成的一个文件,上一步的 sudo update-grub 也即是在生成最新的 grub.cfg,所以改两者是等效的。不同之处在于,修改前者需要运行 update-grub 的指令,但后者不用;另一个重要的不同在于,如果修改仅仅写入到 grub.cfg 中,如果将来 grub.cfg 被更新了,那么我们对其的修改就全部消失,需要重新设置。

如果只是想玩一玩ubuntu,并不需要使用笔记本的GPU做并行加速运算或者机器学习,那么完成这一步之后安装一个NVIDIA驱动即可,有以下几种方式。注意禁用nouveau驱动以后,安装NVIDIA驱动之前避免重启,可能会导致系统出现问题。

  1. 先在命令行中输入:sudo apt-get update 。 然后进入software and update,点倒数第二个标签(additional driver),等待其自动搜索驱动,完成后可以将驱动手动改为NVIDIA 390 或者其他可获取版本。推荐先通过在命令行中输入 ubuntu-drivers devices 查看推荐的显卡驱动版本,然后选对应的版本。一般ubuntu提供的驱动版本都比较老,但是都能用。安装完成后重启即可,重启后会发现 setting -> detail中的图形显示卡已经变成NVIDIA显卡。
  2. 自动安装,在命令行中输入: sudo apt-get update 进行更新,然后输入 ubuntu-drivers devices 检查所有可用驱动,最后输入 sudo ubuntu-drivers autoinstall 自动安装。
  3. 将NVIDIA的源加入系统:sudo add-apt-repository ppa:graphics-drivers/ppa,输入 sudo apt-get update 进行更新检查,重复1中操作会发现多出来很多版本。上NVIDIA官网查看显卡当前最新和比较稳定的驱动版本,然后在software and update的additional driver中选择该版本的驱动。这样所获取的驱动版本比1中会较新。安装完成重启即可。
  4. 如果驱动始终安装不成功并且在/var/log/nvidia-installer.log文件中有报语法错,可能是Ubuntu的内核版本问题,建议仔细核对。

注意,如果需要使用笔记本的GPU做并行加速运算或者机器学习,也即需要使用cuda时,建议不要另行安装驱动,而是直接使用cuda中提供安装的版本,可以避免driver version insufficient的问题。详见下文。

系统安装参考链接:

  1. https://blog.csdn.net/Crapefruit/article/details/82563108
  2. https://m.jb51.net/article/146555.htm

2. cuda 与 pycuda 安装

目前cuda有很多版本可以使用,不同cuda版本对显卡驱动版本的要求也不同,一定要以cuda要求的版本为准,以出现cuda安装后无法使用的情况。

2.1 NVIDIA driver 与 cuda

  • 对于按照本流程走下来的安装而言,如果要使用GPU进行并行加速和机器学习的应用,现在应当刚刚禁用完nouveau。接下来,先去cuda官网下载想要使用的cuda版本。然后根据对应版本的Online document进行依赖项的检测和安装,进行到该文档第2部分结束即可。
  • 安装指令可以在cuda下载界面中找到,先选好对应的系统信息,选中想要使用的installer type,下方会出现安装所需要的指令。按照指令操作,中间会有一个用户协议需要accept,之后会自动完成安装。
  • 安装完成后,安装程序会提示需要在bashrc中加入cuda的路径。 首先,通过 sudo gedit ~/.bashrc 打开bashrc文件,在文件末尾添加提示中的路径即可,例如:
export PATH=/usr/local/cuda10.2/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda10.2/lib64:$LD_LIBRARY_PATH    (这里安装的cuda10.2版本)
  • 最后在命令行中输入 source  ~/.bashrc 使更新生效即可。

对于已经安装了不满足cuda要求的驱动版本的系统,可以先卸载当前的NVIDIA驱动,然后按照上述步骤一步步进行cuda安装,在确认安装内容时确认也安装cuda指定驱动即可。

注意:

1. 尽量使用cuda安装时推荐的驱动版本,避免使用低版本,否则安装完成后会出现driver version insufficient的问题。另外虽然官方提供了在不带NVIDIA 驱动安装完cuda后,重新安装cuda所需驱动的办法,即在安装文件夹下运行:sudo sh cuda_10.1.105_418.39_linux.run --silent --driver,但笔者尝试后发现并未成功,即 additional driver 下并未出现 manually installed driver的字样,nvidia-smi指令也报找不到显卡的错。

2. 如果由于安装某些第三方库导致NVIDIA driver 失效,例如发现系统中 manually installed driver不见转而自动启用了nouveau的驱动,此时只要添加NVIDIA官方PPA (sudo add-apt-repository ppa:graphics-drivers/ppa;  sudo apt update), 然后到设置-additional driver下选中所需的驱动版本即可。

2.2 pycuda

pycuda是NVIDIA为Python提供的cuda使用接口,目前已经更新到2018.1.1,有两种方式可以进行安装。一种是通过搜索pip pycuda会出现的pip 安装,另一种是在本机编译,然后通过pip安装。

  • 在Ubuntu18.04中,笔者尝试直接通过pip安装,但不可用。在调用pycuda的package时,jupyter notebook的kernel会直接crash。
  • 在Windows10中,笔者在anaconda prompt中通过pip进行安装,但在调用是报错不能编译kernel.cu,可能是因为cuda版本与Visual studio的版本兼容问题,也可能与pycuda有关。
  • 因此建议在ubuntu下按照官方installation的指导进行安装,按照步骤安装依赖库,编译,pip安装等,笔者一次即成功安装。但不得不说Installation界面看起来的风格很古老,还停留在ubuntu10.04的时代,这也是笔者一开始觉得官网安装不靠谱的原因,但实践证明还是官网的安装最稳妥。

遗留问题

1. 可能由于NVIDIA驱动不支持笔者笔记本的亮度调节功能,使用NVIDIA驱动时无法通过快捷键调节亮度,而如果修改grub打开亮度调节,则会导致GPU无法检测,NVIDIA drive被disable。在 HP OMEN2,  Lenovo Legion Y540 上均存在此问题。

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值