2022年优雅地使用桌面Linux
2022年优雅地使用桌面Linux
本文有效期限于2022.03.23
从1990年Linux诞生的那一刻,一个属于开源的时代终将出现.
大概三年前,博主第一次尝试在桌面端使用Linux。毋庸置疑的是在服务器上的主流操作系统Linux已经占了上风,但是在桌面操作系统上,无论是生态、硬件支持、日常使用体验上都远远不如Windows和macOS。
最有典型代表的就是安装无论哪个发行版都需要的操作——换源。三四年前,Ubuntu换源需要自行修改apt的conf文件、选定最快的源、刷新索引、导入密钥等等。
而现如今在ArchLinux上:
只需要一行命令,就可以自动帮你选择最快的源并自动设置。而我在这三年中没少用Linux,见证着这一步步的发展,也看见了Linux逐渐向普通用户靠近的过程。
现在已经是2022年了,随着国产基于Linux的操作系统UOS、Deepin、麒麟V20等逐渐在一些家用机上的普及,我相信中国Linux桌面操作系统的元年终将到来。
随着国产操作系统的完善,Windows或许有一天真的会被取代,这时学习一些Linux的知识也还及时。
博主已经完全转向Linux有三个月了,除了中途有一个专业软件需要回到Windows(当然其实也是博主懒得搞Linux版本QAQ),Linux已经完全胜任了我的日常生活。
下面我从几个方面谈谈使用日常使用Linux的体验。
一、介绍
1.发行版版本
我所使用的就是大名鼎鼎的Archlinux的分支:Manjaro。现如今在Linux发行版排行榜排名第三,它的易用性和软件生态由于AUR这种神级源的加持,无疑是Linux中最好的之一。
当然最近的好像还有openSUSE也是比较流行的,但其实只要掌握了一个基本方法,整个Linux的桌面操作系统的操作逻辑都是类似的,从操作来说就是一些细节而已。
2.桌面环境
以前在Ubuntu时用的是gnome,gnome有点类似与一切都帮你打包好了,开箱即是最好看的状态(笑)。
现在用的就是KDE Plasma最新版本,KDE真正的优点就在于定制化,你几乎所有的东西都是可以修改的。
具体可以看之前的文章:
可以说KDE几乎可以满足对于桌面环境美化的所有要求。
二、日常软件
在之前的文章Manjaro初体验-wzcwzc.cool中已经提及了基本软件的安装。
现在再记录踩的几个坑。
1.关于魔法上网
在Linux上日常生活,绝对离不开魔法上网。就算是有镜像源,很多软件也是在国外,下载速度令人感动。
一两年之前v2ray流行的时候,在Linux上的客户端虽然有,但是使用的依旧是系统代理。
在终端执行命令,如果需要通过代理,那还是有点麻烦的。
通过proxychain
这个包,设置系统代理端口,在通过proxychain command
来让某个命令走代理。
如果想要游戏UDP包走代理,那就更麻烦了,早年还有sstap(现已不更新)、netch(博主还不会用QAQ)等。
而自从clash这个神器诞生之后,这些就包圆了。
对于很多人来说,还是不甚了解Clash的通神之处,就稍微介绍一下。
PS:虽然这个客户端叫Clash for Windows,但其实是用eletron写的,因此是跨平台的。
中文版AUR地址:https://aur.archlinux.org/packages/clash-for-windows-chinese
clash有一个TUN模式,在Linux下如果已经启用那么那个小地球就是绿色。
这个TUN功能才是Clash强大的来源,它相当于创建了一个虚拟网卡,让无论是TCP还是UDP,还是终端的流量都是从这个虚拟网卡走,因此只要这个一开,无论是终端命令,还是游戏加速,都可从代理走。
具体可以看Clash的中文文档,写的非常详细:https://docs.cfw.lbyczf.com/
2.字体问题
在Windows下使用的许多字体,都是商用的,由于Linux是开源软件是无法使用的,因此需要自行安装。
尤其是你如果想在Linux下正常办公的话。
中文字体安装:https://aur.archlinux.org/packages/ttf-ms-win10-auto-zh_cn
当然这个包是不可能帮你下载微软的字体的
Zepman commented on 2021-02-24 16:49 (UTC) (edited on 2021-03-24 22:08 (UTC) by Zepman)
This package is based on ttf-ms-win10. It differs in that it automatically downloads the fonts from Microsoft, if possible without downloading an entire ISO file.
If Polkit allows the user to create loop devices and mount files using udisks, around 200 MB of (mostly compressed) data will be downloaded. This can be a slow download method even over the fastest connections, since the fonts are taken from a large ISO file without downloading the entire file.
If Polkit is not available or it does not allow the user to use udisks, the entire ISO file will be downloaded and install.wim will be extracted. A check ensures that enough temporary disk space is available, which can be up to twice the size of the ISO file. This can happen if either Polkit or an authentication agent is not running, or when a user is logged in remotely (e.g. through SSH).
简而言之就是你需要从Windows的安装包或者Windows目录下的字体文件夹中复制字体到这个安装的文件夹下,它就会帮你自动安装。
当然你会在WPS里遇到一些特定字体问题,你就需要自行安装了。
具体参考Arch的wiki:https://wiki.archlinux.org/title/Fonts_(简体中文)
要在系统范围内(对所有用户有效)安装字体,请将文件夹移动到
/usr/share/fonts/
目录。这些文件需要对每个用户而言都是可读的,使用 chmod 来设置合理的权限 (比如,文件至少为0444
,而目录至少为0555
)。要为单个用户安装字体,请使用~/.local/share/fonts
(~/.fonts/
现在已经过时了)。 要让 Xserver 能直接载入字体(而不使用某些字体服务),就需要将新增字体的目录加入到 FontPath 中。它位于您的 Xorg 设置目录中(例如/etc/X11/xorg.conf
或/etc/xorg.conf
) 中。更多详细内容请查阅#过老的应用程序然后更新 fontconfig 的字体缓存:
1 $ fc-cache -vf
3.网盘同步
我使用的是Microsoft E5开发者订阅,因此有5T的OneDrive空间,在Windows下有各种OneDrive的同步软件,然而在Linux下就很少有开源替代品。
Rclone是一个解决方案,相当于把网盘直接挂载,把它当做一个文件系统来处理,具体请看:OneDrive妙用-wzcwzc.cool
但是当需要同步某一个文件夹时(如自动上传文件备份等),Rclone就无法满足需要了。
我用的软件是Insync
:
提供文件夹的同步:
上传速度也是可以的。
4.笔记
在Windows下用的是OneNote,可惜微软全家桶全都不支持Linux,况且现在Markdown现在越来越熟练了。
于是到了Linux上就换了个全平台的开源笔记软件——Jolpin
这款软件在IOS、安卓、Windows、macOS下都有软件,只要设置了同步:
都可以在各个端之间同步笔记。
除了同步笔记,还可以同步待办事项:
支持从外部编辑器打开,可以说是自己私人笔记本的最好选择了。
5.其他
- 还有的输入法问题:
http://www.wzcwzc.cool/post/d437758f.html#1中文输入法
现在Archlinux的设置已经简化很多了。
- 在Windows下用惯了Snipaste,Linux下有一个替代品flameshot:
pacman官方源就有,直接安装。
1 | sudo pacman -S flameshot |
可以导入快捷键,进入截图之后Ctrl+S保存到默认文件夹,Ctrl+C复制截图,还可以点击大头针符号将截图贴到屏幕上。功能非常全面
- 录屏软件OBS Studio
这是一个开源的软件,在Windows和Linux下都能用。
可能各位看到这个软件都是直播用的,其实他的录屏功能也非常强大,可以指定输出分辨率、FPS大小、文件压缩程度。
是否显示鼠标指针,裁切大小等
三、游戏
这一部分是令我最为惊讶、最为激动的部分。
相信有耐心看到这里的各位都对于Linux有着一定的了解,敢问各位对于Linux上打游戏都有什么认识呢?
2022年的结论将颠覆你们的想象。
可以说Linux的游戏支持比macOS现在好一万倍。
记得前几年,还在讨论魔兽争霸如何在Linux上运行、一些大型的3A游戏更是无法想象。
不过多亏了Steam的G胖(据说这家伙讨厌Windows而拥抱开源),这两年Steam也在基于Archlinux开发Steam OS。依我个人看法,G胖对于开源的崇尚不仅仅是Linux游戏生态大大改善的原因,Linux桌面操作系统不断的完善,越来越多的人开始拥抱开源等等都是游戏生态日趋完善的原因。
让我们猜猜这里面有多少是能Linux原生运行的呢?
没错,将近2/3!
可以看得出,很多大厂的游戏都支持了Linux,甚至于很多游戏的性能表现比Windows下还优秀。
以下列亲测的几个数据(都已经控制变量,同一地图,同一路线,开启独显):
游戏名 | 游戏引擎 | Windows帧率 | Linux帧率 |
---|---|---|---|
Ravenfield | Unity3D | 76 | 84 |
Minecraft | Java | 108 | 114 |
坎巴拉太空计划 | Unity3D | 48 | 49 |
War Thunder | Dagor Engine 6.0 | 31 | 38 |
由于各大游戏引擎都开始支持Linux,各大游戏对于Linux的支持度进一步提高。
即便是只支持Windows的游戏,Steam也提供了Proton(wine的魔改版)来为其提供一定的支持。
至于epic等平台博主还未测试过(好像有第三方版本),相信随着开源的浪潮,他们迟早也要投入Linux的怀抱。
四、系统故障修复
前方难度大幅提升
在修复自己的女朋友时,先了解Linux的基本原则是很有必要的。
毫无疑问,每个系统都会遇到故障。做个不恰当的比喻:
Windows就像是一切都帮你操办好的女朋友。无论是平时使用的设置,还是遇到故障时Windows经典的“疑难解答”,都能帮助你解决一些常见的问题。奈何Windows实在是过于庞大臃肿,注册表、组策略、Windows服务、设备管理器……一旦你在Windows上遇到了无法解决的错误,往往需要在这些复杂的组件间徘徊且很难在网上找到解决方案。
Linux就像是什么都交给你操控的女朋友,你可以为她捏脸、改变性格等等。Linux是类Unix系统,Unix有一个著名的原则:Unix哲学-wikipedia
而在Archlinux更有一条广为流传的原则:
KISS原则(Keep It Simple and Stupid)
开发者们充分信任他们的用户,用户可以任意改造自己的系统。
Arch Linux 是由二进制软件包组成的,这些软件包会针对 x86-64 优化以配合目前的硬件。类似 Ports/ebuild也在 Arch Linux 上发展,即“Arch Build System”。
Arch Linux 项目(对开发者而言)注力于简洁主义,其贡献在于对发行版的组件提供具有良好注释的配置文件,而非带有图形界面的配置工具。因此该发行版被称为适合“不惧怕命令行的中高级Linux用户”。
依赖复杂的工具来管理整个系统的结果是给最终用户带来恶化的体验。[…] “如果你尝试隐藏系统的复杂性,于是就得到一个更加复杂的系统。” 为了隐藏内部机制而设置抽象层并非良好的架构方法,而应该把内部机制设计得精良而无需隐藏。——Aaron Griffin
——引用自Wikipedia
因此,当你利用黑乎乎的命令行时不要害怕。事实上,如果你用多就会发现,往往使用命令行修复系统会比Windows那些弯弯绕绕的组件要舒服得多。
让我们开始吧!
1.前言
PS:本章仅限于系统修复。换言之,例如DNS出现错误导致无法上网、软件崩溃退出等情况不属于系统层面的故障。且限于篇幅,仅介绍方法,而不会有具体例子。
我们都知道Linux以一个个的软件包作为系统的组件,因此系统修复最核心的部分就是包的冲突与缺失的管理。
当你的系统无法进入时你首先要判断的就是系统的运行级别。
Linux系统有7个运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
当你发现你黑屏时不要慌张,按下Ctrl+Alt+F3/F4/F5/F6都行,如果你出现:
Login:
那么恭喜你,你的系统没有任何毛病,你应该考虑的是显卡驱动问题或者桌面环境问题。
上网搜搜,现在解决linux显卡问题的、桌面环境问题的教程一抓一大把就不再介绍了。
下面我将分成几部分介绍Linux会遇到的几个问题。
2.进入chroot
chroot是Linux下修复系统的重要工具,他可以让你在一个Linux系统中进入另一个Linux系统的根目录中并模拟另一个Linux系统执行命令。
你在修复之前需要一个Linux的livecd系统(就是你装在U盘里的那个系统),当然最好连个网。
在ArchLinux中可以使用arch-chroot
,在Manjaro中或其他发行版或许不会自带这个命令,你需要安装 arch-install-scripts,在livecd系统里执行:
1 | sudo pacman -S arch-install-scripts |
例如你要修复的一个Linux系统在/dev/sda4
,你需要先把它挂载。
1 | sudo mount /dev/sda4 /mnt |
然后执行:
1 | sudo arch-chroot /mnt |
看,这就已经成功了。
如果你是由于包的冲突、缺少,内核错误等就可以在这里修复了。
值得注意的是,其实Linux内核也是一个包,也是可以修复的。
可以重新安装Linux内核,通过执行:
1 | sudo pacman -S linux |
3.引导修复
GNU GRUB(简称“GRUB”)是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
我们先了解一些UEFI下的启动
UEFI引导情况下有一个EFI分区,这里面存放着引导的基本信息,包括Windows、Linux、OEM信息等,而用于多启动的GRUB也是安装在这里。
在引导修复之前你需要找到这个目录:fdisk -l
在这个例子中EFI分区就在/dev/nvme0n1p1
,因此在引导修复之前需要先挂载。
1 | sudo mount /dev/nvme0n1p1 /boot/efi |
提示:
确保你在安装 grub你和运行指令的系统是你想用 GRUB 引导的系统。也就是说如果你是用安装介质启动进入了安装环境中,你需要在
chroot
之后再运行grub-install
。如果因为某些原因不得不在安装的系统之外运行grub-install
,在后面加上--boot-directory=
选项来指定挂载/boot
目录的路径,例如--boot-directory=/mnt/boot
。
以上的话来自ArchWiki。简而言之,你要修复哪个系统的引导,就需要在哪个系统的根目录下执行,如果你的系统无法正常进入,可以先使用LiveCD系统,使用上一章介绍的chroot方法进入你需要修复引导的系统,然后再进行下面所介绍的方法。
如果需要重新安装GRUB:
1 | sudo grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB |
esp
就是你挂载的EFI目录,例如在这里就是/boot/efi
重新配置GRUB:
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |
4.GRUB急救
如果你是双系统,当你在Windows下修改了分区之后可能会导致grub引导被破坏。
当你在Windows下修改分区后重启开机时遇到grub rescue>
时不要慌张,你的系统没有遭到任何破坏,你所需要的只是重新引导。
此时你输入ls
,你就可以看到各个分区(取决于每个人的硬盘分区不同):
1 | (hd0) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) |
你如果不知道你的Linux目录也不要紧:
挨个执行:ls (hd0,gpt1)/
等磁盘,如果出现unknown filesystem
,那说明就不是这个盘,Linux的目录一般是ext2、3、4格式。
如果你找到你的Linux分区在(hd1,gpt4)
1 | grub rescue>root=(hd1,gpt4) |
这样,你就可以看到你熟悉的系统菜单了,在重新进入系统之后记得按照上一章进行引导修复。
五、其他
这一章记录了一些杂碎的命令和方法等。
1.查看系统资源占用
这里有一些基本的命令用以查看各种资源占用情况。
有几个很实用的工具用以监视Linux系统情况,先安装一下:
1 | sudo pacman -S sysstat |
以下介绍的几个命令都是最简单的用法,具体请查询官方文档。
- 磁盘吞吐情况(io性能)
1 | sudo iostat |
看到磁盘的读写情况及CPU基本速率。
- 实时监视系统性能
1 | htop |
相信大家都使用过top
命令,htop
就是top
的升级版,通过sudo pacman -S htop
安装
它的亮点就在于可以进行鼠标交互。
- 监视显卡占用
对于NVIDIA显卡,如果使用的是闭源驱动,那么自带一个命令:
1 | nvidia-smi |
如果你需要实时刷新,可以加个watch
命令(当然其他显示瞬时状态的命令也可以这么用)
例如:watch -n 2 nvidia-smi
,这意思就是每两秒清屏并执行nvidia-smi
这个命令。
对于Intel核显:
如果没有安装相应工具需要安装sudo pacman -S intel-gpu-tools
之后执行以下命令:
1 | sudo intel_gpu_top |
- 网络速率
安装工具:
1 | sudo pacman -S nload |
不仅可以实时显示网速,还能记录过往流量;按下左右方向键可以切换不同的网卡(网络设备):
2.系统进程管理
ps
是Linux下最常用的进程管理命令。
1 | ps aux |
这个命令可以列出当前系统内的所有进程,但当我们可能需要某个特定名字的进程时,总不能一个个地手工去看吧?
例如,查找名称含listen_1
的进程:
1 | ps aux | grep listen_1 |
grep
就是从当前命令的输出结果中“抓取”
第一个参数是用户,第二个是进程的PID号,第三个是CPU占用率,第四个是内存占用。
如果一个进程在常规条件下无法结束,那么就需要kill
命令,那么你需要这个进程的PID号,执行:
1 | sudo kill PID |
就可以强制结束这个进程了。
当然还有两个命令可以直接根据名称强制结束进程:
1 | sudo killall listen_1 |
这个命令就是结束所有含有listen_1这个名称的进程组。
1 | sudo pkill listen_1 |
这个命令就是精确匹配名为listen_1
的进程执行强制结束。
3.其他分区挂载
这一小章其实应该放在上一章“系统故障修复”比较好。
众所周知,Linux一直都有一切皆文件的思想。因此当从Windows下转来时,一定要摒弃文件夹和文件就是文件的绝对观念。
不要看着Linux全都是在/
的根目录下,其实所有Linux能访问的分区都在里面。
那么如何让其他分区挂载在Linux下供我使用呢。
首先先查看你的分区:
1 | sudo fdisk -l |
这些/dev/nvme0n1p1
啊什么的都是你的分区了。
比如你想把一个/dev/nvme0n1p2
挂载到/mnt
文件夹下,你就可以执行:
1 | sudo mount /dev/nvme0n1p2 /mnt |
这下你访问/mnt
就相当于访问这个分区了。
不过不用担心,如果原先//mnt
下的文件并没有丢失,如果你把他解除挂载,原先的文件又会出现了。
解除挂载,例如在/mnt
下有挂载了一个分区:
1 | sudo umount /mnt |
就可以解除挂载了。
六、多余的话
写到这里已经将近6000字了,文章实在是太长了。这些都是笔者这些年使用Linux最为常用、也是最为熟悉的几个操作,可以看到的是,后半部分基本上都是命令行操作。有些读者可能已经感到害怕了,但其实如果用多了就会发现,效率比上GUI操作要高得多。
当然随着Linux近些年的发展,许多我介绍的命令或许已经有了相应的GUI界面,例如KDE上的系统监视器就能全面监视系统资源的占用并进程管理。然而,一旦你想初步掌握Linux这个人类智慧的结晶,你不可避免地要进行命令行操作。可以说,命令行操作正是整个Linux的精髓。
这篇文章融入Linux的许多基本认识,比如KISS原则,这些内容不仅仅是Linux的基本操作,更是笔者这些年对于Linux的一些认知。如果你能完全掌握这篇文章里的操作和上一篇文章**[Manjaro初体验-wzcwzc.cool]**(http://www.wzcwzc.cool/post/d437758f.html)中的一些Linux思想和技巧。你就算是初步踏入了Linux的大门,虽然远远谈不上熟悉,但是你已经可以独立地解决一些问题,并尝试将Linux作为你的日常系统了。