Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是次正式向外公布的时间)。以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。 下面主要根据这五个基本线索来追寻一下Linux 的开发历程,它的酝酿过程,初的发展经历。首先分别介绍其中的四个基本要素(UNIX、MINIX、GNU 和POSIX,Internet 的重要性显而易见,所以不用对其罗嗦),然后根据Linux 的创始人Linus Toravlds 从对计算机感兴趣而自学计算机知识,到心里开始酝酿编制一个自己的操作系统,到初Linux 内核0.01 版公布,以及从此如何艰难地一步一个脚印地在全世界hacker 的帮助下推出比较完善的1.0 版本这段时间的发展经过,也即对Linux 的早期发展历史进行详细介绍 Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间。
Linux 系统支持十多种文件系统jfs,ReiserFS,ext,ext2,ext3,iso9660,xfs,minx,msdos,umsdos,Vfat,NTFS,Hpfs,Nfs,smb,sysv,proc 等.
一, ext ext 是个专门为 Linux 的文件系统类型,叫做扩展文件系统.
二, ext2 ext2 是为解决 ext 文件系统的缺陷而设计的可扩展的高性能的文件系统.又被称为 二级扩展文件系统
三, ext3 ext3 是由开放资源社区开发的日志文件系统,. ext3 被设计成是 ext2 的升级版本。
四, jsf jsf 提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。
五,ReiserFS ReiserFS 基于平 衡树结构的 、ReiserFS 文件系统在网上公布.ReiserFS 3.6.x(作为 Linux 2.4 一部分 的版本),设计成员相信的文件系统是那些能够有助于创建独立的共享环境或者命名空间的文件系统。
六,Xfs xfs 是一种非常的日志文件系统,它是 SGI 公司设计的.xfs 被称为业界 的,可升级性的文件系统技术.它是一个全 64 位,快速,稳固的日志文件系统,
目录树可以分为小的部分,每个部分可以在自己的磁盘或分区上。主要部分是根、/usr 、/var 和 /home 文件系统。每个部分有不同的目的。
每台机器都有根文件系统,它包含系统引导和使其他文件系统得以mount所必要的文件,根文件系统应该有单用户状态所必须的足够的内容。还应该包括修复损坏系统、恢复备份等的工具。
/usr 文件系统包含所有命令、库、man页和其他一般操作中所需的不改变的文件。 /usr 不应该有一般使用中要修改的文件。这样允许此文件系统中的文件通过网络共享,这样可以更有效,因为这样节省了磁盘空间(/usr 很容易是数百兆),且易于管理(当升级应用时,只有主/usr 需要改变,而无须改变每台机器) 即使此文件系统在本地盘上,也可以只读mount,以减少系统崩溃时文件系统的损坏。
/var 文件系统包含会改变的文件,比如spool目录(mail、news、打印机等用的), log文件、formatted manual pages和暂存文件。传统上/var 的所有东西曾在 /usr 下的某个地方,但这样/usr 就不可能只读安装了。
/home 文件系统包含用户家目录,即系统上的所有实际数据。一个大的/home 可能要分为若干文件系统,需要在/home 下加名字,如/home/students 、/home/staff 等。
虽然上面将不同的部分称为文件系统,但它们不必是真的分离的文件系统。如果系统是小的单用户系统,而用户希望简单化,可以很容易地放在一个文件系统中。根据磁盘容量和不同目的所需分配的空间,目录树也可以分到不同的文件系统中。重要的是使用标准的名字,即使/var 和/usr 在同一分区上,名字/usr/lib/libc.a 和/var/adm/messages 必须能工作,例如将/var 下的文件移动到/usr/var ,并将/var 作为/usr/var 的符号连接。
Unix文件结构根据目的来分组文件,即所有的命令在一个地方,所有的数据在另一个地方,所有的文档又在一个地方,等等。另一个方法是根据属于的程序分组文件,即所有Emacs文件在一个目录中,所有TeX文件在另一个中,等等。后一种方法的问题是文件难于共享(程序目录经常同时包含静态可共享的和动态不可共享的文件),有时难于查找 (例如man页在极大数量的地方,使man程序查找它们极其困难)。
根文件系统一般应该比较小,因为包括严格的文件和一个小的不经常改变的文件系统不容易损坏。损坏的根文件系统一般意味着除非用特定的方法(例如从软盘)系统无法引导。
根目录一般不含任何文件,除了可能的标准的系统引导映象,通常叫/vmlinuz 。所有其他文件在根文件系统的子目录中。
/bin 引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。
/sbin 类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。
/etc 特定机器的配置文件。
/root root用户的家目录。
/lib 根文件系统上的程序所需的共享库。
/lib/modules 可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。
/boot 引导加载器(bootstrap loader)使用的文件,如LILO。映象也经常在这里,而不是在根目录。如果有许多映象,这个目录可能变得很大,这时可能使用单独的文件系统更好。另一个理由是要确保映象必须在IDE硬盘的前1024柱面内。
/mnt 系统管理员临时mount的安装点。程序并不自动支持安装到/mnt 。 /mnt 可以分为子目录(例如/mnt/dosa 可能是使用MSDOS文件系统的软驱,而/mnt/exta 可能是使用ext2文件系统的软驱)。
/etc 目录包含很多文件。许多网络配置文件也在/etc 中。
/etc/rc or /etc/rc.d or /etc/rc*.d 启动、或改变运行级时运行的scripts或scripts的目录。
/etc/passwd 用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息。
/etc/fdprm 软盘参数表。说明不同的软盘格式。用setfdprm 设置。
/etc/fstab 启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表。 Linux下,也包括用swapon -a启用的swap区的信息。
/etc/group 类似/etc/passwd ,但说明的不是用户而是组。
/etc/inittab init 的配置文件。
/etc/issue getty 在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。内容由系统管理员确定。
/etc/magic file 的配置文件。包含不同文件格式的说明,file 基于它猜测文件类型。
/etc/motd Message Of The Day,成功登录后自动输出。内容由系统管理员确定。经常用于通告信息,如计划关机时间的警告。
/etc/shadow 在安装了影子口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读。这使破译口令更困难。
/etc/login.defs login 命令的配置文件。
/etc/printcap 类似/etc/termcap ,但针对打印机。语法不同。
/etc/profile , /etc/csh.login , /etc/csh.cshrc 登录或启动时Bourne或C shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。
/etc/securetty 确认安全终端,即哪个终端允许root登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权。
/etc/shells 列出可信任的shell。chsh 命令允许用户在本文件指定范围内改变登录shell。提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录。
/etc/termcap 终端性能数据库。说明不同的终端用什么"转义序列"控制。写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap 中查找要做的工作的正确序列。这样,多数的程序可以在多数终端上运行。
/dev目录 /dev 目录包括所有设备的设备文件。设备文件用特定的约定命名。
/usr文件系统 /usr 文件系统经常很大,因为所有程序安装在这里。 /usr 里的所有文件一般来自Linux distribution;本地安装的程序和其他东西在/usr/local 下。这样可能在升级新版系统或新distribution时无须重新安装全部程序。
/usr/X11R6 X Window系统的所有文件。为简化X的开发和安装,X的文件没有集成到系统中。 X自己在/usr/X11R6 下类似/usr 。
/usr/X386 类似/usr/X11R6 ,但是给X11 Release 5的。
/usr/bin 几乎所有用户命令。有些命令在/bin 或/usr/local/bin 中。
/usr/man , /usr/info , /usr/doc 手册页、GNU信息文档和各种其他文档文件。
/usr/include C编程语言的头文件。为了一致性这实际上应该在/usr/lib 下,但传统上支持这个名字。
/usr/lib 程序或子系统的不变的数据文件,包括一些site-wide配置文件。名字lib来源于库(library); 编程的原始库存在/usr/lib 里。
/usr/local 本地安装的软件和其他文件放在这里。
/var 包括系统一般运行时要改变的数据。每个系统是特定的,即不通过网络与其他计算机共享。
/var/catman 当要求格式化时的man页的cache。man页的源文件一般存在/usr/man/man* 中;有些man页可能有预格式化的版本,存在/usr/man/cat* 中。而其他的man页在次看时需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了。 (/var/catman 经常被清除,就象清除临时目录一样。
/var/lib 系统正常运行时要改变的文件。
/proc 文件系统是一个假的文件系统。它不存在在磁盘某个磁盘上。而是由在内存中产生。用于提供关于系统的信息(originally about processes, hence the name)。下面说明一些重要的文件和目录。
/proc/1 关于进程1的信息目录。每个进程在/proc 下有一个名为其进程号的目录。
/proc/cpuinfo 处理器信息,如类型、制造商、型号和性能。
/proc/devices 当前运行的配置的设备驱动的列表。
/proc/dma 显示当前使用的DMA通道。
/proc/filesystems 配置的文件系统。
/proc/interrupts 显示使用的中断,and how many of each there have been.
/proc/ioports 当前使用的I/O端口。
/proc/kcore 系统物理内存映象。与物理内存大小完全一样,但不实际占用这么多内存;it is generated on the fly as programs access it. (记住:除非你把它拷贝到什么地方,/proc 下没有任何东西占用任何磁盘空间。)
/proc/kmsg 输出的消息。也被送到syslog 。
/proc/ksyms 符号表。
/proc/loadavg 系统"平均负载";3个指示器指出系统当前的工作量。
/proc/meminfo 存储器使用信息,包括物理内存和swap。
/proc/modules 当前加载了哪些模块。
/proc/self 到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时,是不同的连接。这主要便于程序得到它自己的进程目录。
/proc/stat 系统的不同状态,such as the number of page faults since the system was booted.
/proc/uptime 系统启动的时间长度。
/proc/version 版本。
Linux何以备受青睐,致使除微软以外,国际上有名的硬、软件厂商都毫无例外地与之结盟、捆绑。甚至连世界IT的龙头老大“蓝后巨人”IBM也要“全面拥抱Linux”呢?
首先,Linux作为自由软件有两个特点:一是它提供源码,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上。这就吸引了世界各地的操作系统高手为Linux编写各种各样的驱动程序和应用软件,使得Linux成为一种不仅只是一个内核,而且包括系统管理工具、完整的开发环境和开发工具、应用软件在内,用户很容易获得的操作系统。
由于可以得到Linux的源码,所以操作系统的内部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。在必要的情况下,用户可以及时地为Linux打 “补丁”(这正是笔者前面文章中讨论的集市模式开发软件本质的内容),这是其它操作系统所没有的优势。同时,这也使得用户容易根据操作系统的特点构建安全保障系统,不会由于不了解不公开源码的 “黑盒子”式的系统预留的什么 “后门”而受到意外的打击。
第二,究其根本,Linux是一个UNIX系统变种,因此也就具有了Unix系统的一系列优良特性,Unix上的应用可以很方便地移植到Linux平台上,这使得Unix用户很容易掌握Linux。下面简要地描述UNIX亦即Linux的一系列特色。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。