0x00 前言
在 2020 年的年初,我又一次地把自己的主力操作系统从 Windows 换成 换回了 Linux,算到现在也有半年了。虽然并不是第一次用 Linux,但确实是第一次不每天切换回 Windows 双系统,而是完全地只使用 Linux 的体验。于是大概也想写点什么,算是奇怪的杂谈 lol
顺带,这也是我想写博客这么多年来真正发出来的第一篇文章,可喜可贺可喜可贺(我果然是只大咕咕)
0x01 大概是我和 Linux 的第 N+1 次约会
诚心而论,从 Windows 到 Linux 的迁移对我而言并不是一个全新的过程。
在过去的数年中,我早已有了数次相同的尝试。并且还有过一段 distro-hopping 的过程,在不同的发行版之间换来换去:商业的 Ubuntu,为中国定制的 Ubuntu Kylin(个人觉得诚意不足),深度的 Deepin(漂亮是漂亮,但似乎有点 buggy),作为 Ubuntu 上游的 Debian (虽然用的是 Testing branch),“懒人版 Arch” Manjaro,红帽的 小白鼠(大雾) 社区项目 Fedora,还尝试用过一些奇奇怪怪的发行版做主力系统(比如专注于安全测试的 Kali 和专精于隐私的 Qubes……)
我还试过各种各样的虚拟化,比如说宿主机是 Windows 的情况下,用 Virtualbox 跑个 Linux 系统,然后用 ssh 进去,完全靠 vim 写代码(捂脸),或者是用 Linux 做宿主,然后试着直通显卡到 Windows 虚拟机玩游戏,不过最后还是放弃了;也用过 Windows Subsystems for Linux(那个时候还没出 WSL2,所以体验还是挺不好的……一堆网络命令没法用);还想过组一个虚拟化平台用 VMWare ESXi,但是没钱 QAQ
虽然是有了这么多尝试,但最终大多都由于各种各样的原因而不了了之,或是有着大量的文件迁移起来过于费劲,或是由于一些不得不在Windows上运行的专门软件,又或者只是自己想玩游戏(笑)而各大厂商也一向没什么动力去支持Linux。于是“迁移到Linux”就和“拯救我那些吃灰的树莓派”一样,成为了我 Todo List 上的钉子户。等到再次动起这个念头,已经是被疫情困在家里的2020年了……
0x02 为什么是 Linux?
事实是,问起绝大多数的用户“操作系统有哪些”,ta们大概都只会回答你“Windows,或者Mac OS”。而对于 Linux/*nix (还有 BSD Solaris 什么,但这就触及我的知识盲区了)而言,似乎服务器才是它们最适合的用途。那我为什么试图反“常识”而行之,选择了它作为桌面端的系统呢?
对我个人而言,可能很重要的一点是,Linux是自由软件 (Free and Open Source Software, FOSS) 。而我本人刚好也是自由软件哲学的拥护者。我在这里特地使用了“自由软件”而非英文的 “free software” 或是“开源软件”,是因为 free 指的并不是免费。恰恰相反,free software 也可以是收费的,而 GNU 还专门出了篇文章讲述 Selling Free Software 。去引用 GNU 的话来说,自由软件赋予用户的是“运行、学习、修改,以及再分发(无论是否经过修改)的权利。这有关用户的自由,而不是价格;这里的 ‘free’ 指的是言论自由中的自由,而不是免费饮料中的免费”2 the freedom to run it, to study and change it, and to redistribute copies with or without changes. This is a matter of freedom, not price, so think of “free speech,” not “free beer.” 中文是我自己翻译的,感觉 GNU 官网的中文翻译质量真的堪忧(逃
而到这里之前,我所谈论的都是一些虚无飘渺的概念与哲学。而作为一名实实在在的用户,毕竟还是得有些实实在在的好处的嘛(笑)画的饼不管再大也还是画出来的,理念到头来也不能当饭恰。而且虽说是开源,但蒟蒻如我最终也还是一行 Linux kernel 的代码也没有读过(大概某个遥远的未来会吧……大概……)但其实最终推动我切换到 Linux 的种种优点,究其根源,还是 Linux 的 FOSS nature。
比如,Linux 支持更高程度的定制化。我可以自由地配置我的桌面,让它成为我想象中的任何样子。与 Windows 单一的选择不同的是,我可以自由地配置我想要的 Desktop Environment,Window Manager,display manager。如果不满意的话,换个就是了hhh。在 Reddit 上还专门有一个 r/unixporn 板块供所有人讨论和分享各自的 *nix 桌面配置。
再比如,Linux (一定程度上)更加的安全且对隐私友好。当然,真正决定一个系统是否安全的并不是操作系统本身,而更多地取决于用户本身的习惯。Linux 在当下被认为更加安全,一定程度上是因为它的用户更少,骇客们相比之下更关注用户基数大且用户群体整体上 less tech-savvy 的 Windows。此外,Linux 开放的源代码也意味着会有更多的人参与到安全审计中,而且统一的软件包管理器和软件源(就如同 Mac OS 的软件商店一样)也保证了软件来源的安全性。
而关于隐私,商业公司出产的产品,比如微软的 Windows,Google 的 Chrome,首要的考虑仍然是作为一家商业公司是否具有盈利能力,能否提高公司的财务表现,吸引投资人……而为了使得产品盈利,这些商业公司们也更加具有动力去收集用户的行为并加以分析。比如,Chrome会收集你浏览过的标签页,而 Android 还会收集你的位置信息并上传给 Google ¯\_(ツ)_/¯ 关于Chrome,还可以读一读Washington Post 的文章 Goodbye, Chrome: Google’s Web browser has become spy software。自从 Google 将 “不作恶” 从它们的 Code of Conduct 中移除 以来,商业公司逐利的狐狸尾巴也逐渐露了出来。而微软的商业项目 Windows 在数据收集上也不例外。这最终使得我逐渐转向社区支持的项目,比如 Firefox,再以及,Linux。
0x03 这对我个人而言意味着什么
正面
我是一个啥都喜欢折腾一点的 CS major & 信息安全爱好者,而选择 Linux 刚好给了我更多的机会去倒腾。得益于 Arch Linux 的极简主义原则,我拥有了从头开始自己给自己配置一套系统的自由:给硬盘分区、加密、选择文件系统,制作启动引导,配置UEFI启动项,设置软件源&镜像,安装图形界面,配置网络、蓝牙、显示、音频,定制自己的浏览器……其中的每个步骤展开都可以写一篇专门的文章,而自己动手的过程则是帮助我理解了不少仅存在教科书上的底层知识,而其中接触到的各种新概念也为我展示了一个船新的天地。这也得益于 ArchLinux 强大的 wiki,几乎所有你能想象到的问题都在上面有着记录,为我的倒腾铺平了不少路。
“倒腾”只是好奇心与永无止境探索的一部分,而另一部分大概是创造力。而作为半个啥都写点的开发者,Linux 的软件包管理也为我的工作与代码提供了很大便利。Docker 和 QEMU+KVM 这类的虚拟化环境极大地方便了我的开发和测试工作(Windows 上必须要用 Hyper-V 的 docker 是真的难受……后面 VirtualBox 和 Hyper-V 兼容了要稍微好一些,不然真的没法用),而且距离以 Linux 主导的生产环境更加接近也极大减少了部署中临时出现的坑……再加上对于 Emacs, gcc 这类工具都是最初针对 *nix 开发而之后被移植到 Windows 上的(而且移植项目的活跃度似乎也多少有些堪忧)。还有一些超级新的 features,比如用来快速处理网络包的 DPDK 和 PF_RING 都只能在 Linux 上工作,还有早已集成进 Linux 内核中的号称是下一代 VPN 的 Wireguard3嗯,这玩意儿真的就只是个用来组网的 VPN,不适合用来做梯子,没有混淆的流量特征太明显了,用来爬墙是想都别想。
此外,不再需要分开来去每个软件的官网寻找下载的链接并经常关注有没有更新也是很重要的一个优点。如果缺什么环境,只要一行 pacman
就可以解决;更新也可以被上游软件源的维护者及时地推送下来。对于我本人这种重度命令行使用者,自己配置的 zsh 也远远比 Windows 上的 shell 用着顺手……
负面
There are two sides to every coin, so …
对于 Linux 来说,更少的商业软件支持,辣鸡的游戏支持(哪怕有 Wine 和 PlayOnLinux),还有一些本地化软件的运行则是最大的硬伤。比如说下图是3个月前(2020年4月)刚更新的 QQ for Linux 2.0.0 的界面……真的一言难尽,一夜回到 2008 年不是梦……还有微信/企业微信这种根本没打算支持Linux,只能靠第三方民间智慧……(至少钉钉有消息说打算做Linux客户端了,好事好事)还有一些类似于 Adobe CC 全家桶、Microsoft Office、MATLAB 这一类对于部分行业来说刚需的软件都不支持 Linux,就是比较头疼的问题了。我会在最后谈一谈如何使用开源的 Linux 项目来(尽可能地)替代这些专有软件
除此之外,还有一些边边角角的问题,比如中文字体/输入法/HiDPI/NVIDIA显卡之类的支持……也需要自己倒腾一番,大概又会是另一篇博客的内容了
0x04 Alternatives & Solutions
最后,来谈一谈我当前使用的一些专有软件的开源替代品。我曾经是一个中度 Adobe 全家桶(主要是 Acrobat DC Pro、Pr、PS)和各类数学软件使用者(Mathematica 这种 CAS 和 MATLAB)。
Adobe 全家桶的替代产品
PS => GIMP: GNU IMAGE MANIPULATION PROGRAM
基本上 PS 我常用的一些工具 GIMP 都有了,但还是感觉有一些难用(在用户操作上有一些 unintuitive)也可能是我潜意识中代入了 PS 的使用习惯和工作流……可能还是要多花一些时间完成迁移和习惯,嗯
顺带 GIMP 是一个跨平台的项目,所以 Windows 或者 Mac OS 也可以使用它,所以非 Linux 用户也可以考虑一下它作为补偿
而对于 RAW 格式图像的编辑,可以另外考虑一波 RAW Therapee,也是一个不错的自由软件,而且有插件可以在 GIMP 中调用。
Acrobat Pro => ???
Acrobat Pro 是真的没有找到很好的替代品……Linux 下可能用户量最大的 PDF Reader 还是 KDE 项目的 Okular 和 Gnome 家的 Evince,但可惜功能上都还是以阅读&标记为主,没法做到 Acrobat Pro 那样的编辑。除此之外,还有 Zathura 和国产的 Foxit Reader(福昕,但是是闭源的),但我都没用过orz
Premiere => ???
名气大的可能有 shotcut, openshot, kdenlive 这三个,但我只轻度地使用过 shotcut。虽然能用确实能用,但感觉用户交互(UX)还是没有 Pr 用起来舒服(捂脸),等之后好好钻研一下再写好了
Adobe Audition => Audacity (?)
因为并没有怎么认真熟悉过 Audition,所以对 Audition 的功能没太多了解,没法和 Audacity 比较一下;不过 Audacity 似乎做些比较常用的编辑也足够……?
数学软件们
MATLAB => GNU Octave => Julia
GNU Octave 这货最早被写出来,就是为了创造出一个开源的 MATLAB 的,而官网上也声明着“与许多 MATLAB 脚本原生兼容” 6“Drop-in compatible with many Matlab scripts”。不过 GNU Octave 似乎运行起来效率远远没有 MATLAB 高。真要追求运行速度的话,其实可以考虑一波 Julia。但需要注意的是,Julia 并不是一个新的 MATLAB,可以读一下 Noteworthy differences from MATLAB · The Julia Language。
Mathematica => Sagemath + Jupyter
Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.
https://www.sagemath.org/
虽然 Mathematica 确实也挺良心的,而且也有很棒的 Linux 版本,但还是稍微介绍一下它的替代自由软件:sagemath。sagemath 是一个基于许多 Python 软件包(numpy、Scipy、matplotplib等等)开发出来的一个语法类似于 Python 的数学软件(和 Anaconda 这个纯 python 的环境还不太一样)。
而之所以提到 Jupyter,还是因为 sage 的界面……是在是太不友好了……得亏它还提供了一个 Jupyter 的 Kernel,可以在 Jupyter Lab / Jupyter Notebook 中获得一个接近于 Mathematica 的图形界面体验。此外,Jupyter 配合原生的 Python 使用也很棒!(似乎许多 data scientist 就是这么玩的)
其他一些很棒的软件们
这里请让我隆重地请出 Arch Wiki: List of Applications ~~
虽然 Arch Wiki 仅仅是一个针对 Arch Linux 的百科,但是因为作为一个 Arch 用户,几乎系统的方方面面都要懂一点,可能还有不少 Geek 喜欢倒腾倒腾。Arch Wiki 就成为了这个过程中知识共享的平台:而因为它实在是太完善了,所以不仅仅是 Arch Linux,各大 Linux 发行版用户在遇到问题时,都可以去 Arch Wiki 搜一下,说不定能获得一些意想不到的收获(笑)
我这里放的链接是 Arch Wiki 中的 List of Applications,是一个非常详尽的在 Linux 上的各类应用程序的列表。有了这个列表,在下次问群聊里的大佬“我想做X,在 Linux 下有没有什么好的软件”之前,可以先来翻翻这个列表,挨个了解一下或者试用一下x 毕竟还是只有自己的体验最贴合自己hhh
此外,还有 Awesome Free Software
这是一个 GitHub 上的项目,专门整理了不少超棒的自由软件(也是按照应用用途进行分类的)与 Arch Linux 这种实用主义的邪教(指不管自由专有开源闭源,只要 抓的住老鼠 解决的了问题就是好软件)不同,这个列表里面只有自由软件x 如果你是自由软件的支持者,并且不愿意使用专有软件的话,可以多读读这个列表,并且在逛 Arch Wiki 的时候可以留心一下软件是自由的还是非自由的x
And many more! 如果你有知道什么其他很棒的软件或者列表的话,可以在下面留言↓ ありがとう!
Leave a Reply