首页 >>  正文

linux+control-d

来源:baiyundou.net   日期:2024-08-21

【CSDN 编者按】所有开发者应该都了解过Linux系统,它也是自由软件和开放源代码软件发展中的成功典范。在漫长的发展史中,Linux的背后却藏着许多有意思的小故事,本文作者Lars Wirzenius是Linux之父Linus作为之前的同事,一同见证Linux的创立,让我们跟随Lars Wirzenius的视角,来了解Linux创立和早期发展的全过程。

作者 | Lars Wirzenius 译者|陈静琳 责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

我的名字叫Lars Wirzenius,我见证了Linux最初的创立。现在,Linux在全球范围内取得了成功,但它的起点却相当卑微。以下是我对Linux最早的记忆,它的创建,以及它走向今天的道路的开始。

1988年秋天,我开始在芬兰赫尔辛基大学学习计算机科学,并认识了Linus Torvalds(Linux内核的最早作者),他是那年计算机科学专业另一个讲瑞典语的新学生。在大学第一年结束时,我们得到了一台Unix服务器的访问权,我无意中发现了Usenet(1979年杜克大学的研究生汤姆·特拉斯科特与吉姆·埃利斯设计),即分布式的互联网交流系统,因为我把rm错打成rn,就变成了Usenet阅读器。我把这件事告诉了Linus,我们花了许多的时间来探索这个问题,就有了后续的故事。

Linux开始于一台组装电脑

第一年之后,我们都去服义务兵役了,虽然在不同的地方。1990年秋天,我们回到大学学习,都参加了C和Unix编程的课程,其中也包括相当多的Unix内核架构的理论。这导致我们也去了解了其他操作系统的内核,如QNX和Plan 9,我们满怀热情地讨论了如何正确构建一个操作系统,当时我们拥有着20岁大学生的一腔热血,对未来有着美好的憧憬。

1991年1月,Linus从当地一家用零件组装电脑的商店买了他的第一台电脑。这台电脑有一个386的CPU,这在当时是比较花哨的,因为Linus想探索多任务。此外,因为这台电脑是用零件组装的,它还来自32位摩托罗拉68008CPU的辛克莱QL(Sinclair Research于1984 年推出的个人电脑),他想要一个32位的CPU,而不想降到16位,所以286不是一个好的选择。Linus的第一台个人电脑有高达4兆字节的内存和一个硬盘驱动器,已经是当时非常先进的机器。

Linus得到了一份《波斯王子》的游戏拷贝,把将大部分时间用来玩游戏。后来他还买了一份MINIX(是一个迷你版本的类Unix操作系统),因为在大学使用Unix后,他也想在家里使用类似的东西。

第一个版本:As和Bs

完成游戏后,Linus开始学习英特尔汇编语言。有一天,他给我看了一个做多任务的程序。一个任务或线程会在屏幕上写一个字母 "A",另一个是 "B";当 "As "变成 "B "的时候,上下文的切换在视觉上是很明显的。这就是后来被称为Linux内核的第一个版本。

在这期间,即1991年春末,我为他写了一个C语言sprintf()函数的实现,因为他还没有学会如何写带有变量参数列表的函数。我想让他不必为每一种类型的值都要写出不同的函数而感到痛苦,对于更安全的Snprintf()函数,代码的核心仍然在内核中。

随着时间的推移,Linus不断实现新的东西,使他刚刚起步的内核变得更好。一段时间后,他有了键盘和串口的驱动程序,模拟了VT100终端的屏幕转义序列,并且可以用它通过调制解调器拨号到大学,从家里阅读Usenet。简直像一本科幻小说! 有一天,Linus意外地试图用他的硬盘拨号到大学,导致他的主引导扇区以“ATDT”和大学调制解调器池电话号码开头,从中恢复过来后,他在他的内核中实现了文件权限。

1991年8月,Linus在comp.os.minix新闻组中第一次公开提到他的新内核。这包括他说的一句话:"我正在做一个(免费)操作系统,只是一个爱好,不会像GNU那样大而专业"。这次公开是如此谦虚,接着该系统最初被称为Freax。几周后,Linus让ftp.funet.fi(网站服务器)的管理员之一Ari Lemmke上传了第一个tar档案。Ari选择了Linux这个名字,最初的版本仍然包含嵌入在一个源文件中的原始名称。

在这段时间里,人们对这个新事物很感兴趣,所以Linus需要提供一个安装方法和说明。由于他只有一台电脑,所以他来拜访我,要在我的电脑上安装。并且因为他的电脑是用来开发Linux的,而Linux只是在他的Minix安装基础上发展起来的,所以以前从未真正安装过。因此,我的电脑是第一台安装Linux的电脑!当这一切发生时,我正在打盹,我推荐这种安装Linux的方法:打盹,而Linus去做这些艰苦的工作。

Linux的第一个版本使用的是禁止商业使用的许可,然而一些早期的贡献者建议将其改为自由软件许可证。1991年秋天,Richard Stallman(GNU项目发起人)访问芬兰,我带Linus去听Stallman的演讲。因为来自贡献者的压力,以及我的唠叨,最终说服了Linus在1992年初选择GNU GPL(General Public License)许可证。

在圣诞节期间,Linus在Linux中实现了虚拟内存。这使得Linux在内存不足的廉价机器上成为更实用的操作系统。

重要的一年

1992年以与Andrew Tanenbaum的著名辩论开始,他是一位大学教授和MINIX的作者,因为他对Linux和它的结构有一些看法,同时Linus对MINIX也有看法,所以他们有了一场被描述为火焰战争的辩论,但事后看来其实是相当文明的。

其实对于Linux未来的成功而言,更重要的是X11系统被移植到了Linux上,使1992年成为Linux桌面快捷方式重要的一年。

于我而言,我选择了在社区方面做出贡献,而不是直接对内核做出贡献,并且帮助回答问题,编写文档等等。我还经营了一份关于Linux的短暂的通讯,它主要是因为发表了对Linus的第一次采访而受到关注,但是该通讯实际上被comp.os.linux.announce新闻组所取代。

第一个Linux发行版也开始于1992年:SLS(Softlanding Linux System)。第二年,SLS演变成Slackware(Patrick Volkerding制作的Linux发行版本),这激发了Ian Murdock在1993年创办Debian,以探索一个更加基于社区的开发结构。在接下来的几年里,还有一些其他的发行版也随之而来。

1993年,Linus和我都被聘为大学的助教,我们共用一间办公室。那个房间有一台PC,Linus接管了它,并用于Linux的开发。彼时,我对一台DEC终端用于访问Usene(讨论系统)感到非常满意。

有一天,Linus感到很无聊,因为工作中的电脑感觉很慢,所以他花了一天时间用汇编语言重写了Linux内核的命令行分析器,以提高速度。(当然,那其实是毫无意义的,解析器后来又用C语言重写了一遍,以利于移植,所以它的速度并不重要)。几年后,他拿到了一台较新的PC,表面说是为了测试内核内存管理的压力,其实是花了好几天时间玩Quake游戏,有很多乐趣被停留在那个房间里。

后来,Linux获得了对Ethernet(以太网)和TCP/IP(Transmission Control Protocol/Internet Protocol)的支持,这意味着人们无需使用调制解调器就可以阅读Usenet。可惜的是,早期的Linux网络代码偶尔会有些粗糙,因为它是从头开始写的。有一次,Linux发送了一些破损的数据包,导致网络上所有的Sun机器瘫痪。由于很难修复Sun的内核,Linux被禁止进入大学网络,不能从自己的办公桌上便捷访问Usenet很好的激励了修复进程,直到它的错误被修复完成。

“开源“被真正创造出来

在1994年春天,我们觉得Linux已经完成了,没有什么可补充的了。人们可以用Linux来编译自己,阅读Usenet,并同时运行许多xeyes程序的副本。彼时,我们决定发布1.0版本,并安排了一个发布活动。我们邀请了芬兰的计算机媒体,一家电视台甚至派出了一个摄制组,活动的大部分内容是在后台隆重地编译Linux 1.0,而Linus和其他人则讲述了什么是Linux以及它有什么好处。Linus解释说,用于个人电脑的商业Unix是如此昂贵,因此编写自己的Unix更容易。

1995年,Linus和我在大学里上了一门软件工程课程,其中大部分是一个大型的实践项目,不过建立在Linux的基础之上。我坚持要使用一个版本控制系统,因为我在以前的课程中看到学生们大喊大叫的版本控制:学生们通过NFS(Network File System)共享一个源代码树,当他们改变什么的时候,就大喊 "我正在编辑这个文件"。我认为这不是一个有效的方法,所以我坚持使用CVS(Concurrent Versions System),这是我刚刚了解到Linus不喜欢CVS的经历,并且多年来拒绝使用任何版本控制,除了将tar球(使用gzip压缩程序压缩的文件)上传到FTP网站(File Transfer Protocol)。

那一年Linus首次把Linux移植到新的架构上,他得到了一台DEC Alpha机器(64位指令架构微处理器)。我后来会把这台机器用作阅读Usenet的终端,其他人将Linux移植到其他架构上,但这并没有让我得到更多的机器来阅读Usenet。

1997年,Linus毕业并搬到了美国,在Transmeta公司(一家设计超长指令字代码转译微处理器的美国有限公司)工作,而我在芬兰赫尔辛基地区的另一所大学找到了一份工作。

在接下来的几年里,发生了很多事情。事实证明,Linux仍然有一些缺失的功能,所以人们在这些方面进行努力。术语 "open source(开放源代码)"被创造出来,IBM(International Business Machines Corporation),是美国一家跨国科技公司及咨询公司,在Linux开发中投入了大量的资金。彼时,网景公司发布了一个开源版本的网络浏览器,又随着时间的推移,开放源码基本上占领了世界。LWN(Eklektix公司旗下的计算网络杂志,着重于针对Linux和其他类Unix操作系统的自由软件和软件)开始逐周报道了这段历史的大部分内容。

1991年,Linus写道,Linux "不会像GNU那样大而专业"。在2023年。Linux正在每个大陆、每个海洋、数十亿台设备上、在轨道上和火星上运行。而对于一开始只是两个简单的线程,在屏幕上写As和Bs的流来说,这还不错。

","gnid":"9f104cef33a50bc7e","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"267","title":"","url":"https://p0.ssl.img.360kuai.com/t01c00902720b5a3b48.jpg","width":"800"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1682905334000,"pure":"","rawurl":"http://zm.news.so.com/ff673e6a68b97c6a12193fdbdd3f8d92","redirect":0,"rptid":"b17f86dd6d799afa","rss_ext":[],"s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:大学","k":"大学","u":""},{"clk":"ktechnology_1:linux","k":"linux","u":""}],"title":"Linux 往事:一个不会像 GNU 那样大而专业的 OS 是如何成为主流的?

上泉任3282linux操作系统 -
连奚强19434846052 ______ Linux是一个开放的,自由的类Unix操作系统,它的源代码是公开的, 各个版本的Linux,包括从内核到许许多多的应用程序的源代码, 以及可执行文件都可以免费从互联网上下载. 你也可以通过光盘得到Linux系统,和一般的软件不同的是, 你...

上泉任3282Linux系统管理 第一章 Linux系统简介及安装 -
连奚强19434846052 ______ 在安装Linux之前,先确定你的计算机的硬件是否能被Linux所支持. 首先,Linux目前支持几乎所有的处理器(CPU).其次,早期的Linux只支持数量很少的显卡、声卡,而如今,如果要安装Linux,已经不需要再为硬件是否能被Linux支持担心...

上泉任3282什么是linux镜像? -
连奚强19434846052 ______ 这个问题首先你要明白什么是"镜像" 镜象就是一种文件形式,可以把许多文件做成一个镜象文件.比如你的系统,本来有很多文件,做成镜象后就一个文件,与GHOST等程序放在在一个盘里用GHOST等软件打开后,又恢复成许多文件,总之...

上泉任3282LINUX系统的常用命令,最好能有一些例子的演示.. -
连奚强19434846052 ______ 管理文件和目录的命令 ls 列出目录下的内容 常用参数有 -a 显示指定目录下所有目录与文件,包括隐藏文件 ln 连接一个文件 常用参数有 -s 表示是符号连接,如果不用参数则是硬连接. cat 显示文件内容或连接两个或多个文件 如#cat readme.txt则...

上泉任3282linux如何生成 .config -
连奚强19434846052 ______ 从文件名称上来分析应该属于某个php框架的配置文件 例如:ci框架中,站点的配置文件位于application/config/config.php 另外,在linux中查找文件可以使用命令 find / -name "config.php"

上泉任3282请问:linux的控制台是干啥的,有什么作用和价值,谢谢啦 -
连奚强19434846052 ______ Linux虚拟控制台 Linux是一个真正的多用户操作系统,它可以同时接受多个用户登录.Linux还允许一个用户进行多次登录,这是因为Linux和UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台进行多次登录.虚拟控制台的...

上泉任3282怎么查看Linux的core开关,以及如何打开和关闭 -
连奚强19434846052 ______ dump文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息.在window下,要能生成dump文件,需要自己编写相应的代码.不过现在网上可以找到相应的代码,只要把它下载后然后加到自己的工程中去,就可以了!在linux下面...

上泉任3282请教linux下控制台编程 -
连奚强19434846052 ______ 使用system,头文件是stdlib.h,参数里直接存放要执行的命令字符串.也可以用exec族函数.还有,既然用linux就得会用man

上泉任3282linux命令:从登录mysql数据库,到访问l数据库的所有表,然后锁定某一个表,显示表结构,再查询表内容. -
连奚强19434846052 ______ service mysqld start(启动mysql服务) mysql(进入本地mysql数据库) show databases;(查看有哪些数据库) use 数据库名;(切换到XXX数据库) show tables; (查看此库中有那些表) 然后就是对具体的某张表进行操作了

上泉任3282linux cron工具使用 -
连奚强19434846052 ______ 当前时间过五分钟显示“hello“不是周期任务,用at即可 #service atd start #at +5 now at>echo "hello" 按Ctrl+D 每天早上八点,每周一至周五显示为周期任务.用crond #service crond start #crontab -e 添加内容如下: 0 8 * * * /bin/echo "It's 8 clock" 0 7 * * 1-5 /bin/echo "wake up" 保存退出即可

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024