来源:马哥教育node
连接:https://mp.weixin.qq.com/s/wwBt5H68tHmf_lHXrd_eSQlinux
本文是 Linus 写于 1991年10月10日ios
LINUX是什么?编程
LINUX是一个免费类unix内核,适用于386-AT计算机,附带完整源代码。主要让黑客、计算机科学学生使用,学习和享受。它大部分用C编写,可是一小部分是用gnu格式汇编,并且引导序列用的是因特尔086汇编语言。C代码是相对ANSI的,使用一些GNU加强特性(大多为 __asm__ 和 inline)。安全
然而有不少可用于386电脑的unices,他们大部分要花不少钱,并且不附带源码。所以他们是使用计算机的理想选择,可是若是你想了解他们如何工做,那是不可能的。bash
也有一些 Unix 是附带源码的。Minix,Andrew S. Tanenbaum编写的学习工具,已经在大学中做为教学工具使用了不少年了。BSD-386系统是附带源码的,可是有版权限制,并且要花不少钱(我记得起始价格为$995)。GNU内核(Hurd)将会是免费的,可是如今尚未准备好,并且对于了解和学习它们来讲有点庞大。并发
LINUX与Minix是最类似的,因为它很小并且不是很是复杂,所以易于理解(嗯…)。LINUX是基于Minix编写的,所以有至关多的相同点,任何Minix黑客在使用LINUX的时候都感受很是熟悉。不过,没有在项目中使用Minix代码,所以Minix版权没有限制到这个新系统。它也是彻底免费的,并且它的版权很是宽松。所以不像使用Minix,它不须要几兆字节大小的区别。less
LINUX版权函数
虽然是免费的发布版,我仍是从如下几个方面限制了LINUX的使用:工具
你能够自由复制和从新发布源码和二进制,只要是:
对任何使用或者扩展系统的人来讲,这应该足够宽松而不会引发任何担心。若是你有朋友真的不想要源码,只想要一个能运行的二进制,你固然能够给他而不用担忧我会起诉你。不过最好只在朋友之间这么作。
LINUX运行所需的硬件/软件
LINUX是在一个运行Minix的386-AT上开发的。因为LINUX是一个真正的操做系统,并且须要直接与硬件交互来作一些事情,你必须有一个很是类似的系统来让他顺利运行:
LINUX会发展成为一个自给自足的系统,如今须要Minix-386才能正常运行。你须要Minix让初始化启动文件系统,和编译OS二进制。在那以后LINUX是一个自给自足的系统,可是为了作文件系统检查(fsck)和修改以后重编译系统,推荐使用Minix。
获取LINUX
LINUX如今可使用匿名ftp从‘nic.funet.fi’的‘/pub/OS/Linux’目录获取。这个目录包含操做系统的全部源码,还有一些二进制文件,所以你能够真正使用系统了。
注意!二进制大可能是GNU软件,并且版权比LINUX的严格(GNU非盈利性版权)。所以你不能在不发布他们源码的状况下从新发布他们,能够在/pub/GNU中找到。关于GNU非盈利性版权,从任何GNU软件包了解更多。
此目录中各种文件以下:
让系统运行的最少文件是OS源码和bash和更新二进制文件。不过只用这些,你作不了什么事。
安装
在你拿到了必要LINUX文件以后,你须要编译系统和建立root目录。必要的二进制文件须要放到root文件系统中。按以下操做:
1. 备份你的软件。虽然LINUX从没有毁坏过个人任何文件,但没有什么是必然的。安全赛过遗憾。
2. 选择/建立一个标准MinixHD-分区做为新的LINUX root文件系统。
3. 在新的root建立必要的设备节点。LINUX与Minix使用相同类型的节点,因此使用Minix的mknod命令建立下面的设备:节点号与在Minix中相同。
4. 将必要文件放到新的root分区。文件应该放在下面目录中:
但愿你如今有一个功能正常的unix,并且你已经root权限登陆。LINUX如今没有‘init’过程,只要你注销,系统会同步并等待。使用三指键(Ctrl+Alt+Del)重启机器。
LINUX 缺失/不兼容的东西
LINUX 是打算做为一个所有自给自足的内核,但如今并不是如此。做为上面已经提到的,你须要 Minix 来设置启动设备而且检查文件系统当它运行起来的时候。这里有一些其它的不足之处:
硬件的不兼容。一些 AT 标准特性当前尚未支持。最值得注意的是软盘驱动,利用 LINUX 进行实际工做(备份 etc)当前是不可能的[译者:这个是 oldlinux,这个是 Linus Torvalds 1991 年 10 月写的文章,确定当时是不行的]。还有串行链接的一些特性没有被实现(2400 bps 波特率的硬链接,没有挂断(hang-up)提示等等 )。
标准 c 库的不兼容。gcc 分发版的 libc.a 没有完成,我对免费可发布的库功能很感兴趣。
一些系统调用没有彻底实现。这些设计绝大多数“极少调用”的特性好比调试(谁不管如何须要它的话,你的程序第一次是没法工做的:-))以及其它的特性。
如上所述,没有登录和初始化进程。当前 LINUX 启动在单用户模式,以 root 做为控制台用户。对于一些移植工做足够了,但不是实际可用的。
387支持[译者:硬件浮点,当时 Intel 发布了外接式 FPU] 没有被实现,即便已有一些基础程序被提供出来。”nic.funet.fi” 的 gcc 二进制包使用软浮点(ie 仿真功能调用)来支持 4 个基础数学运算操做。387-支持将尽快实现当个人电脑安装了这个硬件。但愿在一个月或者两个月。
如今尚未重要的系统管理命令实如今 LINUX 中。这些包括 mkfs, format, fsck, mknod 等。这些命令须要的内核特性尚未实现(format, mknod),一些命令只须要实现它。做为一个库,我欢迎任何免费分发文件。
如您所见,LINUX还不是一个完整的系统。 感谢您的帮助,使其变得更好。 我对为LINUX重写的Minix命令不感兴趣,除非你本身从头开始编写它们。 您固然能够免费(并鼓励)将您的Minix发行版中的全部内容用于您本身的LINUX系统,但因为Minix的版权,它们没法分发给更普遍的受众。
这里提到的一些问题将由我(即lines/387/floppy支持)尽快修复,但我但愿获得库函数的支持。感谢大家提交的错误报告及补丁还有愿望清单,若是你真的有针对问题的补丁,我会当即尝试去修复它。 小的更改将做为补丁形式发送到邮件列表,并在nic.funet.fi'上设置,若是通过大量重写,或者修复大的补丁,整个系统将在nic.funet.fi’更新。
LINUX移植软件
LINUX被设计得让移植相对容易。所以,就有了完整的termios实现和一些POSIX库。我所移植的(诚然相对较少)程序没有任何问题。
尽管LINUX与Minix很是类似,但Minix程序一般并不会比为其余nuix设计的程序更容易移植。所以,我不建议从一个特定程序的Minix版本开始,而应该尝试从头开始移植‘’virgin‘’程序。比BSD更接近SYSV,这意味着当给定一个-DUSG或者-DSYSV标识时,大多数程序很容易移植。
移植过程当中最困难的一点就是缺乏库函数。这些必须由你来编写,或者从其余的来源复制(Minix多是个有缘人)。另外,一些程序(特别是GNU)有各类各样的标识,这些标识能够定义哪些函数不可用(一旦在Makefile中添加了足够量的-DXXX_MISSING标识,GNU fileutils将编译的很好)。
已经移植的程序
下面这些程序已经移植到LINUX:
全部上述程序都能在‘nic.funet.fi’(主要在’/pub/gnu’)中找到,大多数LIINUX-binaries均可以在‘/pub/OS/Linux’目录中找到。包括gcc(cc1)有一些我本身加强的功能,全部这些程序都在没有变化的状况下编译的。先尝试本身编译,遇到问题能够将差别或者资源发邮件给我。
另外,我提起过明确地GNU差别编译和运行。
技术帮助
LINUX目前有一个邮件列表,您能够经过邮件发送到这个地址订阅:Linux-activists-request@niksula.hut.fi ,并要求包括在列表中。而后你能够经过这个邮箱:Linux-activists@niksula.hut.fi 提问题,这将复制你的问题/答案/不管什么,并发送给列表中其余全部人。
请注意Linux-activists和Linux0activists-request的不一样——第一个用于给列表中的全部人发送邮件,第二个仅用于订阅和取消订阅。
固然,您也能够直接发送邮件至 torvalds@kruuna.helsinki.fi。我会尽可能在一两天内回答全部的问题。
尽管‘nic.funet.fi’可能会保持合理的更新状态,可是它还有些问题(即,我没法由于我的获得文件,但能够经过几我的)。所以,若是邮件列表上的人想要补丁或二进制文件,他们将会更快获得。
感谢
我要感谢学院…
说真的,若是没有其余人的帮助,这个系统将永远不会有曙光,甚至会变得更糟。Bruce Evans 帮助我找到了须要更改的位置,以便gcc能正确地处理浮点数,并提供许多有用的想法/建议(他的Minix-386用于构建系统)。此外,Earl Chew 的estdio包被用于标准的IO库。像这样更自由地分发包!
Alain W Black和Richard Tobin为Minix制做了gcc,没有它我就没法编译这个东西。GNU完成了我在Linux下使用的大部分程序。Alfred Leung发送了美国键盘补丁。
附:“感谢”wirzeniu@kruuna.helsinki.fi他的“建设性”批评和“诙谐”的评论。他是我第一个 alpha-测试者,他应该被授予勇气奖章。
Linus Torvalds (torvalds@kruuna.helsinki.fi) 1991年10月10日
英文:Linus Torvalds,翻译:开源中国
www.oschina.net/translate/linux-a-free-unix-386-kernel