全部博文(14)
分类: LINUX
2009-08-04 13:57:59
是一个用C语言写成,符合标准的类操作系统的核心. Linux最早是由芬兰黑客为 尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年.今天的Linux kernel几乎是能在所有体系结构的cpu上运行, 从嵌入式系统如手机(google的Andriod, montavista),基站,上网本(Intel Moblin, 华硕Eeepc预装), 路由器(如思科的), 到桌面系统的PC,和服务器系统的集群, 都有应用Linux. Linux也是IBM超级计算机Blue Gene的操作系统。直至2008年11月,全球前五百大超级电脑(TOP 500)有高达87.8%的比例采用Linux为它们的操作系统,最快的超级电脑IBM_Roadrunner正是采用Linux的。.
Linux是一个非商业化的产品,这是它最让人感兴趣的特征。实际上Linux是一个因特网上的协作开发项目。尽管Linus被认为是Linux之 父,并且现在依然是一个内核维护者,但开发工作其实是由一个结构松散的工作组协力完成的。事实上,任何人都可以开发内核。和Linux的大部分应用软件一 样, Linux内核也是自由(公开)软件。当然,也不是无限自由的。它使用GNU的第二版作为限制条款。这样做的结果是,你可以自由地获取内核代码并随意修改它,但如果你希望发布你修改过的内核,你也得保证让得到你的内核的人同时享有你曾经享受过的所有权利,当然,包括全部的源代码。
到现在,Linux早已羽翼丰满了,它被广泛移植到AMD x86-64、ARM、Compaq Alpha、CRIS、DEC VAX、H8/300、Hitachi SuperH、HP PA-RISC、IBM S/390、Intel IA-64、MIPS、Motorola 68000、PowerPC、SPARC、UltraSPARC和v850等各种体系结构上。它覆盖的领域小到手表,大到超级计算机集群。今天, Linux的商业前景也越来越被看好,不管是新成立的Linux专业公司MontaVista 和Red Hat还是闻名遐迩的计算巨头IBM和 Novell,都提供林林总总的解决方案,从嵌入式系统、桌面环境一直到服务器。
当说到linux操作系统的时候,不仅仅是指linux kernel, 还包含library, shell, 桌面系统(KDE or Gnome),以及很多常用开源软件, 因为技术上说Linux内核只提供了硬件抽象层、磁盘及文件系统控制、多任务等功能, 一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统。
绝大多数基于Linux内核的的操作系统使用了大量的软件,包括了一个shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如Emacs。正因为如此,GNU计划的开创者提议将Linux操作系统改名为GNU/Linux,但多数人仍然习惯性地使用"Linux"。
的历史是和紧密联系在一起的。GNU是“GNU's Not Unix”的递归缩写, ,是 一种广泛使用的商业操作系统. 由于当时AT&T对在学校和公司广泛应用的unix收取费用,从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包 括软件开发工具和各种应用程序。 由于 GNU 将要实现 UNIX 系统的接口标准,因此 GNU 计划可以分别开发不同的操作系统部件。GNU 计划采用了部分当时已经可自由使用的软件,例如 TeX 排版系统和 X Window 视窗系统等。不过 GNU 计划也开发了大批其他的自由软件,这些软件也被移植到其他操作系统平台上,例如 Microsoft Windows、、Solaris 及 MacOS。为保证 GNU 软件可以自由地“使用、复制、修改和发布”,所有 GNU 软件都包含一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(Copyleft)的概念.
当时,到1991年 Linux 内核发布之前,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发,包括编译器gcc, 文字编辑器Emacs, 调试工具gdb, bash shell, c库glibc和各种工具软件等等,并且正在开发GNU的操作系统的内核Hurd.不幸的是Hurd采用了难度较大的设计,开发进展遇到很多困难.
“作为芬兰赫尔辛基大学一名学生的Linus,为不能随心所欲使用强大而自由的Unix系统而苦恼。对Torvalds 而言,
使用Microsoft的DOS产品等于玩积木游戏。Linus热衷使用Minix,一种教学用的廉价Unix,但是,他不能轻易修改
和发布该系统的源代码(由于Minix的授权),也不能对Minix开发者所作的设计轻举妄动,这让他耿耿于怀。
Linus像任何一名生机勃勃的大学生一样决心走出这种困境:开发自己的操作系统。他开始写了一个简单的终端仿真程序,
用于把自己的终端连接到本校的大型Unix系统上。他不断改进和
完善这个终端仿真程序,不久,Linus手上就有了虽不成熟但五脏俱全的Unix。1991年年底,他在Internet上发布了早期版本。"
这个22岁芬兰人,把Minix这个教学用的微内核操作系统重写成一个宏内核的操作系统(只有一万行代码,并且只能运行在minix上面),并被大学FTP server管理员取个linux的名字发布了出来.当时怎样把这个操作系统写出来的,在他的自传中有一些记录:
在linux的内核官方网站,可以获取当前版本的Linux源代码。
Linux内核有两种:稳定的和处于开发中的。稳定的内核具有工业级的强度,可以广泛的应用和部署。新推出的稳定内核大部分都只是修正了一 些Bug或是加入了一些新的设备驱动程序。相反地,处于开发中的内核中许多东西变化得都很快。而且由于开发者不断试验新的解决方案,内核常常发生剧烈的变 化。
Linux通过一个简单的命名机制来区分稳定的和处于开发中的内核(参考图1-2)。
这种机制使用三个用“.”分隔的数字来代表不同内核。第一个数字是主版本号,第二个数字是从版本号,第三个数字是修订版本号。从版本号可以反映出该 内核是一个稳定版本还是一个处于开发中的版本:该数字如果是偶数,那么此内核就是稳定版,如果是奇数,那么它就是开发版。举例来说,版本号为2.6.0的 内核,它就是一个稳定版。这个内核的主板本号是2,从版本号是6,修订版本号是0。头两个数字在一起描述了“内核系列”—在这个例子中,就是2.6版内核 系列。
处于开发中的内核一般要经历几个阶段。最开始,内核开发者们开始试验新的特性,这时候出现错误和混乱是在所难免的。经过一段时间,系统渐 渐成熟,直到一个新的特性被宣布通过审定。这时候,就不再允许加入新的特性了。而对已有特性所进行的后续工作会继续进行,当这个新内核确实被认为是稳定下 来以后,就开始审定代码。这以后,就只允许再向其中加入修改bug的代码了。在经过一个短暂(希望如此)的准备期,这个内核会作为一个新的稳定版被推出。 例如,1.3系列的开发版稳定在2.0,而2.5稳定在2.6。
事实并非如此
从技术上说,如前所述的内核开发过程的确如此, Linux发展史也没有例外。但是,2004年的夏季,在Linux内核开发者联盟的年度例会上做出了一个决策,暂缓2.7开发版系列,稳定2.6内核。 这一决策源于2.6内核深受欢迎、稳定可靠并具有高安全性。除此之外,也许更重要的是,当前2.6内核的维护者Linus Torvalds 和Andrew Morton一直不遗余力地工作着。内核开发者坚信这一过程会持续下去,2.6内核系列既保持稳定,又不断吸收新鲜血液。随着时间的推移,我们已经看到, 也即将看到,一切像预期的那样向前推进。
目前, 仍然由linus维护, The latest stable version of the Linux kernel is: 2.6.29 (2009-03-23)
为linux kernel 2.6提交代码最多的公司前几名是Redhat,Novell,IBM,Intel,Linux Foundation,Consultant,SGI,MIPS Tech,Oracle,Montavista,Google, 原文
GPL, LGPL, BSD, Apache License, Mozilla Public License等等,基本上GPL是最严格的,要求基于GPL代码的衍生开发必须用GPL发布, 目前GPL主要有三个版本,很多程序以GPLv2发布, GPLv3也已发布不过因为更为严格,所以引起不少争议。
The Linux Foundation is the nonprofit consortium dedicated to fostering the growth of Linux. Founded in 2007, the Linux Foundation sponsors the work of Linux creator Linus Torvalds and is supported by leading Linux and open source companies and developers from around the world.
linux基金会致力于促进linux的发展,同时也提供开放的linux培训课程,交99美元会费之后成为会员,有一系列活动, 详细请看我翻译的[]
linux之父Linus目前全职在linux基金会工作。。
Linux的成熟不只是kernel开发者的功劳, GNU的各种重要软件比如编译linux kernel的gcc, 调试程序的gdb, kgdb, 开源的各种库,许多功能强大的开源程序,以及一些第三方的,比如[的TCP/IP协议栈, 等,都是重要的组件.Linux kernel只是开源软件中的一个.只有kernel的操作系统,普通个人用户是没有办法使用的, 加上各种库函数, shell, ,和工具软件如Emacs, OpenOffice, Eclipse, Firefox之后, 就成了面向个人用户的基于GNU/Linux的各种发行版了. Linux Journal评选出了·。
Within two years, the Linux ecosystem is projected to reach $50 billion, spanning the
enterprise computing, desktop/netbooks and embedded markets.
from []
Linux生态系统价值250亿美元 ]
对个人用户来说,哪些linux发行版是比较流行的呢, 看看[]右边的排行榜
发行版的分类
包管理机制:
debian(apt):Debian, Ubuntu,Kubuntu,...
rpm : Red Hat Enterprise Linux, Fedora,Open Suse, Centos,
其他:Gentoo
桌面环境的分类:
GNOME、KDE和X-Window之间的关系,可以简单地认为GNOME和KDE是并列关系,它们都是基于X-Window的桌面环境,通过X-Window其才能运行。GNOME和KDE是基于X-Window经过不同组织进行整合之后的桌面环境。
KDE项目是2006年由德国自由程序员发起的,采用了挪威奇趣(Troll Tech)公司的Qt图形界面库作为基础开发平台,C++是其主要开发语言。KDE项目发展很快,1999年KDE 1.1.2发行以后,基本成为Linux“事实”上的桌面标准。然而,由于KDE项目使用Qt库,其遵循的软件版权协议QPL不是真正的自由软件协议,所 以这在开源软件界引发了一个很大的非议,如以纯自由软件构成的Linux发行版Debian就拒绝使用KDE
为了与KDE相抗衡,世界最大的自由软件组织GNU(自由软件基金会)发起了GNOME桌面环境项目。GNOME采取了完全松散的自由软
件开发模式,整个项目由一系列独立的软件项目组成,这种松散的开发模式使得GNOME项目进展缓慢。与KDE不同,GNOME采用了符合GPL自由软件协
议的GDK、GTK作为其底层开发平台,也就是说GNOME是真正意义上的GPL自由软件。
Embedded Linux is the use of a Linux operating system in embedded computer systems such as mobile phones, personal digital assistants, media players, set-top boxes, and other consumer electronics devices, networking equipment ......
RT linux (Windriver, acquired by Intel)
Moblin (Intel)
Montavista (Montavista)
Android (Google)
uClinux
......
简述Linux 文件系统的目录结构
文件系统分级结构标准(FHS)试图以一种合乎逻辑的方式定义这些规则,而且在Linux上得到了广泛应用。FHS是以前Linux的文件系统结构标准(FSSTND)的更新版本,包含了从Linux、BSD和System V等系统上得到的教训与实践。参见 以了解有关FHS的更多信息
最常用的shell是bash
以下是一些不常见命令,基于bash:
ls /bin/sh -l
whoami
whereis whoami
which whoami
locate whoami
file /usr/bin/whoami
env | grep PATH
$? (这是一个有趣的shell命令)
Basically, after download and unpack the src tarball(XXX.tar.gz or XXX.tar.bz), enter the directory and do following three command:
./configure
make
make install
Linux不是架构的事实曾经引起了。
Linux kernel是的设计,简单说就是kenel负责完成和调度所有的任务.而操作系统研究者认为宏内核的设计有些过时, 微内核将是未来的方向(比如Mach kernel 和Windows NT kernel).Linus也部分同意这一点:
1. MICROKERNEL VS MONOLITHIC SYSTEM True, linux is monolithic, and I agree that microkernels are nicer. With a less argumentative subject, I'd probably have agreed with most of what you said. From a theoretical (and aesthetical) standpoint linux looses. If the GNU kernel had been ready last spring, I'd not have bothered to even start my project: the fact is that it wasn't and still isn't. Linux wins heavily on points of being available now.linux kernel中从2.0开始加入了一些MICROKERNEL的特性,比如可以动态加载的内核模块和一些用于动态注册的接口,使得现在的linux kernel兼有两者的一些优势.
首先还是看看维基百科的介绍
世界各地的人怎么把linux开发出来的呢,有人做了个著名的总结,
对linux内核源代码感兴趣的, 从得到代码,《Linux内核设计与实现》这本不是很厚的书提供了很好的入门。
linux是开源运动的一个成果,对open source 和 free software的论战感兴趣的话,看看 和
对GNU和Free Software做了很大贡献的.
其实做技术的人大多不是这么厉害和独特的, 大多数是外向和普通的,
还很幽默,比如linux之父linus,