Linux(Ubuntu)装机与配置笔记
硬盘相关
df命令
df
:检查linux服务器的文件系统的磁盘空间占用情况。它只会显示已经挂载的磁盘信息!df -h
, 即--human-readble
:以1024的倍数的方式显示大小。(e.g., 1023M)df -T
:查看所有磁盘的文件系统类型(type)fdisk
命令fdisk
:强大的磁盘监视和操作工具。fdisk -l
会显示所有的磁盘和分区!不论有没有挂载,都会被列出来。mount命令
mount
:挂载一个文件系统mount -t ntfs <source> <target>
:以ntfs文件系统的形式从源目录挂载到目标目录。t表示types类型mount -a
:挂载 fstab 中的所有文件系统。a表示allblkid命令
sudo blkid
:获取各个分区的UUID和分区类型TYPE物理磁盘与磁盘分区:一个物理磁盘在
fdisk -l
中的显示往往类似于/dev/sda
,/dev/sdb
,/dev/nvme0n1
。一般情况下是不带数字的,sda sdb是最常见的命名。而分区命名则是如:/dev/sda1
,/dev/sdb2
之类在物理磁盘的后面带上数字表示分区编号。但有些如双系统中,可能会出现最后一个例子中展示的命名,这种磁盘的分区则是以
p[x]
结尾,如/dev/nvme0n1p1
,/dev/nvme0n1p9
。Linux开机后不会自动挂载Windows文件格式NTFS的磁盘。
sudo chmod -R 777 <Folder_Name>
可以取消一个文件夹的全部访问权限。chmod
命令对ext3/4文件系统,即Linux格式的文件系统才有效,对其他文件系统,如vfat(Fat32),NTFS都是无效的。/etc/fstab` 文件是掌管硬盘自动挂载配置的文件,包含自动挂载分区过程的必要信息。每一条记录格式如下:
[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]
如:
UUID=B45A01D55A019570 /data ntfs defaults 0 2
其中:
[Options]
:defaults
表示用默认的rw, suid, dev, exec, auto, nouser, async
等选项(不同内核和文件系统不同)进行挂载,这些选项的含义:rw
可读写;suid
执行程序时遵守uuid
;dev
解释字符或禁止特殊设备;exec
允许执行二进制文件;auto
可以-a
方式加载;nouser
禁止普通用户挂载此文件系统;async
所有I/O异步完成。[Dump]
:是否开启分区备份,0表示关闭[Pass]
:系统启动时检查分区错误的顺序,root为1,其他为2,0为不检查。在
fstab
文件中添加记录前一定要先尝试用mount命令手动挂载。
参考
CUDA的安装
检查自己的GPU是否是CUDA-capable,在终端中输入
lspci | grep -I NVIDIA
,会显示自己的NVIDIA GPU版本信息,去CUDA的官网查看自己的GPU版本是否在CUDA的支持列表中。检查自己的Linux版本是否支持 CUDA(Ubuntu 稳定支持版没问题)。
检查其他问题。这里就不详述了,正常情况下一般OK,这里主要要检查是否安装了
gcc
,是否安装了kernel header
和package development
。如果害怕出现问题可以参考官网执行这几步检测。于CUDA官网下载与系统对应的CUDA版本。最后一个选项选择
runfile
,因为其所需步骤最少,也因此最不容易出问题。所有选项完成后,你会看到如下两行命令:1
2wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run先不要执行第二条
sudo
开头的指令,只使用wget
下载。如果之前有安装过其他版本的CUDA并希望将其卸载,使用
sudo nvidia-uninstall
卸载。如果该命令不在系统路径中,则使用sudo /usr/bin/nvidia-uninstall
(位置可能变化)卸载。如果还是没有,或是之前的驱动已经损坏,则:1
2
3sudo apt-get remove --purge nvidia*
sudo chmod +x NVIDIA-Linux-x86_64-410.93.run
sudo ./NVIDIA-Linux-x86_64-410.93.run --uninstall屏蔽
nouveau
驱动。
Nouveau是什么
Nouveau: Accelerated Open Source driver for nVidia cards
The nouveau project aims to build high-quality, free/libre software drivers for nVidia cards. “Nouveau” [nuvo] is the French word for “new”. Nouveau is composed of a Linux kernel KMS driver (nouveau), Gallium3D drivers in Mesa, and the Xorg DDX (xf86-video-nouveau). The kernel components have also been ported to NetBSD.
简单说,nouveau是Linux系统默认的给NVIDIA卡预装的一个图形加速驱动,而这个驱动会与CUDA产生部分冲突,所以在安装CUDA之前需要将其禁用,否则会出现卡在开机登录界面无法进入图形界面(仍然可以ssh访问),黑屏,鼠标键盘输入被禁用等问题中的一个或多个(亲身经历)。
继续安装教程:
刚才说到要屏蔽
nouveau
,那么怎么知道你有没有装它呢? 使用lsmod | grep nouveau
命令,如果没有输出,就可以判定你没有运行nouveau
,可以直接进入下一步,否则:Create a file at
/etc/modprobe.d/blacklist-nouveau.conf
with the following contents:1
2blacklist nouveau
options nouveau modeset=0Regenerate the kernel initramfs:
1
sudo update-initramfs -u
Restart.
Run
lsmod | grep nouveau
again. If there is no output, then you succeed.
此后建议进入一个非图形界面安装,这里可以在重启后使用
ssh
接入,也可以在重启后按alt+ctrl+f1
,进入text mode,登录账户。输入
sudo service lightdm stop
关闭图形化界面。执行刚才官网中给出的第二条命令:
sudo sh cuda_10.2.89_440.33.01_linux.run
。注意这里的版本会不断有变化。注意这里有一个点,即你是否要同时安装OpenGL,如果你是双显,且主显是非NVIDIA的GPU需要选择no,否则yes。同理,如果准备选no,也可以一开始就加上参数--no-opengl-files
。 另外,如果不能直接执行,使用sudo chmod a+x cuda_xx.xx.xx_linux.run
为其赋权。安装成功后,会提示你将cuda的几个路径添加到系统路径中,这里重复一下,
1
2
3export PATH=/usr/local/cuda-10.2/bin:/usr/local/cuda-10.2/NsightCompute-2019.1${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}使用
nvcc -V
检测是否安装成功。当然也可以同时测试nvidia-smi
。这里可能会报错并提示需要apt安装一个包,按提示来。此时可能要再安装一个nvidia driver,具体适配版本可以在这里找到。
reboot,此时你可能会发现GUI的登录界面消失了,你面对的只有一个空白的壁纸/纯色。不要慌张,只要切换一下display manager就好了。如果你默认的是
gbm3
display manager,那最简单的方法就是直接安装lightdm
并切换过去就好了。首先按
CTRL+ALT+F5
进入纯命令行模式,然后输入:1
2sudo apt install lightdm
sudo dpkg-reconfigure lightdm如果提示服务没起来,用
sudo systemctl start lightdm
。完成。
NVIDIA Driver 的安装与使用
这里需要澄清一个问题,即NVIDIA Driver,NVIDIA utils (390), CUDA 之间的关系。NVIDIA Driver是需要单独安装的,它与Nouveau是并列关系。系统默认的显卡驱动是后者。utils 是服务于Driver的,比如nvidia-smi
, nvidia-settings
等就是utils的组件。而CUDA是建构在Driver之上的一个服务于深度学习程序的指令转换器,所以要现有前两者,CUDA才能正常运行。
安装Driver有两种方法,一种是在GUI中的Software & Updates中选择Additional Drivers中的第一行Proprietary, tested的那个NVIDIA Driver选项,然后Apply Changes即可。

也可以在命令行中用sudo ubuntu-drivers autoinstall
选项来进行安装。这里就不展开了,这篇文章讲的非常详细。
Error Shooting
- 如果系统分辨率突然被固定为了一个很小的数值,且无法调整,请尝试
nvcc --version
和nvidia-smi
,往往是由于CUDA相关的两个路径没有很好的添加到正确的位置。如果想保险,直接在~/.bashrc
或~/.zshrc
中添加那两行export
命令,然后重启。 - 如果你电脑物理连接了两个显示器,而你登录后发现桌面是空的,也没有Dock,什么都没有,有可能是他们在另一个显示器上,即使你没打开那个显示器。
参考
- NVIDIA CUDA下载官网
- NVIDIA 官方安装指南(英文)
- NVIDIA 官方安装指南中前置检查部分
- How To Install CUDA 10 (together with 9.2) on Ubuntu 18.04 with support for NVIDIA 20XX Turing GPUs
- Ubuntu 安装 cuda 时卡在登录界面(login loop)的解决方案之一
- ubuntu安装cuda循环登录
- Ubuntu安装和卸载CUDA和CUDNN
- Linux安装CUDA的正确姿势
CUDA 与 CUDNN 的联系
- 要先装CUDA再装CUDNN。
- 前者是平台,后者是基于平台的深度学习加速器。加速可以应用于几乎全部深度学习平台。还是要安的。
- 一般深度学习使用安装runtime版本即可。
- CUDNN官方下载,CUDNN官方安装步骤
修复Ubuntu中“检测到系统程序错误”的问题
问题描述
每次开机时都会有“Ubuntu xx.xx 在启动时检测到系统程序错误 ”弹窗出现。即使点击报告下次还会继续出现。
问题来源
之前的某个时刻某个程序崩溃了,而Ubuntu想让你决定要不要把这个问题报告给开发者,这样他们就能够修复这个问题。
解决办法
sudo rm /var/crash/*
:删除这些错误报告。但是如果又有一个程序崩溃了,你就会再次看到“检测到系统程序错误”的错误。你可以再次删除这些报告文件,或者选择禁用Apport来彻底地摆脱这个错误弹窗。如果你这样做,系统中任何程序崩溃时,系统都不会再通知你。但这未必一件坏事,除非你愿意填写错误报告。如果你不想填写错误报告,那么这些错误通知存不存在都不会有什么区别。sudo vim /etc/default/apport
永久屏蔽这些报错。
参考
安装Python3.6版本的Anaconda
由于之前使用的一些开源库和软件对3.7的支持性尚还有问题,而Anaconda默认Python版本为3.6, 所以有必要把Anaconda降级为3.6版本。
安装方法:
到Anaconda官网下载并安装最新3.7版本。
世界线开始分歧,你可以选择保留3.7版本的Anaconda,并创建一个虚拟环境,或是直接替换Python版本。
对前者, 若只要一个python环境不要packages,
1
2conda create --name ana36 python=3.6
source activate ana36反之,如果要安装一个新的Anaconda,包含默认的所有packages,
1
2conda create -n ana36 anaconda python=3.6
source activate ana36对后者,
1
conda install python=3.6
添加Vim拷贝至系统剪贴板快捷键支持
(from: link)
Having trouble copying selected text from Vim (not MacVim)? Since using "+y
or '"*y' in Vim on a Mac doesn't actually copy the selected text to the system clipboard, you might find it beneficial to do the following:
- Open your
~/.vimrc
file - add
vmap '' :w !pbcopy
- Save it and
source
the file
现在,你就可以在 visual mode, 即在Esc命令模式后按下v键后的选择模式中,选好需要拷贝区域后,连击两次'
,即使用 ''
来拷贝所选区域。
在Mac/Linux上使用ssh挂载远程网络硬盘
TL;DR:
- 安装sshfs:
sudo apt-get install sshfs
- 直接在
~/.zshrc
中添加以下行:(当然,需要更改文件夹名称,以及挂载后的命名)
连接本地Linux Server
1 | function connect_misaka () { |
连接Gypsum
1 | function connect_gypsum () { |
参数解释
ovolname
:挂载上网络硬盘之后硬盘的命名IdentityFile
:如果已经设置了免密登录,用这个参数指明ssh私钥位置即可,不需要输入密码。<source> <target>
:网络硬盘源位置<username@ip.address:/the/source/path> 与本机目标挂载位置reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
:多次断线重连,可以再断开网络连接、服务器重启等问题发生后再次自动连接。
硬盘相关
硬盘信息查看三幻神
sudo fdisk -l
: 最为详细全面的硬盘信息,既包含了已挂载的盘,也包含了未挂载的盘。其含有磁盘在/dev
中的位置,size(非常详细,既有易于阅读的单位MB/GB等,也有精确到字节和扇区的信息),硬盘型号,disklabel型号(GPT DOS)等。df -h
: 含有所有当前已挂载的磁盘的信息,包括/dev
位置,总空间,已用空间和可用空间,利用率,以及挂载点位置。sudo blkid
: 全部(已挂载+未挂载)的硬盘信息,包括/dev
位置,文件系统类型(ntfs,ext4,fat32等),Label(就是Windows上写的卷名),UUID,以及Partition UUID。
为什么有的硬盘开机就自动挂载了,而另一些则没有
- 在我遇到的情况里,什么都不用做就会自动挂载的是外置的USB盘符,它们其实是开机之后被一个个load起来的。而装在主机里面的那些硬盘,则需要额外进行设置以便能开机自动挂载。
- 设置方法:
sudo vim /etc/fstab
进行编辑即可。每个想要挂在的盘各自写一行,每行包括设备UUID,挂载点,文件系统,以及后面不怎么用改的三个参数(用default 0 0
填充即可)。这些信息的查看方法在上个小节有提。