menu
我的 Linux 学习历程:那些我看过的 Linux 书籍们

来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为计时单位。有时茫然看着窗外车水马龙,会有些迷茫自己选择的是对还是错。

题外话不多说,回归这次的主题,扒一扒我看过的那些 Linux 相关的书籍。

对于 Linux 的了解和接触,缘起自大一时候的 Linux 限选课,老师说这门课可选可不选,但是选修后考试挂了的话需要补考。当时的我还比较爱学习,于是兴冲冲地选修了这门课,用的是清华大学出版社出版的《Ubuntu Linux 应用技术教程》。这本书写的并不是很好,里面对于图形界面的叫法还是最原始的 XWindows,此书一大半都是基于图形界面说什么安装啊、应用软件使用啊、7788 的。但也简单讲了 bash 的使用和常见的命令,比如 ls -all 然后用管道 | 将输入导入至 wc -l 来计算文件数,还有一些简单的 vi 编辑器的使用,Shell 脚本的写法。

当时因为才开始学的原因,什么都不懂,渐渐地,也就失去兴趣没怎么好好学。课程对应的实验都是和老师卖萌才过的,考试的时候也就是背了一下往年的考题,考完就忘得一干二净。现在想起来,还有点小后悔。

本以为噩梦就此结束,我与 Linux 应该是老死不相往来,作为一名从小学四年级就开始学习使用 Windows 的用户,我真的很难适应和使用 Linux。可是大二学习操作系统原理的时候再一次无奈了,我们的一切实验的环境都是在 Linux 下面,使用那些基本 fork() pipe() 等 Linux 下面的 C 函数进行操作系统的实验。当时在极其痛苦的情况下重拾课本,花了整整一周时间去学习使用 Shell,学习简单的 C 语言( 妈的,看的是谭浩强的书),会用 vi 来编辑,会手动写 Makefile 使用 gcc 编译。

这期间通过学长的介绍知道鸟哥这位 Linux 大牛,开始阅读他的《鸟哥的 Linux 私房菜》。很遗憾的是,鸟哥的教程是基于 CentOS 来介绍的,看完开头极其冗余复杂的安装部分,我就“阵亡了”。“妈妈啊,快来救我,Linux 怎么这么复杂,什么 Ubuntu、什么 CentOS,还完全不怎么一样。”

真正意义上接触并使用 Linux,严格意义上说还得感谢“笨兔兔”这位 Linux 大牛。当时 Ubuntu 12.04 正好才出,本着不装逼就不会死的精神,我安装了这个系统,准备弄个双系统来装装逼。在研究如何配置 Ubuntu 12.04 的时候正好搜到了笨兔兔在他的博客发表的配置博文,当时也就是按照教程一行一行地复制粘贴命令。稍微知道如何使用 PPA 来安装 Ubuntu Tweak (一个国人写的对 Ubuntu 进行简单定制和优化的软件,你可以理解为 Win 里面的 360)。这期间阅读他的博客,接触到深度的 Linux 发行版 Deepin Linux。

什么?专门为国人打造的便于国人使用的 Linux?不错,装!

在我安装使用后立刻就被它的界面所吸引,坦白说 LinuxDeepin 12.04 真的很优秀,它基于 Ubuntu 12.04 的基础上,去掉了那个真的超级丑超级难用的 Unity,美化了各种常见的组件。直到现在,我家里上大学前的台式机还装的是此系统。

当时逛 Deepin 社区的时候,看到懒蜗牛 Gentoo 的《Linux 入门很简单》出版了,看完电子版前 2 章后我就被此书深深地吸引了。真的,它一点都不枯燥,语言十分浅显风趣,内容也简单使用。实体版到货后我立刻通宵 2 天把它看完,虽然最后部分的程序编译有点云里雾里,但是基本的日常使用已经无碍。

这个时候 Linux 已经基本被我用于日常的装逼,每当我在自习室前排用着 Linux 上网,常常会以一种看土鳖的眼神看着那些 Mac 上装 Windows 的同学,心里暗自发笑。

故事本该到了这里就结束,反正 Deepin 日常使用已经无碍,还有什么好学的。可命运就是这么神奇,它往往会在你最得意的时候给你浇盆冷水,让你“压压惊”。

那时已经到了 13 年,我开始迷恋上写博客,在学校组团参加 CCF 大会的时候接触到阿里云,和阿里云的销售一聊天,他大手一挥给了我一张半年的代金券,此券也开启了我新的 Linux 学习之路。

下单安装 ECS 系统,果断 Linux,选择系统的时候果断装逼,Ubuntu 和 Deepin 一样,咱不屑于使用,咱要用 CentOS。等云主机资源分配好可以运行时,我就傻眼了。纳呢,没有图形界面!只有一个简陋的 Shell 界面!这不是坑爹么!

没有熟悉的 apt-get,没有了熟悉的软件包名,我不得不重拾大一的课本继续蛋疼地看那些常见命令,yum 的使用也让我蛋碎一地。等我使用 yum 搭建好 LAMP 环境嘚瑟地在一个主机交流群里面炫耀时,某位大神(这里他要求不透露姓名)很是鄙视地说:现在流行 LNMP,流行编译源代码。

得,你丫瞧不起我是吧,我也给你整出来……

这期间学会了很多,参考了各种官方文档、手册、教程,一点点学会如何 wget 源码包,如何解包。看着 ./configure --help 后面的一大串长到吐的参数一点点配置,看着 make 时候屏幕上滚动的各种 debug 信息暗自发呆。有时候为了解决一个简单的缺少依赖的问题 Google 一整个下午。即使是最后的编译完后,make install之后的配置也让我头疼万分,Nginx 与 FastCGI 的交互,php-fpm 的配置,MySQL 的优化等等……

很庆幸有这么一段黑暗的学习经历,因为真正的动手学习配置才对 Linux 有了深入的了解。当然,用前女友云儿的话说:装逼是要付出代价的。因为对 Linux 本身产生了极大的兴趣,这期间也读了很多设计的书籍,比如那本《Linux/Unix 设计思想》。我至今依旧记得那个经典的小即是美的设计理念,没有代码层面的讲述,全书薄薄的一册介绍了各种 Linux 相关的编程理念,十分经典。

还有就是那本《Linux 内核设计与实现》,当时因为上选修课需要用到此书,在老师的讲授下结合以前学过的操作系统知识,真的能学到很多东西。比如,如何时间调度,如何实现排序,如何中断……

2013 年年底买了 Kindle,又一次开始了我的新的 Linux 学习之路,当时国行还没上市。因为学生党,兜里银子少,就买了日货。可是问题由此而来,日版没有中文界面。在研究时发现 Kindle 官网部分开源了 Kindle 的源码,于是我便萌发了自己编译 Kindle 内核来装逼的想法。从基础的交叉编译工具链的搭建,到内核源码的定制配置,BusyBox 的编译,UBoot 的定制,还有 Eink 驱动的移植……

因为涉及的东西很多很杂,在别人的指导下先看完了 LFS 手册,本着不装逼就不会死的原则先行尝试编译 LFS,然后慢慢上手嵌入式系统的编译。因为基础比较薄弱的问题(连 Shell 脚本都不会写),又买了一本《Unix&Linux 大学教程》读完。

说了这么多废话,该讲讲今天参加图灵活动赠送的书籍 《Linux 就是这个范儿》。如果不是图灵市场部的英子姐姐在读者交流群里面公布了这个新书发布会,很有可能我就这的与这本好书擦肩而过。这本书是由阿里巴巴的两位大牛 赵鑫磊 张洁 写的,赵老师一直在淘宝大学里面做 Linux 的培训,此书的前身就是他的上课讲义。

书的内容真的很全很全,但很遗憾的是它不够细,可能是限于篇幅的原因,很多都只是简单介绍,一带而过。但是书籍的编写语言却十分风趣幽默,初看此书的第一眼,就有一种在看《Linux 入门很简单的感觉》,十分亲切。

整个图书发布会上,张洁老师的精彩演讲,赵老师的健谈和广泛的知识面都让人印象十分深刻。很多问题,从他们的口中都能得到很好地解答。我曾经一个 glibc 的依赖问题将整个系统 yum 仓库弄坏,和赵老师交流时竟然发现他也有相似的经历,当然结果是无解。(╮(╯▽╰)╭)

还记得赵老师在《Linux 就是这个范儿》一书开头的那个“黄色冷笑话”,简单回顾一下我这短暂的 2 年 Linux 学习历程。其实很容易发现,学习,就像爬山一样,没有平坦的大道,需要努力地去攀登,即使途中某段是平面,那是因为后面还有更加陡峭的阶梯等待着你去攀登。

学无止境!