Linux内核简介-自由软件

建议点击这里查看个人主页上的最新原文

点击这里在哔哩哔哩bilibili在线观看配套的教学视频

点击这里在哔哩哔哩bilibili在线观看配套的加餐视频(就是一些补充)

点击跳转到内核课程所有目录

在讲具体的技术点之前,我们先来讲一些Linux内核相关的小故事。我们都有过这种经历,如果我们对一件事很感兴趣,那我们就会很投入做这件事,做再久也就不会感觉到累;而如果我们对一件不感兴趣,那让我们多做一分钟估计都会感到难受。比如对于喜欢玩游戏的朋友,你们可以玩几个小时,甚至通宵玩游戏;而我不喜欢玩游戏,让我多玩一分钟我都感觉难受;但我喜欢写博客,周末我可以把全部时间都花在写博客上。所以我们讲这些Linux内核的小故事,目的是让各位朋友对学习Linux内核产生兴趣,然后全身心的投入学习,接着能力就提升得很快,再涨很多工资,最后走上人生巅峰。当然Linux内核快速发展的30几年时间(截止到2024年),有趣的故事多到数不过来,这里只列出一小部分,感兴趣的朋友以后可以自己继续探索。

高晓松有句话: 这个世界不只有眼前的苟且,还有诗与远方。这在自由软件之父 理查德·马修·斯托曼 身上真正做到了,我们先来看看这位自由软件之父的光辉事迹。

自由软件之父

先上一段维基百科上对他的简介:

理查德·马修·斯托曼(英语: Richard Matthew Stallman,简称rms,有时也用大写的RMS,1953年3月16日—),美国程序员,自由软件活动家。他发起自由软件运动,倡导软件用户能够对软件自由进行使用、学习、共享和修改,确保了这些软件被称作自由软件。斯托曼发起了GNU项目,并成立了自由软件基金会。他开发了GCC、GDB、GNU Emacs,同时编写了GNU通用公共许可协议。

接触过编程的朋友应该都用过GCC和GDB这两大必不可少的工具,但也许会有朋友以前没了解过这是他开发的,当然他开发的软件数不胜数,比如我使用的相对比较小众但功能极其强大的Emacs编辑器。

他写过很多伟大的软件,但相比他的软件开发能力,他最大的成就要数他发起的自由软件运动。可以不夸张的说,他发起的这项自由软件运动,是Linux能够这么成功的基础,当然也是今天很多流行软件成功的基础。

顺便要提一下的是,他虽然在计算机领域有突出贡献,学生时代还在数学、物理学、生物学领域非常有天赋。

他曾经说过一段话:

随着社区(软件分享社区)的终结,我面临着一个道德上的抉择。最简单的就是投身于专有软件世界之中,签署不公开协议,并承诺不帮助同行、同事。自己也很可能编写软件,并在不公开协议的前提下发布软件,去同流合污,迫使更多的人背叛自己的原则。显然,走这条路,可以挣大钱,而且使编写代码的工作增添一份金钱上的快乐。但是我知道,等到自己职业生涯终结时,我再回首这些年为分离人类而砌造的‘墙壁’。我会感受到,我将自己的一生都用在使这个世界变得更加糟糕。

1960年代的美国兴起的黑客文化起源于麻省理工学院,到1980年代时,黑客文化已经有所衰落,Unix开始收费和商业闭源(后面会细说),斯托曼于是开始致力于创建 Unix 的替代品,1985年成立了自由软件基金会,并发表GNU宣言。自由软件运动与开放源代码运动让黑客文化又开始流行了。

有意思的是,斯托曼用的一台电脑是中国龙芯芯片的江苏龙梦电脑,这台电脑甚至于在BIOS层级都完全是自由软件。

更多关于这位自由软件之父的有趣故事,可以看他的个人自传《Free as in Freedom: Richard Stallman’s Crusade for Free Software》(中文翻译: 《若为自由故》)。

GNU计划

GNU这个名字其实挺有意思的,GNU is Not Unix,是一个递归缩写,这是黑客文化中的一种幽默。1983年9月27日由理查德·斯托曼在麻省理工学院公开发起。这项计划的目标很崇高,就是创建一套完全自由的操作系统,称为GNU,从名字我们可以知道,就是要创建 Unix 的替代品。

我们再来看自由软件的定义: 一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重使用者自由的软件。这里要强调的一个词是“不受限制”,使用自由软件的人可以随便修改源代码,但要遵守一定的自由软件许可协议。自由软件许可协议有很多,比如BSD和MIT等宽松自由软件许可证,比如GPL这种Copyleft许可证。

这里我们重点说一下GPL协议,为什么呢,因为我们要学习的Linux内核就是采用的GPL协议,全称是GNU General Public License,中文名称是GNU通用公共许可协议。GPL是一个Copyleft许可证,什么是Copyleft呢,其实这个概念很有意思,就是针对copyright,copyright就是是著作权,俗称版权。维基百科上有一句话可以很好的解释Copyleft的概念: 允许他人任意的修改散布作品,惟其散布及修改的行为和作法,亦限定以Copyleft的方式行之。翻译一下也就是你可以随便修改和传播我的代码,但你修改过的代码也要允许其他人修改和传播。

然后还要说一点,就是自由软件也是可以收费,可以商业化的,举个例子吧,比如红帽公司的Linux发行版就要收费,但他们的收费形式是通过提供技术服务,就是客户使用他们的发行版遇到问题了,红帽公司就有偿的帮助他们解决问题。

既然GNU计划是一项计划,可能有朋友会问这项计划成功了没,答案是这项计划基本完成。你可能会说,一项计划要么未完成,要么已经完成,为什么会是一个基本完成的状态呢,这就得说到GNU Hurd内核Linux内核了。到1989年时,GNU项目中的其他部分,如编辑器、编译器、Shell等都已经完成,就缺一个内核,GNU计划在1990年时是要开发一个内核的,名字叫Hurd,但这个Hurd也许一方面是设计得太复杂了吧,另一方面Linux内核的横空出世,让所有人都把目光从Hurd内核转移到Linux内核身上了,斯托曼坚持认为 Linux 应该被称作 GNU/Linux,因为 GNU 计划更早出现,且在 Linux 操作系统的早期,GNU 社区的软件源代码在其中起了关键的作用,例如 GCC 编译器。

开源软件

实际上吧,在今天,比起“自由软件”这个概念,“开源软件”被更多人提起。在自由软件之父看来,开源软件和自由软件是严格区分的。关于这两个概念的区别,社区争议很大,广为流传的一种说法是,我们可以这样理解,开源软件的范围更广,开源软件包含自由软件,也包含不自由软件,也就是有一些软件虽然开源了,但并不允许别人修改,你改了我的代码拿来商用,不管你有没把商业软件开源,我依然可以告你。

比如Minix早期的源代码虽然容易得到,但并没有采用自由软件许可协议,所以早期还不能称为自由软件。直到2000年4月,重新以BSD许可协议发布,才变成自由软件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值