Linux 挖坑不埋指南

跳进 Linux 的唯一理由

既然知道 Linux 在这个世界已经存在了,而你又是个挺喜欢摆弄计算机的人,那么对 Linux 是怎样的一种存在难道不感到好奇么?

也许在你开始尝试使用 Linux 时,已经看到了很多对 Linux 不利的言论。例如,发行版本太多难以取舍、安装繁琐、应用程序没那么多、装显卡驱动很痛苦、无线网卡点不亮、声卡沉默着、中文输入法又在 Emacs 里歇菜了……然而 Linux 已经在这个世界上存在了,即使它存在这样或那样的问题,它依然没有死掉,更何况在 Linux 中去努力的化解这些问题的过程,也就是你对计算机的理解日益精深的过程。

以前我觉得 Windows 用户是这个世界上对计算机最没有好奇心的用户,他们几乎完全是因为讨厌计算机而喜欢 Windows。现在,感觉与那些叫嚣着要用智能手机/平板取代 PC 的人类相比,Windows 用户多少对计算机还保持着一点点好奇……

Linux 在哪里

首先,你在 Windows 里积累的大部分经验对于学习 Linux 是没有用的,而且在 Linux 世界里,Windows 的使用经验往往会变成很坏的习惯。Mac OS X 洗尽铅华后,倒是与 Linux 很接近,因为它们算是 Unix 的嫡系。

很多 Linux 桌面爱好者为自己所喜欢的 Linux 传教,他们用着自己或别人配置的漂亮的桌面来诱惑 Windows 阵营中对 Linux 持观望态度的人。不否认,他们经常会成功,但是被诱惑的 Windows 爱好者很快就能发现 Linux 桌面只不过是个肥皂泡。

2014 年,Linux 之父 Linus 说他仍然想要桌面……所以,Linux 现在依然是没有真正的『桌面』环境的。目前解决这个问题的唯一办法就是像我在前面所说的那样,不要将 Windows 的使用经验搬到 Linux 里,对于 Linux 而言,这些使用经验完全的水土不服。

城里人到了乡下,没有红绿灯、没有下水道、没有大超市、没有星巴克……这并不能说明乡下的不好,只能说明你带来了城里人的坏习惯!这些坏习惯正逐渐将原本寂静的 Linux 村落改造为乱糟糟的城乡结合部。后来,也许这些城乡结合部也会变成真正的城市,但是现在你要么容忍城乡结合部的混乱与不稳定,要么就去寻找生态环境尚未恶化的 Linux 山村。

定居于 Gentoo

既然已经否定了 Linux 桌面主义,那么我认为最能体现 Linux 特色的发行版应该是 Gentoo,而不是 Ubuntu、Fedora、Open Suse 这些号称开箱即用的 Linux 发行版,因为开箱即用,不等于开箱好用。不过,如果你已经很熟悉这些开箱也不好用的 Linux 发行版了,可以不必在意我的推荐。

安装 Gentoo 的过程,本质上就是使用 Gentoo 的过程。得益于 Gentoo 完善的文档,只要略有些耐心与英文阅读能力,按照 Gentoo 安装手册 的步骤进行,用不了 1 天,就差不多能装上 Gentoo 的基本系统(内核 + 软件包构建工具 + Shell)。

野外生存

Linux 的野外就是黑乎乎的字符终端(TTY),这里面运行着 Shell。在现代 Linux 系统中,Shell 差不多对应于人类的内衣,而图形窗口系统则对应于人类的外套。

没有了 Shell, Linux 是裸奔的 Linix。没有了图形窗口,Linux 就是穿着裤衩在奔跑的 Linux。

从某种意义上来说,Windows 其实比 Linux 更先进得多……它不穿内衣就直接穿外套了!

Linux 世界有很多 Shell,标配的 Shell 叫 Bash。

最好的 Bash 教程,当属 Gentoo 之父——Daniel Robbins 所写的 Bash by Example, part 1 2 3。Daniel Robbins 的命运宛若 Linux 世界的高加林……如果不知道高加林何许人也,可参考路遥文集中的“人生”。不过,Daniel Robbins 后来又创建了 Funtoo 项目……Funtoo 可能只适合有经验的 Gentoo 用户使用。

我建议你在尝试为 Gentoo 安装一个桌面系统之前,先在黑乎乎的 Bash 中呆一段时日,苦你心智,磨你体肤,行拂乱你所为……坚持下去,你就能学会在 Bash 中用命令与脚本控制你的机器,学会用 sed 与 Emacs 编辑文件。当然,这个过程对你而言可能最大的痛苦是没法显示与输入中文。

在 Linux 的世界里,中文并不是必须的,英文是必须的,但是只要你愿意,还是有办法让 TTY 支持中文的显示与输入的,而且搞定这个问题,意味着你对 Linux 的认识程度已经超过了很多其他 Linux 发行版的用户。

一个城里人,当他能够很娴熟的在野外生存着,回到城市之后,他也许能够比以前更善于利用城市这个系统。至少,野外生存帮助他建立了很多生活上的好习惯!

学会使用 portage

所谓的 Linux 发行版,本质上只是一些比我更有经验的 Linux 用户长年累月的收集了一些比较有名的软件源码包,最有名的自然是 Linux 内核源码包。收集到这些源码包之后,就针对主流硬件上以一种大家好才是真的好的策略将源码包编译成可执行文件,然后又将这些可执行文件做成光盘镜象文件供用户下载。

从上述角度来看,Gentoo 不算是 Linux 发行版。Gentoo 的工作主要是向用户提供一个非常精简的系统,也就是所谓的自举系统与 Stage 3,目的是让用户拥有一个可以运行的 Linux 基本环境,然后提供一个 portage 软件包,这个软件包主要由一个名曰 emerge 的 python 脚本以及一大堆分门别类的 Bash 脚本( ebuild 脚本)构成。如果你已经装上了 Gentoo,那么你一定懂得我在说什么。

每份 ebuild 脚本记录着相应的软件源码包的下载、解包、编译环境检测、编译、安装等步骤。例如我要安装大名鼎鼎的 Emacs,只需在终端中执行以下命令:

# emerge emacs

这个名曰 emerge 的 Python 脚本会自动去 /usr/portage/app-editors/emacs 目录寻找当前最新版本的 ebuild 文件——emacs-24.5.ebuild ,然后根据这份 ebuild 脚本中记录的步骤,自动进行 emacs-24.5 源码包的下载、解包、编译环境检测、编译、安装……

也就是说,Gentoo 的 Portage 只是告诉 emerge 应该怎样安装软件包。这就是 Gentoo 的精华所在。因为软件包是从源码包编译安装的,这意味着你有很多机会去定制或改进这个过程,而且 Portage 也为此打开了便利之门。

在那些真正的 Linux 发行版里,通过编译源码包的方式安装软件,往往非常痛苦,因为通常很难弄清楚要编译安装的软件包依赖哪些软件包。此外,这些 Linux 发行版所谓的『升级』,差不多等同于重新装一遍系统,而且差不多每半年装一遍(几个主流的发行版,差不多都是每半年发布一个新版本)。我很谦虚的说,我的 Gentoo 系统已经连续用了 5 年,现在依然保持着软件包近乎最新的状态。

如果你受了一些 Linux 桌面传教士的蛊惑不幸用上了 Ubuntu、Fedora 之类的发行版,不要怕, Portage 依然可以拯救你!理论上,在这些 Linux 发行版中,安装 Portage 并不是多么困难的事。只要有了 Portage,你可以通过软件包更新的方式,一点一点的将系统变成 Gentoo!

Gentoo 这种编译安装软件的方式虽然很低效,但是它能够让你养成一个好习惯:不要安装太多的软件包,并且尽量远离那些巨型软件包。这个世界上,真正很有用的软件包并不是太多,而那些巨型软件包往往也是 Linux 世界的违章建筑。

进驻城乡结合部

长期的在黑乎乎的 TTY 里也能游刃有余的生活着,但是图形化的世界毕竟还是更直观一些。朋友给你发来一份 MS Word 或 PDF 文档,虽然通过 Linux 的 Framebuffer 可以构建出 GUI 程序可视化这些文档内容,但是这样就真的是重新发明轮子了——重新发明了 Xorg 或 wayland。我一直都觉得 wayland 是重新发明轮子。

Linux 的桌面环境现在依然像个乱糟糟的城乡结合部,也许唯一令人自豪一点的就是它的历史。桌面的基础架构 ——X 窗口系统称雄江湖的时候,Windows 系统还未诞生。

X 目前正逐渐被现代的 Wayland 取代,然而基础架构的更换并不能真正解决目前这种城乡结合部的局面!因为没有财力雄厚的公司进行统一规划,自由软件开发者们经常为了自己的自由而搭建违章建筑,然后干扰了用户们的自由。对于中文用户,最大的违章建筑当属 GTK 与 QT,它们破坏了 XIM 的大一统,导致至今为止 Linux 图形界面的中文输入支持依然是个令人头疼的问题(可参考:https://www.csslayer.info/wordpress/diary/why-linux-ime-sucks/)!

我比较喜欢的城乡结合部是 xfce4,之前一直用的是 GNOME。曾被很多人诟病的 GNOME3 我也用了将近 4 年,直到有一天我发现它的一个新版本剥夺了我最需要的一些自由,所以毅然转移到了 xfce4。这个故事想说的是,在一个充满自由的环境里,你最不需要的就是死守旧习惯。

用 xfce4 的好处是它提供了够用的窗口管理功能。我不认为 GNOME 3 真的有什么比 xfce4 更先进的地方,除非是到了 wayland 完全取代了 Xorg 的那一天。但是,从现在的状况来看,wayland 的出现让城乡结合部又混乱了一点,所以你不懂我在说什么,这很正常……先按照 https://wiki.gentoo.org/wiki/Xfce 所说的步骤,装上 xfce4。

欢迎来到混乱的 Linux 城乡结合部,在终端里求生成功的鲁滨逊同学!

自举

要安装 Gentoo,即使你对 Linux 一无所知,也是可以按照 Gentoo Handbook 的说明,成功的安装 Gentoo。但是,安装 Gentoo 的过程中需要手动输入许多 Linux 命令。如果没有 Linux 的基础知识,也许无法理解与欣赏 Gentoo 的安装过程。

安装一个 Linux 的前提是要懂得 Linux,这似乎存在矛盾,因为要弄懂 Linux 的前提是应该拥有一个 Linux 操作环境。这虽然很矛盾,但这就是现实。破解这一矛盾的唯一办法就是自举(BootStrap)。

C 语言编译器是自举的一个很好的示例。第一个 C 语言编译器是用汇编语言编写的。第二个 C 语言编译器可以用 C 语言来编写但是需要由第一个 C 语言编译器来生成,这样就完成了 C 语言编译器的自举。

要安装 Gentoo,前提也是需要你的计算机事先运行着一个 Gentoo 环境,然后在这个 Gentoo 环境中安装 Gentoo。所以 Gentoo 开发者为 Gentoo 的安装提供了一个近乎最小化的自举系统,以 CD 镜象文件的形式发布,称为『Minimal installation CD』,其下载与刻录方法请参考 Gentoo AMD64 安装手册的『介质』一节。

制作 Gentoo LiveUSB

如果你对 Linux 并不是很了解,那么下载 Minimal installation CD 之后,不需要急于阅读 Gentoo Handbook 并进行 Gentoo 的安装。

既然 Minimal installation CD 是用于 Gentoo 自举的,那么它本身就是一个可用的 Linux 基本环境。也就是说,学习 Linux,其实是没必要安装一个 Linux 的。

要将 Minimal installation CD 作为学习 Linux 的实践环境,最好是将镜象文件刻录到 U 盘上,这样可以得到所谓的 Gentoo LiveUSB。现代的计算机,差不多都支持 U 盘启动,因此 Gentoo LiveUSB 也是一个很不错的随身系统。制作与使用 Gentoo LiveUSB 的方法见:https://wiki.gentoo.org/wiki/LiveUSB/Guide

如果担心在 Gentoo LiveUSB 中的学习过程中因为一些误操作而对你的计算机中既有的系统产生毁灭性打击,也可以在 VirtualBox 之类的虚拟机上运行 Gentoo LiveUSB 或者直接运行 Minimal installation CD,具体用法请参考本文附录部分。

Linux 基础知识

Daniel Robbins,是 Gentoo 的创始人,Funtoo 的创始人与领导者,不仅精于工程与技术,也是一位优秀的 Linux 基础知识的传播者。他所写的一系列文章非常务实,并且文字平实,内容流畅,用例丰富。阅读它们,有大学英语四级水平就足够了。当然,如果有人能将它们翻译成中文,也非常有意义。

下面这四篇文章不仅能够让你掌握 Gentoo 安装过程中所使用的大部分 Linux 命令,也能让你通过初级Linux专业认证的 101 考试。

http://www.funtoo.org/Linux_F…
http://www.funtoo.org/Linux_F…
http://www.funtoo.org/Linux_F…
http://www.funtoo.org/Linux_F…

但是,如果你想理解 Gentoo 的包管理工具——Portage 的基本原理,并顺便掌握 Bash 的基本知识,可以继续阅读:

http://www.funtoo.org/Bash_by…
http://www.funtoo.org/Bash_by…
http://www.funtoo.org/Bash_by…

剩下的事,应该交给 Gentoo Handbook

9 年前我刚刚开始折腾 Gentoo 的时候,已经用过了几个月的 RedHat 公司发布的 Fedora Core(现在的 Fedora 项目的前身)。当时自认为已经具备了一些『Linux 使用经验』,但事实证明这些经验对于摆弄 Gentoo 并没有产生多大帮助。在我的不懈努力下,折腾了两个通宵,终于让 Gentoo 在我的机器上运行起来,后来的几个月,断断续续补习了一些 Linux 基本命令的用法之后,才感觉 Gentoo 的安装过程其实非常的简单,甚至可以将这个过程作为 Linux 基础知识学习中的一个实践环节。

现在这篇文档临近尾声,而我只想再说两句:

  • 很遗憾 9 年前要没人为我写一篇这样的文档 :)
  • 接下来你应该认真阅读 Gentoo Handbook ,然后利用 Gentoo LiveUSB 或光盘将 Gentoo 安装到计算机上

附录:如何在 VirtualBox 中运行 Minimal installation CD

首先你要懂得 VirtualBox 的基本用法,比如如何基于光盘镜象文件的方式安装系统。

如果想在 VirtualBox 中直接运行 Minimal installation CD 的镜象文件,那么这就与向 VirtualBox 中安装其他系统差不多,唯一不同的就是所进入的 Linux 环境将作为学习 Linux 基础知识的环境。

如果想在 VirtualBox 中运行 Gentoo LiveUSB,那么要稍微麻烦一点,可参考:http://www.intowindows.com/ho…

    原文作者:garfileo
    原文地址: https://segmentfault.com/a/1190000003813761
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞