Arch Linux 个人小记
整体配置
我的笔记本上装了 Arch Linux,而台式机上则是 win11 和 Linux 双系统。笔记本是 13 寸的小新 pro, 运气比较好,一直都没有碰上什么兼容性的问题。 台式机用的显卡是 Nvidia RTX 2080Ti,用官方的驱动就可以很流畅的使用,目前除了 GTK4 的问题之外没有什么不能解决的问题。
- 发行版:Arch Linux
- WM:i3wm
- 终端:kitty
- 应用启动器:albert (rofi, dmenu)
- dock: polybar
- 窗口混成器 (composite): picom-jonaburg-git
为啥要折腾 Arch
为什么要折腾 Arch Linux 呢 ?🤔
用 Windows WSL 或者装个黑苹果,或者用 ubuntu,不香吗?
因为 "Arch is the best!",开玩笑的。
- 折腾也是一种乐趣
- Windows 不是 Linux,MacOS 也只是类 Unix
- Linux 能让你看到一些操作系统较为底层的东西
KISS: Keep It Simple, Stupid
首先说说 “折腾” 这件事,如果我需要使用 Linux, 那么折腾是必然的,这和我用什么发行版并没有太大关系,这个时候不如用一个比较纯净的系统(比如 Arch)方便下手把玩。 举个例子 🌰,一般的开箱即用的发行版就像精装修的样板房,提包入住,但是我很难一下子弄清楚房间里面的布线和一些家具的设置,万一某个组件坏了无从下手(尤其是当我自己还要当维修工人的时候)。 Arch 就像一个毛坯房,水管电线什么的都预留好了,我需要做的仅仅是对着宜家的家具清单(Arch Wiki)找到自己想要的家具,一件件充实自己的小窝。 这种感觉是无与伦比的,因为这个时候,它其中的各种东西是按照我的喜好来选择配置的,我好像真正的拥有了它。 在纯净的 Arch Linux 系统上,我能在简易的 WM 上慢慢调整自己的桌面布局,用按键映射软件或者快捷键管理软件管理自己的工作流,可以看看 unixporn 看看大家是怎么美化桌面折腾电脑的,有非常多可供自定义的选项等待着去发掘。
然后再说说 Linux 系统,我们开发的后端软件大多数是最终需要交付到 Linux 系统上的,能在 Linux 上编码自然的就有原生的优势。 当然,在 Win 和 MacOS 上也有解决方案 —— 虚拟机、docker 或者 vscode remote 到服务器上进行编码,不一而足。 折腾过 Windows 环境的人应该都能理解,Windows 和 Unix 系的系统很多小细节都不尽相同,更重要的是 Windows 并不是全局 UTF-8,有时会出现奇奇怪怪的问题。 再者,一如 Windows 的名字,它是一个图形操作系统,MacOS 也是,在命令行的支持上 Linux 会更好。
Linux is only free if your time has no value
以上这些都不过是萝卜青菜各有所爱。我需要经常处理 k8s 的东西,平时接触的生态比较贴近 Linux,平时用不着 Linux 的同学大可不必大行折腾。
优点
了解 Linux
Arch Linux 有很齐全的 ArchWiki 可供查阅。
学习所有东西都是有成本的,即使是友好的 Windows 系统,第一次接触的小朋友也需要上手慢慢使用才能逐渐弄明白操作逻辑。 在本科期间,我第一次接触 Linux 是在 CSAPP 课程的 bomb lab 上,当时连 shell 都不知道怎么用,需要使用 gdb 调试器在命令行中敲敲打打拆炸弹。这是对 Linux 的直观印象。 在实践之后需要理论学习,将之内化于心。要学习 Linux,除了看到的各种小技巧,还需要大量的实践来熟悉操作。 接下来,在 “熟悉” 和 “理解” 之间还有很多的路需要走,这个时候就需要再去学习理论知识,如此循环往复,是一个螺旋上升的过程。
为了大量实践 Linux, 日常使用 Linux 是一个选择 —— 不是使用虚拟机,不是使用远程服务器,而是真真正正自己安装一个系统在物理磁盘上,从配置引导开始开始一步步配置属于自己的 Linux 系统。 在这个过程中,不出意外的会遇到了许多挫折,很多 “难者不会,会者不难” 的问题能折腾许久, 通过 RTFM,STFW 最后就能解决 90% 的问题。
Read The F**king Friendly Manual.
Search The F**king
Friendly Web.
包管理器
Linux 的包管理器非常省心省力,回顾一下 windows 的各种软件安装流程,“进入某个软件的官网 ➡️ 下载安装器 ➡️ 双击下载”,
但是在 Linux 下用 yum
、apt
、pacman
之类的包管理器一行命令就能把软件安装好,更好的是这种流程方便自动化和记录,软件也能保证一个比较新的状态。
相比于 ubuntu 的包管理器,Arch Linux 的包管理器 pacman
更加方便。
这种便利性来源于 AUR (Arch User Repository),这是一个社区主导的软件仓库,里面包含了各种软件的打包脚本,
只需要使用 yay
或者 paru
这种 AUR helper 就能傻瓜式的安装各种软件,摆脱折腾 ubuntu ppa 的麻烦。
假如我需要安装著名的 fd
、ripgrep
和我很喜欢的按键映射软件 keyd 1 ,那么我只需要使用如下命令就能安装
yay -S fd ripgrep
yay -S keyd
顺带一提,Windows 现在也有 scoop
、chocolaty
、winget
这些包管理器了
平铺窗口管理器
不同于 MacOS 和 Windows 的浮动窗口管理器,Linux 上有一种全新的窗口管理体验 —— 平铺窗口管理器 2。
一般来说,浮动窗口管理会在一个桌面里开多个窗口,窗口之间是可以相互重叠的。
但是平铺窗口管理则倾向于把所有的窗口都密铺在桌面上,也就是说桌面始终是占满的状态,那么这个时候如果我开了几十个窗口,在桌面上岂不是什么都看不到了?
这个时候,我们有工作区(workspace)这个概念(下文称 ws),也就是其他操作系统当中的虚拟桌面,在工作区之间切换只需要使用 win+number
就可以快速切换。
一般来说,我会将浏览器绑定在 ws2,即时通讯 app 放在 ws3,笔记软件放在 ws4,rss 阅读器放在 ws6,编码环境会放在 ws10+ 的位置,这些配置都依个人而定,可以很简单的进行设置。
平铺窗口管理的优点主要是它能保证我在一个工作区内能足够专注,主要的软件能占用满整块屏幕。但是,如果某个工作需要开很多窗口,这种桌面管理未免有些麻烦,这个时候也能把各个窗口重新排列。 形成如下列图片所示的堆叠模式。
缺点
软件生态
由于 Linux 桌面用户太少,并且 Linux 有各大发行版,本就不多的用户量被掰得更加细碎,各大厂商并不会第一时间考虑 Linux 用户,国产软件更是如此。腾讯系的 QQ、Tim、微信等一度并没有官方支持的 Linux 版本。 在文档编辑方面,Microsoft 的 office 已经成为一种标准,平常需要写的各种杂七杂八的文档都需要在 office 上编写,这是在 Linux 上不能做的事情,wps office 和 libreOffice 并不能完全替代 MicroSoft Office。 近几年由于开发成本,大家开始拥抱 electron 应用,真正意义上的一次编写处处运行。也许这也是未来 Linux 软件生态的破局之道。
至于游戏方面,阀门厂的 Steam Deck 上的 SteamOS 3 就是 Arch 系的,阀门厂为兼容层做了相当多的优化,相信未来 Linux 的游戏生态也会有所好转。
但是目前看来,软件生态上 Linux 还是有巨大的缺失,能满足程序员的需求但是普通群众确实没有什么理由接触这个门槛很高的操作系统。
太折腾
Arch Linux 不够开箱即用,虽然可以自定义很多组件,不过都需要折腾。 对于小白来说,最麻烦的莫过于定位问题,没有碰到过千奇百怪的问题就很难知道到底是什么组件出现了问题。 我个人而言,就遇到过 GRUB 引导错误,X server 不能启动等问题,身边常备着 ventoy 的 U 盘,里面装着最新的 Arch Live 光盘映像,随时准备修复系统。
Arch Linux 是滚动发行版,不同于 ubuntu 的点发行版,Arch Linux 更新很频繁,网传有所谓的 “滚挂” 的现象产生。
总结
适合自己的才是最好的。Arch Linux 提供了构建适合自己的工作流的途径。
如果读者看到这里想自己试试装个 Linux 玩玩。 不妨从 Ubuntu desktop 开始试水,然后再试试 Manjaro,这是一个 arch 系的操作系统,开箱即用,可以轻松体验到 arch 生态。 如果希望直接入手 Arch Linux,不妨从官网的 安装指南 开始,也可以使用 Arch Linux Studio 发布的 ArchTutorial。
不管是哪个发行版,遇到问题时请时刻谨记 RTFM、STFW、RTFSC,大部分情况都会有前人替我们踩好了一路上的坑,自己实在解决不了了再寻求社区帮助,或者给仓库提 issue。