4 GNU/Linux 操作系统简介
通过阅读本章,你将会了解到以下几项内容。
- GNU/Linux 使用范围。
- GNU/Linux 发展简史以及 GPL 协议。
- Unix 哲学简介
- 如何学习 GNU/Linux。
4.1 GNU/Linux 使用范围
有人说, GNU/Linux 作为服务器操作系统,在市场上占有绝对优势,在超级计算机前 500 名中更是占有垄断地位。好吧,这些都不是我们关心的事情。我们关心的是 GNU/Linux 好用不,适合我不。
如果你是程序员。你可以用它方便的写代码,并很容易调试。有功能异常强大的终端,供你跟整个世界沟通。方便你写文档,比如石墨文档等软件。对于公司办公需要的内部邮件系统,以及内部聊天系统,可能不是很好用,但都有相关的替代软件,比如雷鸟邮件、飞鸽等。
如果你是办公室文员。那办公呢,搜狗拼音输入法,赫然在列,金山的 WPS 办公套件也是能满足你基本需求的。那 QQ 呢,这个也是必须有的,能不能告诉你,在深度 Linux 已经实现视频聊天了呢。当然还有很多特殊的办公软件在 GNU/Linux 下没有可用的版本。比如 photo shop, autoCAD 等。根据具体情况来采纳吧。
如果你只是在家里使用。比如趣味性,听听音乐,看看电影,这些都是可以办得到的。那打游戏呢?很不幸的告诉你,Linux 操作系统下能玩的游戏真心不多,但是各位游戏大佬也在逐步把部分游戏移植到 GNU/Linux 系统下,比如 steam 下的很多游戏开始支持 GNU/Linux 系统了。
如果你是求职者。当然为了更好的找工作,提高技术能力,期待更好的薪水,技多不压身,不妨来学学 GNU/Linux,甚至可以考考某些证书,绝对“ 技多不压身” 。
另外 GNU/Linux 桌面操作系统,稳定性不是很高,但也没有 Windows 下全家桶系列乱弹窗的软件。如果你对桌面清洁有特殊爱好,且 GNU/Linux 能满足你日常工作生活需要,不妨来试试它吧。
4.2 GNU/Linux 是什么
什么?其实他就是一个电脑操作系统啦。那操作系统是啥,那我也不知道啦,这个你可以百度一下,简单的说就是方便你操作电脑的一个软件系统。关于 Linux 有啥发展历史,以及跟 GPL 协议有啥关系。这些网上都有铺天盖地的介绍,本书就不介绍啦。不过还是要介绍两个人,一位是 GNU 的老大Richard Stallman,一位是 Linux 的老大 Linus。
4.2.1 Richard Stallman
本节摘自百度百科,有改动。
个人经历
理查德·马修·斯托曼(Richard Matthew Stallman, RMS)1953年出生于美国纽约曼哈顿地区,1971年进入哈佛大学学习,同年受聘于麻省理工学院人工智能实验室(AI Laboratory),成为一名职业黑客。 在AI实验室工作期间,斯托曼开发了多种今后影响深远的软件,其中最著名的就是Emacs。斯托曼在AI是一名典型的黑客,是整个黑客文化的一份子。
然而进入八十年代后,黑客社群在软件工业商业化的强大压力下日渐土崩瓦解,甚至连AI实验室的许多黑客也组成了Symbolic公司,试图以专利软件来取代实验室中黑客文化的产物--免费可自由流通的软件。
斯托曼对此感到气愤与无奈。在对Symbolic进行了一段时间的抗争后,他于1985年发表了著名的GNU宣言(GNU Manifesto),正式宣布要开始进行一项宏伟的计划:创造一套完全自由免费,兼容于Unix的操作系统GNU(GNU’s Not Unix!)。之后他又建立了自由软件基金会来协助该计划。
他于1989年与一群律师起草了广为使用的GNU通用公共协议证书(GNU General Public License, GNU GPL),创造性地提出了“ 反版权” (或“ 版权属左” ,或“ 开权” ,copyleft)的概念。 同时,GNU计划中除了最关键的Hurd操作系统内核之外,其他绝大多数软件已经完成。
1991年芬兰大学生Linus Torvalds在GPL条例下发布他自己创作的Linux操作系统内核,至此GNU计划正式完成,操作系统被命名为GNU/Linux(或简称Linux)。
斯托曼是一名坚定的自由软件运动倡导者与其他提倡开放源代码的人不同,斯托曼并不是从软件质量的角度而是从道德的角度来看待自由软件。他认为使用专利软件是非常不道德的事,只有附带了源代码的程序才是符合其道德标准的。对此许多人表示异议,并也因此有了自由软件运动与开源软件运动之分。
GNU
斯托曼做了一个与Unix兼容的操作系统。这样容易被移植,而且Unix用户可以方便地转移过来。这个系统的名字就叫GNU,这个名字的确定就是遵循黑客传统,是一个递归的缩略词:“ GNU IS NOT UNIX。”
但一个操作系统并不仅仅意味着一个内核(管理磁盘,内存分配等),而且仅能运行其他程序也是不够的。一个完整的操作系统,还需要有指令处理器、汇编程序、编译器、解释程序、调试器、文本编辑器、邮件软件等等,这样才能形成一个完整的系统。斯托曼决定尽可能采用已有的自由软件,比如一开始他将Tex作为主要的文本格式标识符,几年后他又用X Window系统作为GNU的窗口系统。
1984年1月,斯托曼已启动了GNU计划,他担心MIT会要求产品的所有权,会给产品强加入他们的销售条件,最终又会成为专有软件,因而他辞去了MIT工作。辞职后,他为买不起电脑而发愁时,发现自己原来在人工智能实验室的办公室,还没有分给其他人用时,他就每天晚上溜进去工作。
GNU工程启动后,斯托曼听说有一个自由大学编译器套件(VUCK)。他去询问能否用入GNU。答复是嘲弄式的,说对大学是自由的,但对软件本身不行。于是,他决定为GNU编写的第一个软件就是一个多语言、多平台的编译器。他想利用Pastel编译器的源代码,但最终放弃。他从头编写了新的编译器,名为GCC(the GNU Compiler Collection)。
1984年9月,斯托曼开始开发字处理器GNU Emacs,1985年初,它开始可以工作。这使它可以在Unix系统上进行文本编辑。此时,许多人想使用Emacs,因此一个现实的问题是:如何传播它?
当然,他将其放到了MIT计算机的匿名服务器上。但那时互联网还未普及,人们很难通过FTP获得拷贝,而且失业的斯托曼也需要收入。于是,他宣布任何人都可以用150美元的价格获得全部程序。当然,所支付的费用是远低于当时的专有软件的价格的,并且用户可以得到软件的源代码。这样,自由软件的分销商业模式就此诞生。如今,整个基于Linux的GNU系统都是如此。
4.2.2 Linus Torvalds
本节摘自百度百科,有改动。
个人经历
林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds),1969年12月28日出生于芬兰赫尔辛基市。父亲尼尔斯·托瓦兹(Nils Torvalds)是一名活跃的共产主义者及电台记者,曾当选芬兰共产党中央委员会委员。托瓦兹家族属于在芬兰占6%的少数民族芬兰瑞典人。他毕业于赫尔辛基大学计算机系,1997年至2003年在美国加州硅谷任职于全美达公司(Transmeta Corporation),现受聘于开放源代码开发实验(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。与妻子托芙(Tove,芬兰前女子空手道冠军)育有三个女孩。
与很多其他黑客不同,托瓦兹行事低调,一般很少评论商业竞争对手(例如微软)产品的好坏,但坚持开放源代码信念,并对微软等对手的FUD战略大为不满。
例如,在一封回应微软资深副总裁Craig Mundie有关开放源代码运动的评论(Mundie批评开放源代码运动破坏了知识产权)的电子邮件中,托瓦兹写道:“ 我不知道Mundie是否听说过艾萨克·牛顿(Isaac Newton)爵士?他不仅因为创立了经典物理学(以及他和苹果的故事)而出名,也还因为说过这样一句话而闻名于世:我之所以能够看得更远,是因为我站在巨人肩膀上的缘故。” 托瓦兹又说道:“ 我宁愿听牛顿的也不愿听Mundie的。他(牛顿)虽然死了快300年了,却也没有让房间这样得臭气熏天。”
现年49岁的林纳斯目前受聘于开放源代码开发实验室(OSDL,Open Source Development Labs),全身心的开发Linux内核。尽管这位年轻人看上去毫不起眼,比如林纳斯曾在他的自传《乐者为王》(Just for Fun)中自嘲:“ 我是一个长相丑陋的孩子,凡是见过我小时候照片的人,都会觉得我的相貌酷似河狸。再想象一下我不修边幅的衣着,以及一个托瓦兹家族祖祖辈辈遗传下来的大鼻子,这样,在你脑海中我的模样就形成了。” 但这丝毫也影响不了林纳斯对整个商业社会的巨大价值—Linux代表着网络时代新形式的开放知识产权形态,这将从根基上颠覆以Windows为代表的封闭式软件产权的传统商业模式。更重要的是,这样的颠覆早已悄悄的出现在了商业社会的各个角落。
Linux
颠覆世界的“ 自由主义教皇” 林纳斯。
“ 有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。唯一一个能同时做到这两者的人,就是托瓦兹。” 美国《时代》周刊对“ Linux之父” 林纳斯·托瓦兹(Linus Torvalds)给出了极高的评价。甚至,在《时代》周刊根据读者投票评选出的二十世纪100位最重要人物中,林纳斯居然排到了第15位,而从20世纪的最后几年就开始霸占全球首富称号的盖茨不过才是第17位。
林纳斯的出名和“ 重要” 来得并没什么先兆,尽管这个1969年出生在芬兰赫尔辛基的天才在年少时就已经颇具黑客神韵—对于电脑的着迷使他很早就能够驱使电脑做事情,对一切细节也都能控制自如。但当林纳斯在1991年就读于赫尔辛基大学期间刚刚开始对Unix产生浓厚兴趣,尝试着在Minix(Unix的变种)上做一些开发工作的时候,他从来也没想过会构建出一个新操作系统的内核来。
Linux的诞生显得充满了偶然。林纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形。当时,他年仅21岁。
在自由软件之父理查德·斯托曼(Richard Stallman)某些精神的感召下,林纳斯很快以Linux的名字把这款类Unix的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权,允许用户销售、拷贝并且改动程序,但你必须将同样的自由传递下去,而且必须免费公开你修改后的代码。这说明,Linux并不是被刻意创造的,它完全是日积月累的结果,是经验、创意和一小段一小段代码的集合体。
无疑,正是林纳斯的这一举措带给了Linux和他自己巨大的成功和极高的声誉。短短几年间,在Linux身边已经聚集了成千上万的狂热分子,大家不计得失的为Linux增补、修改,并随之将开源运动的自由主义精神传扬下去,人们几乎像看待神明一样对林纳斯顶礼膜拜。
然而,在1996年底,林纳斯突然离开赫尔辛基,只身奔赴美国硅谷,成为Transmeta公司的一员,直到2003年才离开。其中的原因曾经扑朔迷离,但现在看来,那只不过是林纳斯对于自身价值的一种现实性追求。虽然当时许多人都怀疑这会给发展中的Linux造成致命伤害,不过Linux在随后几年内的发展证明,这样的担心是多余的。
林纳斯说,Linux所取得的许多成功其实可以归结为他的缺点所致。“ 我很懒散,我喜欢授权给其他人。” 就连Linux的企鹅形象标识也是林纳斯的妻子,曾获芬兰空手道冠军的托芙(Tove)想到的,因为林纳斯曾经在澳大利亚被一只企鹅咬过。“ 黑客们,不,程序员们,把在Linux和其它开放源代码项目上的工作,放在比睡觉、锻炼身体、娱乐和聚会更优先的地位。因为他们乐于成为一个全球协作努力活动的一部分—Linux是世界上最大的协作项目。”
4.3 Unix 哲学
参考:
因为 Linux 是类 Unix 操作系统,这里摘抄一些 Unix 哲学相关的内容,方便大家对 Linux 有个浅显的认识。
4.3.1 Unix 哲学核心
英语原文,
This is the UNIX philosophy:
- Write programs that do one thing and do it well.
- Write programs to work together.
- Write programs to handle text streams, because that is a universal interface.
— Doug McIlroy
汉语译文,
这是UNIX哲学:
- 程序,应当只做一件事,且要做好。
- 程序,应当能够协作。
- 程序,应当能够处理文本流,因为文本流是通用接口。
— Doug McIlroy
我觉得这种哲学思想都快适合做其他事情了,分而治之,统筹协调,打好基础。对于打算从事 Unix 编程的,还可以继续深入学习,这里就不多介绍了。
4.3.2 Unix 哲学下的用户
Unix 相信用户,并赋予其极多选择极大权力,但也要求用户必须花足够多的时间来学习。
但是,“ 只要是个人,就会犯错误的” ,这种 Unix 绝对信任也有极大的危害。网上仅仅 rm -rf ./
误删就害死了不少人。而且要花费非常多的时间来学习一门操作系统,也是一个极大的弊端。正是这种种缺陷,催生了各种发行版,后面4.4节再说。
4.3.3 Unix 哲学的对手
以当前桌面领域普及最广的 Windows 系统为对照,看看 Windows 和 Unix 的区别。
Unix 是以科学家和程序员为用户群体的,但是类 Unix 的 Linux 的用户群体也开始包含普通吃瓜群众了。而 Windows 是以所有人,当然包括那些普通群众,而且最主要的就是普通群众,为用户群体的。基于不同的目标用户,Unix 要提供各种可能性,让目标用户,“ 来玩坏自己,实现各种功能,尽情的发挥自己的聪明才智” ,相当于给用户提供了大量积木块;Windows 则要提供傻瓜式服务,防备着你玩坏了,对你各种猜测,引导你去完成特定的任务,以免犯错,相当于给用户提供了一个个成品玩具。用参考文章的一句话来说“ Unix 的使用依赖用户的聪明才智,Windows 则隐藏这些技巧于操作系统和软件内部” 。
下面来分析一下,这两者的优缺点。
- Windows 的优点,降低用户的学习时间成本;缺点,倡导傻瓜式用户,限制用户的灵活发挥。
- Unix 的优点,提供更多的可能性;缺点,增大用户的学习时间成本。
当然,随着 GNU/Linux 发行版的活跃发布,Unix 哲学的一些缺点也在被慢慢修正。也许,未来的 GNU/Linux 发行版既能提供易操作的成品玩具,也附带大量灵活的积木零件,综合两者的优势,更方便也更灵活更高效。
4.4 GNU/Linux 发行版的出现
如果完全从 Unix 哲学起步,用源代码一步步编译为可用软件,对广大普通用户来说就太难了,GNU/Linux 也将举步维艰。以 Linux 为内核,外加 GNU 的一些软件和服务,添上图形界面等,满足用户的基本需求,这样发行版的出现,能够很好的解决上述难题,也就流行开来了。GNU/Linux 发行版的出现,也是对 Unix 哲学的一种实践补充。所以各发行版的目标和口号和 Unix 哲学还是有一定的区别,比如深度公司的口号“ 免除新手痛苦、节约老手时间” ,就不会说,“ 单一高效” 。
发行版的历史就不说了,当前常见的发行版有这两大类,Red Hat 系列和 Debian 系列,当然还有 slackware 以及其他有特殊目的的发行版等等,这里略过他们。
4.4.1 Red Hat 系
Red Hat 系列发行版是一个非常流行的 GNU/Linux 发行版,属于 Red Hat 公司,代码开源,通过售卖服务以及培训等收费,起步非常早。采用非常好用的 rpm 软件包管理器,系统非常稳定,安装简单,有图形化操作界面。该公司对近期比较热门的领域,比如云计算等也有涉猎。旗下主要有企业稳定版的 Red Hat Enterprise Linux 和功能实验版 Fedora 两类操作系统。另外有社区企业版 centos 发行版是完全复制 Red Hat Enterprise Linux 源码,并剔除 Red Hat 公司标志后编译成的发行版,稳定可靠,也值得了解一下。
4.4.2 Debian 系
Debian 也是一个早期的 GNU/Linux 发行版,有非常好用的软件包管理器,软件包为 deb 格式,系统稳定性非常高。有众多的发行版基于或者追根溯源到 Debian,比如本书介绍的对象 Deepin 深度操作系统,以及比较著名的 Ubuntu,国际排名非常靠前的 Linux Mint,网络安全必备的 Kali Linux,老旧电脑挚爱的 Lubuntu 等发行版。本书介绍的很多技术均适用于 Debian 系列的发行版。
4.5 如何提高自己的 Linux 技术
参考网页:
- https://www.tecmint.com/free-online-linux-learning-guide-for-beginners/
- https://www.cnblogs.com/evilqliang/p/6247496.html
- https://blog.csdn.net/erlian1992/article/details/54586156
最好的办法就是直接上手!古人云“ 临渊羡鱼,不如退而结网” 。下载一个 Linux 发行版,安装在自己的电脑上,平常多用,偶尔折腾一下,就差不多了。
4.5.1 首先安装 GNU/Linux 操作系统
当然这里肯定首先推荐 Deepin 深度操作系统,比较符合中国人的操作习惯。另外也可选择 Ubuntu 的一些分支版本,其中优麒麟就是做得比较好的一个发行版。 如果电脑配置不够高,或者比较老旧,也可用选择轻量版的 Lubuntu。电脑配置比较高的,也可用试着在虚拟机,比如 VirtualBox 虚拟机内安装上述这些操作系统。
4.5.2 平常多用
GNU/Linux 的部分发行版在某些情况下,已经能够满足我们的日常工作生活需要。在平常使用不需要太折腾的前提下,我们完全可以多用、经常用。
欧阳修《卖油翁》提到“ 无他,惟手熟尔。” Linux 技术也是“ 学而时习之,不亦说乎” 的事情,用多了,自然知道咋回事啦。就像“ 熟读唐诗三百首,不会作诗也会诌” 。使用熟练后,我们就会发现 Linux 也是可以提高办公效率的好工具。
4.5.3 多问多记
很喜欢毛泽东的读书方法“ 不动笔墨不看书” ,遇到问题及时去查资料,然后记录下来,很有助于技术水平的提高。笔者曾在某公司实习,不得已整天跟 vim 打交道,刚入门也是效率低下,后来在身边好友帮助下以及网上搜索资料,慢慢写博客,也开始有点爱上 vim 了,半年下来,vim 码字母也能贼溜了。学习就是一个慢慢积累的过程,谁也不能一口吃成大胖子。曾经有一位日本人说“ 赵先生,中国有五千年历史呢,咱们不急,慢慢来” 。慢慢来不等于不来,我们需要时刻督促自己不停的学习,“ 活到老学到老” 。
4.5.4 定个计划
当你有一定认识后,你就会自觉不自觉的制定计划了,也会掌握更多的学习方法,这里我就不废话了。上面参考网页都是一些不错的经验介绍,希望对您有所帮助。
4.6 总结
本文首先根据用户角色,介绍了 GNU/Linux 操作系统的用途范围。通过介绍斯托曼和林纳斯两人的经历,附带讲解了 GNU 和 Linux 的发展历史,以及 GPL 协议的一些内容。接着介绍了 Unix 哲学相关的内容,最后对如何学习 GNU/Linux 提出了一些个人观点。