很多同学都已经学习了 Linux ,可能已经在自己的机器上安装过 Linux,甚至都能搭建个简单的个人博客,也有可能编译部署过邮件服务器之类的软件,可是感觉仍然对 Linux 有点摸不着,颇有隔靴挠痒的感受。

总是好奇 Linux 内核是怎么回事,究竟里面有点什么?总是好奇 Linux 是怎么启动起来的,那个什么 GRUB 怎么知道读取引导信息?总是好奇设备怎么就可以被当成文件操作,为什么可以从 /proc 读到进程的信息?总是好奇如何才能构建一个操作系统,从无到有的做成一个可引导的 Linux 启动盘?

不用羡慕那些说起这些就头头是道是 Linux 极客们,其实你和他们之间只是差一个 LFS 而已。

什么?请听我娓娓道来~

LFS 是什么?

LFS(英文 Linux From Scratch 的缩写),中文释意为“从零开始构建的 Linux”。好吧!看起来很高大上 OTZ,可它到底是什么东西呢?感觉上它好像经常和 RedHat,Debain 这类发行版混在一起,那它应该也是个发行版吧!

这样理解其实也没有什么不对,但比起发行版来,它其实更像一本书。书本只提供知识,它只教你做,不会帮你做。这才是 LFS 和别的发行版的本质区别。这本书可以教你如何亦步亦趋的从零开始搭建一个具体而微的 Linux 系统,没错,就是从零开始,是不是有一种上帝视角的感觉呢?

那么在哪儿可以找到这本“书”呢?你可以在网上找到电子版,当然,乐意的话,你可以打印出来——不过,我认为这没必要。你只需要按照这本书的指导,一个字母都不要敲错,你就能在它手把手地指导下,打磨出你自己的 Linux 系统啦!

LFS 是本好书吗?

是的,LFS 绝对配得上称为一本好书,或者说一本好教材。市面上,很难再找到一本如此具体又如此精炼的教材了。

首先,它并不是只是讲讲简单概念,它很具体,具体到就是一个例子,一个告诉你怎么亲手构建出属于自己的 Linux 系统的例子。

其次,它很精炼,它的精炼表现在两个方面:系统构建出来不臃肿;文字描述很精炼。

最后还有一点,这一点至关重要。尽管文字的描述非常精炼,甚至是精炼到枯燥,但是作为一本教材,作者无时无刻不再想尽办法,让你学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者真的是想尽办法的试图把知识传递给读者。

LFS 没有缺点吗?

那自然是有的,可以原封不动的照抄上面的优点。辩证的看待这些优点,你就会发现这些优点是有代价的。

首先,由于这个例子过于生动形象,所以篇幅不小,快则一两天,慢可能要一两周你才能跟着把系统构建完。一次做完你也不见得能把知识完全消化。

然后,刚才我也提到了,为了让内容更精炼,更多的只是叙述和说明,并不会夹杂太多作者的思想和经验,看起来显得很枯燥。

最后,相信大家都不是太喜欢看教科书。

当然,其实还有一个缺点,会给我们的学习带来比较大的阻力,这个我们后面会提到。

LFS 的定位

盘点了优缺点以后 LFS 的定位就很清晰了,它就是一本书,一本教科书。所以你不能要求它像小说般有趣。而这本书的受众是,广大的程序员,学生,Linux 用户,以及任何一个对此感兴趣的人。

如何开始?

如果你英文水平尚可的话,请直达 LFS 官网: http://www.linuxfromscratch.org/lfs/ ,开始你的上帝之旅吧。

如果你希望阅读中文的话,我们 Linux 中国旗下的 LFS 翻译小组,经过了长时间的不断努力,继续更新了最新的 LFS 8.3 版本:https://lctt.github.io/LFS-BOOK/

对于此译本,译者 Martin 有言:愚者琢玉,履薄临深。善人善用,不负光阴。

LFS 中文维护

之前提到,会给我们的学习带来很大的阻力的缺点,就是这本书的原文是英文。

作为母语是中文的大家来说,阅读大段的英文并不是一件多么享受的事。LCTT 之前已经翻译过一版简体中文的 LFS 7.7。时间过的飞快,现在最新的版本已经是 8.3 了。我们也会不断跟进最新 LFS 翻译,喜欢 LFS 也愿意做出翻译贡献的,可以参与我们的翻译项目。

(以下是广告时间……)

对翻译 LFS 手册感兴趣的同学,翻译项目在此: https://github.com/LCTT/LFS-BOOK ,你可以在这里对翻译中出现的问题进行反馈和修正。

那么,你准备成为一名 Linux 极客了吗?

已有 22 条评论

  1. 想啊! 哈哈哈,太难了吧? —— koolar [Chrome 59.0|Windows 10] 发表。
  2. 既然LFS 7.7已经完成翻译了,LFS 8应该也就只有修补几个不同地方的工作量了吧 —— 来自117.182.154.90的 Chrome 57.0|Windows 7 用户 发表。
  3. 编译过7.9 两遍 —— 来自山西忻州的 Firefox 53.0|Ubuntu 用户 发表。
  4. 这种文越多,linux社区就越浮躁吧 —— 来自河北石家庄的 Chrome 57.0|GNU/Linux 用户 发表。
  5. 扫码进入啦。哈哈哈 —— 来自陕西西安的 Chrome 58.0|GNU/Linux 用户 发表。
  6. 大多数人只是享受编译的快感,但用不到这类东西。又不是去做发行版 —— MeowSprite [Chrome 57.0|GNU/Linux] 发表。
  7. 还是不少修改的 —— linux [Chrome 57.0|Mac 10.11] 发表。
  8. 何解? —— linux [Chrome 57.0|Mac 10.11] 发表。
  9. "引导非专业,非计算机用户以及学生和新手搞这个就是浪费时间,我不认为一个在linux下画图或者作其他创作的人有什么错?

    geek的定义是什么???难道那些只在linux下写写程序的,不编译系统的就不算geek???你和XXX只差一个XXX,这种话本身就没什么意义。

    每天编译这个那个,对于大家的帮助真的那么大么????让软件打包这种事情交给专业的人好么???每个人都要学会如何编译软件???也许这就是linux普及的难点吧???我就不相信你能把编译这回事教会给人和一个人。

    我宁愿使用两种软件
    1.  源里面已经打包好的软件
    2. 单个的执" —— 来自湖北武汉的 Firefox 45.0|GNU/Linux 用户 发表。
  10. "geek这个词本身就是给自己戴高帽,我还是社会主义接班人呢,你看我骄傲了么???

    劝告各位朋友,不要瞎跟风,能用linux解决自己需要解决的问题才是最重要的," —— 来自湖北武汉的 Firefox 45.0|GNU/Linux 用户 发表。
  11. 噗... —— 香草小羊排 [Chrome 54.0|Windows 7] 发表。
  12. 浪费不浪费时间是对于感兴趣的人而言。如果本人有兴趣,他总会想方设法去了解去尝试,如果本人没兴趣你就算跪着求着他连链接都不想打开。至于说到浮躁,楼上各位装什么清高?文章一出各种打压,什么人应该怎样由他们自己去思考自己去决定,linux是自由的,人也是自由的,大家都不是三岁小孩。如果说这种文章会引起linux社区浮躁,我还真希望linux社区多浮躁点,多些人一起讨论总比遇到问题的时候天天守着bugzilla好,更何况现在的国内出口带宽那么烂,redhat这些都经常连接超时 —— 来自云南昆明的 Firefox 52.0|GNU/Linux 用户 发表。
  13. 赞! —— linux [Chrome 57.0|Mac 10.11] 发表。
  14. "后来怎么提到带宽了,楼偏的有点厉害

    还是劝告各位朋友,不要瞎跟风,能用linux解决自己需要解决的问题才是最重要的,

    如果linux不能解决你的问题,那就像站长一样用mac吧,一点都不影响你是个极客" —— 来自河南南阳的 Firefox 45.0|GNU/Linux 用户 发表。
  15. "wget 已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
    位置:http://ftp.yzu.edu.tw/nongnu/acl/acl-2.2.53.tar.gz[跟随至新的 URL]

    这个直接解释到台湾教育网去了,问题是根本打不开那个URL啊、、、、" —— vastchen [Firefox 63.0|Windows 7] 发表。
  16. 这个工作不容易,先过来赞一个,感谢Linux中国所作的努力,之前看的7.10英文版,甚是闹心。 —— 来自39.171.145.51的 Chrome 71.0|Windows 10 用户 发表。
  17. 有五个包 要手工下载 —— 来自山西临汾的 Chrome 71.0|Windows 7 用户 发表。
  18. 321 —— 来自陕西西安的 Chrome 63.0|Windows 10 用户 发表。
  19. 321 —— 来自四川乐山的 Chrome 71.0|GNU/Linux 用户 发表。
  20. 为什么我下载的git源码编译出来的是英文,求指教 —— 来自河南郑州的 Chrome 63.0|Windows 10 用户 发表。

添加新评论