前两天和楊匠聊天,我说玩LFS分两种情况:一种是为了学Linux;另一种是行为艺术。于我来说,玩LFS纯属行为艺术。有段时间,我在一台MacBook Pro上跑起来了LFS,处理日常工作。
和Windows、macOS一样,Linux是个操作系统。一个可用的操作系统分为两部分,内核和系统软件。内核相当于车的发动机,不怎么和普通司机打交道,所以一般用户感觉不到内核的存在。和Windows、macOS不同,微软开发了Windows系统的内核和系统软件,苹果开发了macOS的内核和系统软件,Linux不然。
最初,一个叫Linus的哥们儿开发了Linux内核。他当时在上大学,有一天发了个帖子说,哥们我搞了个操作系统内核玩,免费,开源,想用大伙儿就拿去用。
只有内核,当然没法用。用Linux当内核,搭配上系统软件,方可拼成一个可用的Linux系统。通常所说的Linux系统是由Linux内核、GNU开发的各种软件再加上其他人开发的软件构成。大部分核心系统软件是GNU开发的,所以GNU认为一个可用Linux系统不应该叫Linux,应该叫GNU/Linux才合理。
GNU是一个组织,不是一个人,GNU的背后是斯托曼博士,一个大胡子男人。这老哥是个地地道道理想主义者。早年玩计算机的很多人都是理想主义者,那是个理想主义者的时代,程序员们经常分享代码,热心交流。慢慢地,人都变了。这老哥特生气,心想你们都怎么回事,写个破程序,源码也藏起来不给别人看,满脑子净想着赚钱。他不想同流合污,挺身而出,决定开发一套免费的开放源码的操作系统。
在斯托曼博士带领下,GNU发布了一系列软件,都挺顺利。料想不到是,在关键的内核环节掉了链子,迟迟搞不出一个好用的内核。GNU这边,啥都有了,缺个内核;Linus那边,Linux内核有了,缺一切。拼一起,正好,天作之合。能拼一起,除了功能互补,还有气质相符。他们的气质是开源、免费、共享。
理想主义者虽少,但从来不孤单,软件也是,相同气质的软件还有不少。美国一位老兄,为了偷懒,开发了一门编程语言,叫Perl。荷兰一位老兄,某个圣诞节假期倍感无聊,开发了一门编程语言,就是时下很火的Python。这样的老兄还有一打,他们开发了各种各样的软件,开源、免费、共享。
把Linux、GNU的一系列程序还有众老兄们开发的软件攒到一起就是一套Linux系统。某一年,RedHat公司推出了一套RedHat Linux系统,对外发行。RedHat说,这套东西虽然都不是我开发的,但毕竟是我攒的,也有功劳对不对,所以冠名RedHat Linux。
你攒我也攒,Slackware、Debian都是各种攒出来的GNU/Linux系统。各式各样的攒出来对外发行的GNU/Linux,就叫做Linux发行版。Debian影响力较大,在Debian基础之上搞出了好多别的Linux发行版。
南非一位仁兄,叫Shuttleworth,早年赚了不少钱。赚钱之后干了两件很牛的事:一件事是花钱坐宇宙飞船去了一趟国际空间站;另一件事是资助开发了Ubuntu Linux。他真是活明白了,干的事都很有意思。Ubuntu是在Debian基础上发展起来,花了很多钱进去,更好看,更好用。
既然是攒系统,你有你的选择,我有我的方案,就有了各种各样的Linux发行版。不同的发行版往简单地说是安装方式不同,软件的选择不同;往高深里说是理念的不同,哲学的不同。
不要问哪种Linux发行版最好,这个问题没有意义。不要问萝卜好吃土豆好吃还是黄瓜好吃,不要问红酒好喝白酒好喝还是啤酒好喝,这些问题统统没有意义。只有不同,没有好坏,自己用心选择,选择适合你的就好。
好坏没法比,别的角度可以比。知乎上有人问,什么Linux发行版最难安装,答案近乎一致,Arch Linux比较难,Gentoo更难,LFS最难。Arch Linux和Genttoo我都很熟悉,都挺好玩。
LFS压根就不是个Linux发行版。别的发行版都是攒好了一套系统,让你拿去用。而LFS就是个说明书,它只是在教你怎么攒一个Linux。你要照着文档,从网上下载各种源码包,一步一步,自己编译出一套Linux系统。别人给了你一台攒好的电脑,LFS给了你一本书,然后带你去了中关村。
LFS,很难。玩起来需要很多懂很多东西:磁盘分区、系统引导、内核编译、软件构建,再往后需要学习驱动、窗口、字体、声音、图像、邮件······
技术层面的东西再难,也就那样,都可以学,比技术更难的是选择。
LFS,Linux From Scratch,说是从Scratch开始,但没有告诉你到哪儿结束。刚开始还简单,照着说明书来就好,越到后面越难。每一步没有标准答案,全让你自己选择。是的,没有对错,只有选择。如果懂得自己需要什么就很简单,对于不清楚自己需要什么的人选择就很难。
LFS,很好玩。我在抖音上关注了很多有趣的人,其中一个叫楠哥。楠哥整天把他一辆越野车鼓捣来鼓捣去,有点意思。楠哥的越野车只属于楠哥,花多少钱都买不来,这辆车的背后是楠哥的选择,是楠哥的人生哲学。我想,玩LFS也差不多,玩很多东西都差不多。难与好玩不矛盾,或者说,难一点的东西更好玩。
LFS,有用么?有用,对学习Linux系统很有用,可以让你明明白白了解Linux的每一个细节。LFS,有用么?其实也没啥用,了解那些细节不一定工作用得上,不一定能加薪,通过玩LFS学习Linux效率并不高。
这个世界上可不是所有的事情都从有用出发。有个老头儿叫高德纳,现在是个老头儿,当年可是英俊潇洒,会玩管风琴。他年纪轻轻就获得了计算机领域最高奖项——图灵奖。高德纳获图灵奖是因为他的神书——《计算机程序设计艺术》。能把技术写成艺术的书得有多牛,可想而知。这套书原本要写很好几册,第二册写完后,高德纳停止了写作,沉寂多年。不明白的人以为他江郎才尽,写不下去了。后来才知道他干别的去了。他极不满意自己用心写的书,最后出版时排版成那个熊样,一点都不美。实在受不了,就去研究计算机排版。十年磨一剑,当他再复出时,已经开发了一套完美的排版软件。《计算机程序设计艺术》继续写,从此用自己编写的排版软件写自己的书。
高德纳这十年干的这个事儿有用么?管它呢,有用无用不重要,好玩就行,我觉得他挺好玩的。机缘巧合,有一次去我公司附近一家出版公司聊天,他们在引进出版高德纳的《计算机程序设计艺术》。这套书排版使用的是TeX系统,就是高德纳不干正事那几年搞的那个排版系统。聊天间听说《计算机程序设计艺术》在翻译成中文时,排版上遇到点问题,好久没能解决,最后我帮忙解决了TeX排版的问题。我曾认真学习过TeX,当时不知道为什么而学,算是致敬高德纳吧。学这个有用么?一点都没用,平时根本用不到。学这个有用么,还挺有用的,这不帮解决问题了么。
《乔布斯传》里说了这么一件事,乔布斯养父喜欢打造家具,做家具时即便在暗处也要用上好的木料。他养父告诉他,不要在看不见的地方就用偷工减料。养父对乔布斯影响很大,后来苹果公司造电脑时,所有的电路板走线、焊接都整整齐齐,干净利落。这么干有用么?挺没用的。这么干有用么,确实对苹果公司起到过重要作用。曾一度正是透明塑料壳电脑重振苹果,电路板要是乱七八糟,还造个啥透明壳。
乔布斯去印度学过禅。学禅有用么?挺没用的,也许有用。乔布斯说没几个人懂得字体,言外之意是他懂,他也承认高德纳懂。字体本来就是顶没用的东西,不知道乔布斯和高德纳花那么心思琢磨字体干啥,一个图形符号而已。好像字体又有点用,字体是美,字体是艺术。
古时候,陶器是实用器,水器、食器、酒器。当第一个人在陶器上刻花纹的时候,艺术就诞生了。艺术有用么,艺术最没用。艺术有用么,艺术很有用。
我玩LFS不是为了学习Linux,纯行为艺术。最初的动机是想在LFS系统下写一本关于Linux的科普书。在MacBook电脑上,运行LFS系统,用TeX排版,Git做版本管理,Python语言写一些工具,然后写这本书。感觉这样才好玩,这样才够味。
一想到这样一本书的背后有乔布斯、高德纳、斯托曼、Linux,还有其他一众神人,我就很愉快。他们干了好多没用的事儿,他们创造了一个有用的世界。
略效仿之。