Linux Notes / Linux折腾笔记

 

为了防止自己反复折腾,搞一个折腾笔记还是有必要的!本篇笔记会持续更新。

安装NVIDIA驱动

众所周知,在Linux操作系统中安装NVIDIA驱动是一件非常麻烦的事情,而且很容易崩溃。下面介绍如何使用官方的RunFile文件进行安装驱动。

准备工作

你需要将驱动程序提前放入到你的电脑中,否则到命令行中复制还得需要挂载或者下载等操作浪费时间。
安装驱动安装程序所需要的软件:gcc cmake make,例如

sudo apt install gcc cmake make

禁用Linux通用图形界面驱动nouveau

打开/etc/modprobe.d/blacklist.conf文件

sudo nano /etc/modprobe.d/blacklist.conf

在文件的末尾添加

blacklist nouveau
options nouveau modeset=0

保存后退出,输入指令

sudo update-initramfs -u

更新配置,重启(下列指令都可以重启)

sudo reboot
sudo shutdown -r now

安装驱动

重启之后应该无法打开图形界面(通过图形界面登录应该进不去桌面),打开tty超级终端界面进行登录。
记得给你的驱动程序加执行权限,并运行

chmod a+x ./NVIDIA-Linux-x86_64-xxx.xx.xx.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx.xx.run

剩下的就可以按照安装程序的步骤安装即可。

卸载驱动

有的时候驱动会崩掉,nvidia-smi中没有显示,需要重新安装一下驱动,此处仍然需要runfile安装文件,执行

sudo ./NVIDIA-Linux-x86_64-xxx.xx.xx.run --uninstall

挂载硬盘

挂载硬盘也是一个基本操作,如果你需要通过外部的设备获取文件或数据,简单挂载就可以满足你的要求。但是一些长时间接入的大的硬盘不能总是开机的时候都让你手动挂载吧,有些硬盘还是让他永久挂载一下。

手动挂载和解除挂载

先提一下手动挂载。通过sudo fdisk -l先看看新接入的盘的具体的设备名称,通常是/dev/sdXn的形式。然后执行

sudo mount /dev/sdXn [dir]

其中,后面的参数为一个空目录,但是必须是一个存在的文件夹。解除挂载也很简单

sudo umount /dev/sdXn
or
sudo umount [dir]

两条指令都可以,参数可以是具体的设备名,也可以是具体的挂载点。

准备工作

挂载硬盘需要硬盘的UUID信息和文件系统,两个信息可以通过1个指令进行查看

sudo blkid

它会打印出每个分区(partition)的信息,free space不会显示在上面。每条信息都会形如

/dev/sdXn: LABEL="xxx" UUID="xxx" TYPE="xxx" ...

LABEL有的盘有Label有的盘没有,这取决于你在使用mkfs指令的时候指没指定Label,对于挂载硬盘来说不太需要这个,我们要的是UUID和TYPE,前者就是UUID啦,后者是磁盘的文件系统类型。
lsblk -f指令也可以达到上面命令的效果,而且更直观,你可以根据你的使用习惯来决定使用哪个命令。

永久挂载硬盘

编辑/etc/fstab文件

sudo nano /etc/fstab

可以看到,所有的硬盘的挂载都写在了这个文件中,包括你的系统盘、swap分区等等。在此处你可以挂载硬盘,包括NTFS文件系统的磁盘也可以挂载。
具体的格式是

<file system> <mount point> <type>  <options> <dump>  <pass>
UUID=xxx  /mnt/xxx  xxx defaults  0 0

中间使用空格或者Tab(\t)分隔。具体参数的意思是

字段 解释
file system 要挂载的分区或设备,不要被英文所迷惑
mount point 挂载点,说白了你要在哪里访问你的设备
type 挂载的分区或设备是什么文件系统类型,常见的有ext4、ntfs、auto等
options 挂载时的参数,一般使用defaults即可
dump 该挂载后的文件系统能否被dump备份命令作用,0为不能,1为每天都进行dump备份,2为不定期进行dump备份,一般选择0
pass 开机时是否检查磁盘,0为不检查,1为优先校验(根目录会使用这个),2为校验,一般选择0

执行完成之后进行重启,你的电脑即可自动挂载硬盘。
注意!千万不要写错了,否则进不去系统。我之前曾经把defaults少写了一个s,就进不去图形界面了。不过写错了也不要担心,系统如果发现这个文件发生了错误,只要你的根目录挂载没问题,他就会进入到超级终端中,允许你再次更改fstab文件。

P.S.: 为磁盘分区并格式化成想要的文件系统类型

如果你的磁盘都是free space的话,挂载是挂载不了的,就相当于Windows中的Disk Manager(磁盘管理)中显示未分配是一样的效果。所以使用指令分区是一项重要的技能。
那么如何分区呢?使用强大的fdisk指令吧!
我们都知道,看磁盘信息一个重要的指令就是sudo fdisk -l,那么这个指令也可以用于分区。直接输入

sudo fdisk /dev/sdX

其中,sdX是你的具体的设备名称,可以通过sudo fdisk -l指令进行查看。
在新的界面中,按m加回车可以看到每一个小指令的介绍,这里只介绍最基本的分区操作:将整个盘分成1个区。
输入n和回车进入到新建分区中,再选择主分区(输入p和回车),输入1和回车,再输入两次回车(默认的设置)即可设置完成一个盘的一个分区的建立。
当然还没有完成,因为这只是规划了一下,并没有实际应用。因此你仍然需要输入w和回车进行应用更改,然后fdisk就会帮助你进行应用更改。
建完了分区就算搞定了吗?并不是,这里与Windows不同,Windows通过磁盘管理可以直接一步到位,Linux中是将这个过程拆成了两个。现在使用强大的mkfs指令进行创建文件系统的工作吧! 你如果不熟悉mkfs指令的操作,可以输入man mkfs来看一下这个操作。其实很简单

sudo mkfs -t <type> /dev/sdXn

<type>处写你想要的文件系统类型,sdXn为你要格式化的分区。举个例子吧:

sudo mkfs -t ext4 /dev/sdb1

当然你可以将上面的命令简单简写为

sudo mkfs.ext4 /dev/sdb1

也是一样的。

P.S.: 使用exFAT文件系统

文件配置表(File Allocation Table,FAT)是微软发明的一种文件系统类型,Windows和Linux均支持,可用于跨操作系统传输文件。经典的FAT有FAT16、FAT32,缺点就是占用空间大,容易产生文件碎片,磁盘读写效率会比较低。
如果需要长时间跨越操作系统操作,那么选用FAT文件系统是很不错的选择。但是常见的FAT32不支持单个文件大小超过3.6G,因此exFAT(FAT64)孕育而出。
Linux在内核5.4版本的时候支持了exFAT文件系统,如果用不了,需要下载软件包。在Debian/Ubuntu环境中可以执行命令来下载

sudo apt install exfat-fuse exfat-utils

这样你可以访问并创建exFAT文件系统了,也就是说你可以使用mkfs.exfat进行格式化了。
这里不建议把大硬盘格式化成exFAT,因为会导致许多文件碎片。

CUDA的设置

如果你安装了多个CUDA,你需要指定具体的CUDA版本,否则通过nvcc -V是没法看到CUDA信息的。配置起来很简单。

修改BASH配置文件

如果你的Shell使用的是BASH(一般都是默认使用bash)则在你的用户文件夹下面可以看到.bashrc文件,用你最喜欢用的文本编辑器打开

nano .bashrc

在最后添加以下字段

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

具体的路径需要你自己看一下,一般来说CUDA都会安装在/usr/local下,/usr/local/cuda通常是一个软链接。
保存并退出之后需要使用source .bashrc应用设置,或者重新进入Shell。

修改Fish配置文件

如果你的Shell使用的是Fish,则在你的用户文件夹下面新建.config/fish/config.fish文件,并加入

set PATH /usr/local/cuda/bin $PATH
set LD_LIBRARY_PATH /usr/local/cuda/lib64 $LD_LIBRARY_PATH
set CUDA_HOME /usr/local/cuda

这几条命令和BASH配置文件中的意思是一样的。同样你需要应用设置,source .config/fish/config.fish,或者重新进入Shell。

在虚拟环境中(venv)修改对应配置文件

事实上,虚拟环境的激活实际上是和.bashrc.config/fish/config.fish一样的。在你通过virtualenv新建好环境之后进入到bin文件夹下。通过ls指令你可以看到一堆以activate开头的文件。其中,activate文件为Bash配置文件,activate.fish文件为Fish配置文件,activate.ps1文件为Powershell配置文件等等。如果想要在虚拟环境中使用CUDA,参照上述两个小节中的内容对Shell的对应配置文件进行修改即可。

共享文件服务Samba 1.0的设置

现在有些老的NAS服务器仍然使用不安全的Samba 1.0服务,但是现在的大多数操作系统已经默认关闭,所以我们必须要打开才能够访问共享服务器。
经过测试,Ubuntu 18.04及以上都是可以使用这个方法的。首先你需要确保安装了Samba服务,否则配置了半天也没啥用

sudo apt install samba

正常安装完毕之后应该可以通过命令sudo systemctl status smbd.service来查看Samba服务运行状态。
使用你最拿手的Linux文本编辑器,打开文件/etc/samba/smb.conf并找到[global]标签,在这标签下面输入

ntlm auth = ntlmv1-permitted
client min protocol = NT1

使其变成

[global]
...
   ntlm auth = ntlmv1-permitted
   client min protocol = NT1
...

保存退出之后使用sudo service smbd restart重启服务即可。

安装字体

如果是使用图形界面,安装字体很简单,但是使用命令行稍微有些复杂。首先将字体文件复制到/usr/share/fonts中,到文件夹中执行

sudo mkfontscale
sudo mkfontdir
sudo fc-cache

Kodi

Kodi媒体中心是一个屡获殊荣的自由和开源的跨平台媒体播放器和用于HTPC(Home theater PC,家庭影院PC)的数字媒体娱乐中心软件,可以运行在Linux、OSX、Windows、Android系统。它是一个优秀的自由和开源的(GPL)媒体中心软件。最初为Xbox而开发,叫XBMC(全称是XBOX Media Center)。

树莓派安装

准备好系统,可以选择Raspbian(现在叫Raspberry Pi OS)使用命令安装kodi

sudo apt install kodi

安装一系列插件

apt install kodi-peripheral-joystick kodi-pvr-iptvsimple kodi-inputstream-adaptive kodi-inputstream-rtmp

开机启动

sudo tee -a /lib/systemd/system/kodi.service <<_EOF_
[Unit]
Description = Kodi Media Center
After = remote-fs.target network-online.target
Wants = network-online.target

[Service]
User = pi
Group = pi
Type = simple
ExecStart = /usr/bin/kodi
Restart = on-abort
RestartSec = 5

[Install]
WantedBy = multi-user.target
_EOF_

sudo service kodi start

Linux常用指令

这是我自己排的操作类型,不一定准确~

指令 类型 示例 解释
man 帮助操作 man [instruction] 看指令的说明文档
ls 文件夹操作 ls [dir] 查看对应目录中的内容,不写[dir]字段默认为当前目录
ll 文件夹操作 ll [dir] 等同于ls -l
la 文件夹操作 la [dir] 等同于ls -a
mv 文件操作 mv (-T) [file or folder] 移动或重命名文件或文件夹
cp 文件操作 cp (-T -r) [file or folder] 复制文件或文件夹,文件夹需要加-r
rm 文件操作 rm (-rf) [fire or folder] 删除文件或文件夹,文件夹需要加-r,-f为强制删除
du 文件夹操作 du -h [dir] 查看子文件夹下的文件大小
df 磁盘操作 df -h 看磁盘占用
cd 文件夹操作 cd [dir] 转到具体的文件夹内
cat 文件操作 cat [file] 将文件打印在终端中
less 文件操作 less [file] 查看文件,按q退出
vi
vim
nano
文件操作 vi/vim/nano [file] 均为文本编辑器(vim一般需要安装)按照使用习惯使用
fdisk 磁盘操作 fdisk -l 磁盘分区、查看磁盘信息等
mkfs 文件系统操作 mkfs.xxxx [partition] 创建文件系统
sftp 远程操作 sftp [user]@[host] SFTP安全文件传送协议,通常使用22端口(与SSH一样)有一套自己的指令
free 内存操作 free -m/-g/-h 查看内存使用情况,-m为以MB为单位,-g为以GB为单位,-h为自动选取单位
top 任务操作 top 任务管理器,实时更新
ps 任务操作 ps -A
ps aux
查看当前所有的任务,可以看到具体的执行的命令和参数,结合grep指令可以筛选
pwd 文件夹操作 pwd 查看当前目录的完整路径
chmod
chown
chgrp
文件操作 chmod a+x [file]
chown [owner] [file]
chgrp [group] [file]
修改文件权限;修改文件所有者;修改文件所有组
chsh 用户操作 chsh -s [shell] [user] 修改用户默认Shell
mkdir 文件夹操作 mkdir [dir] 创建新文件夹
passwd 用户操作 passwd [user] 修改用户密码
shutdown 系统操作 shutdown now 关机操作,-r为重启,加now为立即执行