cnhnln 发表于 2006-2-27 23:32:34

Linux基础知识

第一章 Linux基础知识 硬盘
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

第一章 Linux基础知识

硬盘
硬盘是可以存储大量信息资源的媒介。我们平时看到的硬盘是方方正正的一块挺沉的铁匣子,但是其实硬盘是圆的,加上一些控制电路以后,为了便于携带而设计成为方形外壳。但是硬盘真是圆的,不骗你,要不怎么叫做盘呢?第二,你需要知道的是硬盘可以进行分区。可以把硬盘分区成为很多个分区,看来分区即是一个名次也是一个动词。什么叫做名次的分区呢?现在的硬盘越来越大,存放的资源越来越多。为了更合理的管理使用硬盘资源,更有效的提高查询速度和访问质量,我们可以把硬盘划分为很多分区,分别存放一些信息。当你需要读取某一个资料的时候,系统会自动使用最近的磁头去读取,加快读取速度。硬盘分区是从硬件的基础上对资源进行合理管理的手段。
分区已经了解了,但是我们不能只有分区啊,我们得用一个方法来控制分区。Windows操作系统使用了盘符这个概念,用单一的字母来表示硬盘上的不同分区,比如,C盘,D盘等等。在Windows2000以前,C盘对应了第一个分区,D盘对应第二个分区,依此类推。到了Winows2000,这个对应关系可以自己调整了。
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。
为了保证文章的完整性,简单说说目录吧,其实大家都很清楚的。如果我们把数以万计的水果扔在一个箩筐里面是不是很难找?但是如果我们把苹果放在叫做苹果的箩筐里面,把梨放在叫做梨的箩筐里面……这样是不是大大简化了我们寻找指定水果的速度?这些水果如果是我们的文件,那么我们用的箩筐就叫目录。新的问题出现了,即使把桃子扔在叫做桃子的箩筐中,我们仍然很难从好几千个桃子里面找出来自四川成都龙泉驿的桃子啊。聪明的你一定想到在桃子的箩筐中再放入很多叫做四川啊,河北啊,广州啊这些名字的箩筐,把不同产地的桃子放进去。对!就这样!我们在一个文件目录下面可以再建立新的文件目录,把文件进行非常细致的管理。到这里你明白了什么叫做目录,还明白了目录是可以嵌套的,这就可以了。目录技术是从软件的基础上对资源进行管理的方法。
回到Linux对于硬盘的管理里面来:在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。把每一个分区和某一个目录对应,以后对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载-mount。这种对应关系可以由用户随时中断和改变。

SWAP交换分区
分区的知识大家已经熟习了,这里需要提一下交换分区。我们如果没有足够的内存,也许就不能运行某些大型的软件,解决的办法是在硬盘上划出一个区域来当作临时的内存,好像内存变大了。Windows操作系统把这个区域叫做虚拟内存,Linux把它叫做交换分区swap。虽然随着硬件价格的下降内存已经不大会限制我们了,但是交换分区这个概念却保留下来,而且有继续保留下去的原因,当然涉及到内核的问题,我们不多讨论,我们要说明的是,安装Linux时候建立交换分区时,如果你的内存只有64M或则128M,那么交换分区最好设置成为它的3倍,如果你的分区足够大,有256M或则512M,那么设置成为相同大小就可以了。但是请注意,最好大小为2的N次幂的数字。

分区格式
今天说了好多的与硬盘有关的问题,现在还要补充一个,就是分区格式。硬盘只是一个用电磁的方式纪录信息的媒介,我们可以通过不同的格式来管理。不同的操作系统选择了不同的格式,同一种操作系统也可能支持多种格式。微软的操作系统选择了fat16格式作为DOS的分区格式,往后windows95和windows98支持fat32格式,windowsNT使用NTFS4格式,windows2000以及XP支持NTFS5,也支持fat32,但是她们都不支持Linux上常见的分区格式。Linux是一个开放的操作系统,它最初使用ext2格式,后来使用ext3格式,但是它同时支持非常多的分区格式,包括很多大型机上UNIX使用的XFS格式,也包括微软的那些fat以及NTFS格式。
在给硬盘分区时就需要指定使用的分区格式。

掌握Linux的目录结构

既然目录是用来方便文件管理的工具,那么Linux下面不同的目录到底保存了哪一类的文件呢?

目录名称 意义

/bin 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。
/cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如“mount /dev/cdrom /cdrom”
/etc 该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
/lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp 用来存放不同程序执行时产生的临时文件
/usr 用户的很多应用程序和文件都存放在该目录下

Linux支持的硬件
总的来说,Linux对于硬件的支持有三句话概括:越新的硬件越难支持,越小的厂家的产品越难支持,越来越多的硬件被支持!
所以推荐大家使用著名厂家的成熟产品。

下一章我们要介绍Linux的安装。我们选择的Linux发行版是Redhat Linux 7.3,在安装之前请大家一定熟习我们介绍的硬盘分区的知识。




--



cnhnln 发表于 2006-2-27 23:33:38

Linux系统基础知识
第二章 Linux安装
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

第二章 Linux安装

下面我们介绍Linux的安装。各种Linux发行版本的安装各有不同,但是却大同小异。总的来说,除了国产的Linux以外,其他我们熟习的Linux都支持网络在线安装和硬盘安装。但是我们国内的用户使用宽带的现在并不多,硬盘安装方式又有一些麻烦,所以我们还是介绍光盘安装的方式。
Redhat Linux是国内市场上较为常见的Linux发行版本,甚至Redhat一度成为国人脑海中Linux的代名词。所以我选择Redhat作为第一次安装Linux时候的教材。其实MandrakeLinux安装界面比Redhat好看多了,不果似乎很难买到啊。往后的章节我还会详悉介绍的是Debian Linux的安装,不过那是后话了。

现在让我们假设你的硬盘是20G的,Windows98系统已经把这20G全部用完,具体如下:
C:前5G D:接下来5G
E:接下来5G F:最后5G
我们计划把Redhat安装在原来的F:盘上,那么现在请备份你的F:盘上的资料。

然后确定你的系统是由光盘引导的,如果不是,在电脑开机的时候按del键,进入主板BIOS设置,修改相关选项让你的电脑从光盘引导。然后把Redhat的第一章安装光盘放入光驱,开机。这时候你应该能够看到一些启动提示。相信大家都有大学英语的基本功,阅读这些东西是不成问题的。现在,你可以直接按回车键,启动图形界面的安装程序;也可以输入text然后回车,这样启动字符界面的安装。一般来说,图形界面占用更多的内存,安装程序会比字符界面下慢一些,但是图形界面更友好,考虑到这是我们第一次安装Linux,我们直接回车,进入图形界面的安装程序。

安装的第一步是要你确认它的版权信息。当然同意啦!Linux和Windows都有这一步,但是你所同意的版权协议却非常不同,具体的我们以后再说,总之你记住,Linux给你自由的世界,也许这个世界现在还有一些荒漠和戈壁;Windows却给你无限美好和宜人的牢笼。

现在请正确的选择你的键盘类型,一般pc104就可以了。好像在RedhatLinux下面还不支持win键。选择鼠标稍微麻烦一点,如果你的鼠标只有两个按钮并且没有滚轮,你一定要把那个“模拟三键鼠标”的选项选中,因为在Linux下面,鼠标的第三键非常有用。

Redhat会讯问你是安装Workstation还是Server还是Custom类型的系统,或者选择update升级原有的Redhat。我们选择Custom!

现在配置硬盘参数,也就是分区,我们不要选择自动分区,那样不安全,非常不安全,特别不安全。选择手动分区吧,我会教你的。在继续之前请确保你熟习了我在上一章里面介绍的硬盘分区的基本知识,如果忘记了,快回去看看吧。注意:硬盘分区会清除掉你硬盘上相应分区以前保存的信息!

我相信你已经把F:盘上要备份的资料全部备份了。现在让我们来看看你的每一个Windows的盘符对应什么硬件设备。
一般来说,C盘对应/dev/hda1
D盘对应/dev/hda5
E盘对应/dev/hda6
F盘对应/dev/hda7
现在选中F盘对应的/dev/hda7,删除它。然后在空闲的硬盘空间(应该有5G,因为我们删除了一个5G的F盘)上建立一个新的分区,选择分区类型为SWAP,也就是交换分区。它的大小应该按照上一章的方法选择3倍于实际内存的大小或者适当的数字。但是请注意,最好大小为2的N次幂的数字。
添加完成这个交换分区的设定,现在我们再添加一个分区,这个分区类型选择为ext3,然后有一个mount point之类的选项,也就是我们说的挂装点,设置成“/”。把它的大小设置成为剩下的所有空间的大小。这样把整个硬盘空间都利用起来。
检查一下是不是还有什么没有作对?如果发现有问题,现在修改还来得及,因为我们所做的修改还没有保存到硬盘里面去。如果一切无误,选择下一步,现在硬盘的内容将按照我们设定的方式变化。
是不是有点激动?哈哈,说不定会搞砸呢?我以前第一次安装Redhat用了7个小时才搞懂什么叫做挂装点。整个硬盘从头到脚被分区无数次,安装完成以后什么资料都没有,哈哈,说不定你刚才的某一步做错了会和我一样而可怜呢。不过如果不是切肤之痛,怎会记忆犹新?搞Linux就是需要大胆的尝试,就象邓小平同志说的,实践是检验真理的唯一标准嘛!

看完这段文字,你的硬盘应该格式化完了,应该到了选择安装什么软件了。如果选择全部安装的话(在最下面有这个选项)你会得到一个巨大无比,巨慢无比的系统,大概2G吧。因为完全安装会安装所有的服务器程序个无关紧要的所有的东西。除非你知道自己在干什么,千万不要这么作。看看吧,如果你有打印机,就把打印支持选上。一般默认的选项足够了,但是我还是建议大家安装Software Development和Kernel Development两个选项,这样方便以后安装新的软件。窗口管理器有很多,一个KDE,一个Gnome,还有一些比较小巧的比如WindowMaker(这是我的最爱)。KDE的外观类似Windows,适合初学者上手,但是Gnome更漂亮,速度也更快。我很少使用KDE,也没有什么KDE的汉化经验,所以我就教大家使用Gnome吧。以后我还会教大家使用WindowMaker的。

继续下去似乎到了软件安装的过程,一般20到30分种吧,就可以安装完所有的软件。

这段时见不要休息,继续看我下面的内容!!!呵呵

好像这时候Redhat会要求选择启动的方式是使用Grub还是Lilo,也许你现在很郁闷,都不懂,那么我就告诉你,选择grub吧,因为……虽然我更熟习lilo,以后好讲给你听但是grub对于初学者来说不容易出错,安装grub的位置选择MBR就可以。只有这样才能保证你既能启动Linux,又能启动Windows。

我知道大家都很累了,所以我很快的说完下面的步骤:它会问你时区的问题,中国人当然选择亚洲的上海,没有北京的选项。如果你住在大西南,选择重庆也不错。下一步关键,如果你想得到正确的时间,看清楚,它会问你是不是把本机时间和GMT时间对应,千万不要选啊!GMT实践是格林威治时间的意思。继续下去到了配置显卡的地方,如果你的显卡是ATI的显卡或者常见的3dfx Banshee/Voodoo3+或者Matrox g200/g400或者SiS的话,那么恭喜你,你的显卡能够被轻易的识别出来。如果Redhat没有识别出你的显卡,也不要着急,跳过这一步,我们安装完成以后再来配置。
其实我的显卡是ATI的显卡,Redhat能够自动识别,但是我还是喜欢跳过去,安装完成以后再来搞它。
它还会问你启动时候是用图形界面启动还是字符界面启动,保险起见,选择字符界面!
下一步声卡也是一样的,如果你的声卡识别出来了,那么没什么好说的,没有的话,就跳过去,有办法的。
如果你的电脑有网卡,比如宽带或者ADSL,那么你还应该配置网络,但是网络的情况太多了,1000个人也许就有1000种情况,后面再说,跳过!

咦,我好像忘了介绍设置root密码的问题。什么是root啊?root就是超级用户,一定要细致的设定这个密码,因为一旦忘掉了,似乎只有重新安装整个Linux。其他的选项,我没有说到的,选择默认值就可以了。

好了,大功告成。

--



cnhnln 发表于 2006-2-27 23:34:18

第三章 Linux 基本使用命令(基本篇)
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

第三章 Linux 基本使用命令(基本篇)-(高级篇在后面会有,这一章从实用的角度出发介绍基本的操作)

现在请输入你的用户名和密码,当然,我们输入root,这样获得一切管理权限!

你一定非常希望立刻看到那些非常漂亮的图形界面,但是也许我要让你失望了。我建议在没有使用图形界面以前,首先熟练的掌握基本的Linux命令,这样才是一个真正的Linuxer。从哪里开始呢?

1. ls 列出文件和目录的命令

你一定很想知道你的电脑里面有哪些东西,现在执行命令ls,啊,怎么什么都没有?当然啦,这是你第一次登录到这个系统,你的默认位置是你的个人目录,而不是系统根目录。你还没有在这个目录里面存放任何的个人文件,当然什么都没有啦。如果你是用root用户登录的话,你的个人目录就是/root目录;如果你是用普通用户登录,比如叫做kris,那么kris的个人目录是/kris。前面的/是什么意思呢?就是“根”的意思,就是最前面的那个目录,在根目录下面建立有很多的子目录,我们在第一章已经讨论过了。

ls命令有很多的选项,常用的是:

-A 选项用来列出所有的文件,包括那些隐藏的文件。为什么我们要隐藏文件呢?道理和你为什么要把情书藏起来不让爸妈发现是一样的。就是为了保密啊。现在执行ls -A看看?是不是有一个隐藏文件“.bashrc”被显示出来啦?聪明的你一定奇怪的发现这个文件名前面有一个点,对!记住,只要文件名前面第一个字符是一个“.”,这个文件就是隐藏文件。一个目录名前面的第一个字符如果是“.”这个目录就是隐藏目录。
-l 这个选项用来显示一个列表,包含了这个目录下面所有的文件的绝大部分属性的列表。你可以每个文件的大小,所有者,你的权限还有修改日期等等。
-R R的意思就是recursive递归,明显这个选项让系统显示出这个目录下面的所有文件以外,还要显示出所有子目录下面的文件。也就是把我们那一大堆水果全部抖出来。
--color 这个选项特别有用,我估计大家的显示器都是彩显吧,什么?你的显示器还是黑白的?天哪!既然是彩显,那么我们可以让ls命令用不同的眼色代表不同的文件类型。比如可执行文件用绿色,普通文件是白色,目录是蓝色。也许你会问,目录也是文件吗?对的,在Linux里面一切都是文件,所有的硬件设备都用一个文件来代替,比如你的软驱,就是用/dev/fd0来代替的。目录也是一个文件。
--help 这个选项几乎是每一个Linux命令都有的,用来显示出该命令的帮助信息。

2. cd 和 mkdir 以及 rm 改变当然所在目录,建立新目录以及删除目录命令

趁热打铁的,刚才说了目录,我们每一次登录都有一个默认目录就是我们的个人用户目录。我们怎么才能到其他的目录去呢?cd就是用来改变当前所在的目录的。前面我们说过,“/”代表根目录,那么执行cd /就可以进入根目录。不试一下吗?
让我们看看根目录下面有哪些文件和子目录吧,执行ls,我们发现,根目录下面有一个目录名子特别变态,叫做usr,进去看看,cd usr,看看这里面有什么?你会发现一个更psycho(变态)的目录叫做src,进入src目录看看?没什么好玩的。那么我们现在回到刚才的usr目录,怎么做?是不是cd usr?执行试一下,好像不行,系统报告出错 cd: usr: No such file or directory。这是怎么搞的?问题在于我们现在所在的目录是/usr/src下,我们执行cd usr的意思是进入/usr/src/usr目录而不是/usr目录。正确的方法是cd /usr。
就好比你在中华美食的箩筐里面看到一个四川的箩筐,里面有一个成都的小箩筐,现在你进入以后发现成都的小箩筐里面有一种叫做“麻辣烫”的很辣的食品。你大饱口福以后想要吃一些甜点,于是准备去福州。你能站在成都的箩筐里面去福州吗?当然不行,福州并不在成都的箩筐里面啊,你应该进入“/中华美食/福州”而不是“/中华美食/四川/成都/福州”对不对?
好的,一个问题出现了,难道我每一次进入一个目录,都要用/usr/src...这么复杂的方式来表示吗?不一定。我们用“..”的方式来表示上一层目录。如果你现在在/usr/src目录下,进入/usr目录有两种办法:cd /usr和cd ..他们是一样的。

怎样才能知道我现在在哪个目录?用命令pwd,这个命令没有什么好说的,执行一次就知道了。

现在我想在我自己的个人目录里面建立一个目录叫做LoveLetter。我应该首先回到我自己的目录,这里有一个简单的方法,就是直接运行cd不带任何参数,这样就可以回到自己的目录,当然也可以cd /root或者cd /home/kris,看你是用什么用户登录的。
进入我自己的目录以后,建立新目录的命令是
mkdir 新目录名
我执行 mkdir LoveLetter 就可以建立一个新的叫做LoveLetter的目录。进入这个目录看看?什么都没有。不着急,慢慢来。我都不着急你急什么?
突然我想起这台电脑我的爸妈也要使用,他们看到我的情书目录怎么办?你忘了刚才我说的可以用加一个点“.”在前面的方法来隐藏目录和文件的?我们可以改变这个目录的名字,但是这个命令我准备等会儿讲,现在我们用一个很无聊的办法来完成这个要求。这个办法就是删掉刚才建立的oveLetter目录在新建一个.LoveLetter目录,之所以说这个办法很无聊,是因为我们现在是在做实验,如果来真的,你原意删掉你的情书吗?是不是另有新欢啦?哈哈。

删除目录的命令其实也可以删除文件,就是rm。
rm 待删除的文件名/目录名
我记得Redhat会提示你是不是真的要删除。按y就是确定,按n就是取消。如果Redhat没有提示你,那么等会请根据我说的方法修改一下系统让它提示咱们。免得以后心痛。删除一个文件很简单。麻烦的是删除一个目录,如果一个目录里面已经有文件,rm是不让直接删除的,你必需先把目录里面的所有文件删除,再删除目录。但是有一个参数可以改变一下,就是 -rf ,这个参数有一定的危险性,因为即使系统本来要提醒一下是不是真的删除目录,加上这个参数也不会有提示了。执行rm 目录 -rf会在一眨眼的时间里面让你的资料下课!
那么我现在就删除LoveLetter目录了:rm LoveLetter -rf
建立一个新的目录mkdir .LoveLetter
现在ls看看,是不是看不到LoveLetter目录了?但是ls -A还是能看到的。所以这种隐藏方式只能偏偏自己,真正让你的文件安全的方式还是以后再讲吧。

3. mv 改变文件名和目录名的命令
cp 复制文件和目录命令
man 命令使用方法参考工具

mv 老文件名 新文件名
mv 老目录名 新目录名
就可以改变文件或者目录的名字。
我现在想要把刚才的这个目录.LoveLetter改名回去,因为这种无聊的隐藏方式很变态,我们有更高级的方法来做这样一件事情:就是不要告诉爸妈你的密码!!!
mv .LoveLetter LoveLetter

cp命令用来把一个文件复制成为一个新的文件,

cp 老文件名 新文件名

这个老文件明和新文件名如果在同一个目录下面,那么当然需要名字不一样,很简单的道理,如果文件名一样何必建立两个文件?如果新老文件在不同的目录,我们就可以让它们有相同的名子。下面的例子说明了这一点:

cp LoveLetter LoveLetter_yesterday 新的文件LoveLetter_yesterday和旧的LoveLetter在同一个目录,所以名子不一样。
cp LoveLetter /home/LoveLetter 新的文件在/home目录下面,但是旧的文件LoveLetter在某一个用户的个人目录下面,当然两者名子可以相同。

cp命令也可以复制整个目录,但是现在我们暂时不讲这么复杂。其实cp还有rm以及ls这些命令不仅是整个Linux的基本命令,更包含了非常多的功能。如果大家有兴趣,可以使用man

man 命令名字

比如man ls,这样就可以看到所有ls命令和参数的详悉解释,尤其是一部分常用的命令的man帮助已经由志愿者翻译了,大家看起来更容易。

一点幽默

好了,说了好多东西了,我想休息一下,给大家说一个有趣的事情,我们说了好多命令和目录的名子,你们是不是觉得有点奇怪。说实在话,我第一次看到usr这个目录时也不知道是什么意思,后来才发现以下对应关系:
usr -> user
ls -> list
mkdir -> make dir
rm -> remove
src -> source
mv -> move
cp -> copy

是不是很有趣,在UNIX世界,包括Linux世界,人们的想象力就是这么无敌!简写居然能简写成这样子。大家一般的想法是取一个单词的前三个或者前四个字母作为简写,可是UNIX的牛人就是喜欢把move简写成为mv,真不知道他们怎么想的。大家一起捉摸吧


4. nano 和 vi编辑文件的命令 和 cat 以及 more显示文本文件

nano是一个小巧自由,并且友好的编辑器,我认为nano更适合初学Linux的朋友使用。我们现在只学习怎样编辑一个文件以及怎样保存。

nano 文件名

如果你写的文件名已经存在,那么就打开并且编辑,否则就建立一个新的文件。编辑的方法还用说吗?呵呵,当你想要退出的时候,按ctrl+x,nano会问你是不是保存编辑的文件。按Y就是保存,按N就不保存。

nano最大好处在于用户可以不用记忆太多的操作键,大部分常用的功能的操作方法都在屏幕下放列出了。新手需要注意的是“^X”就是按住ctrl键不放再按X的意思。

下面简单的介绍vi。vi是一个非常强大的编辑软件。它太庞大了,足够写一本书专门来讲解。我们这里从使用的角度出发,讲一下vi的用法。
vi有两种模式,一种是命令模式,一种是编辑模式。进入vi以后,默认处于命令模式。

现在我们执行vi LoveLetter。进入以后,按一下键盘上的Insert功能键或者i键可以进入编辑状态,可以插入字符,再按一下Insert变成复盖模式,这两种模式的区别很容易体现,大家尝试一下就可以了。上下左右四个方向键可以移动光标。基本的编辑命令和Windows里面没有区别。是不是很容易呢?当你把需要的内容输入完成以后,我们要保存,这时候按一下ESC键从编辑模式回到命令模式,首先输入一个冒号“:”,也就是按住SHIFT键不放再按分号“;”这样首先输入一个“:”,然后,输入w,回车,就可以保存我们编辑的内容到LoveLetter文件。现在我们按一下Insert就可以继续编辑。再按ESC,输入“:”,再按w又可以保存。可是现在我们不需要保存,我们想要不保存就退出,怎么做呢?当我们输入w的时候是write的意思,保存,那么我们输入q就是quit退出的意思。好,输入q,回车,vi提示我们刚才进行的修改还没有保存,所以记住!一旦需要放弃我们的修改,不能直接用q命令退出,而需要用“q!”命令。输入q!,好了,退出了。
我们想看看我们刚才编辑的LoveLetter是不是真的保存好了,再vi LoveLetter,ok,看到了吧?现在我们想要直接退出,就可以只输入“:q”就可以了,不用输入那个“!”因为我们没有修改文件内容。如果我们修改一下这篇文章,我们在退出的时候可以输入“ESC : wq”就可以了。不需要把w和q分成两次输入。

vi的最最基本用法说到这里差不多了,要是你还想多了解一些vi的知识,在进入vi以后直接按F1就可以了,有详悉的帮助和教学。

其实刚才我们想要看一下编辑的LoveLetter是不是保存好了,不用再vi进去的,只需要用命令

cat LoveLetter

就可以了。cat就是用来显示文本文件内容的命令。如果我们的文本文件很长,一个屏幕显示不完,cat是不会自动分页的。我们可以换用命令

more LoveLetter

more命令显示文本文件时,如果内容过多,会自动的在每一页结束时暂停下来,等到用户按一下空格键再继续。

5. 最重要的命令:halt reboot 关机和重新启动命令

在Linux里面,不能够直接用电源按钮关机,也不能直接用reset按钮重新启动,这对系统,尤其是硬盘有比较大的影响。关机命令是halt,重启动命令是reboot。其实还有shutdown命令完成类似功能,需要的话,请用今天学会的man命令学习使用。

--



cnhnln 发表于 2006-2-27 23:40:07

第四章 X的配置
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

第四章 X的配置

虽然文章写得不好,但是我还是希望我的文章为公社的朋友提供帮助,和以前一样的,这个系列教程的文章我只在公社发表,希望大家捧场。

我的文章耽误了很久了,很抱歉。前段时间因为我一直忙着找工作,又生病一场,所以文章的事情一推再推,现在终于可以奉献给大家了。

这一章我主要介绍X系统用的主要配置文件XF86Config-4,我采用了对照的方法介绍,一边贴出我的XF86Config-4文件,一边介绍具体的内容。这篇文章对于大家没有什么立杆见影的帮助,不果可以让你对于X的只是有一个基本的了解。

XF86Config-4文件是X系统的主要配置文件。在Redhat 8以前版本中都叫做XF86Config-4这个名字,Redhat 8已经不再叫做这个名字。

编辑这个文件需要小心谨慎一点,因为一点错误,你的X将不能启动。不果没关系啦,改回来就是了学习Linux最好的办法当然还是求助于男人(man),大家有什么问题尽管看看man的帮助就是了。如果你要删除文件中的内容,最好不要直接的删除,而应该在前面加上#符号把它变成注释。

在Redhat 8以前的版本中,X的配置工具是Xconfigurator,在Debian中X的配种方法是:
dpkg-reconfigure xserver-xfree86
当然你都得用root的身份来运行。

在/usr/share/doc/xfree86-common/FAQ.gz文件中你可以看到具体的技巧。


第一段是Files段,这个部分用来配置X系统说能够使用的字体,每一行都代表一个目录,保存了具体的字体和字体的配置信息。
代码:

Section \"Files\"
FontPath \"/usr/X11R6/lib/X11/fonts/xp\"
FontPath \"/usr/X11R6/lib/X11/fonts/XChinese\"
FontPath \"unix/:7100\" # 这是本地字体服务器
# 如果本地字体服务器出了问题,我们可以使用下面的配置
FontPath \"/usr/lib/X11/fonts/misc\"
FontPath \"/usr/lib/X11/fonts/cyrillic\"
FontPath \"/usr/lib/X11/fonts/100dpi/:unscaled\"
FontPath \"/usr/lib/X11/fonts/75dpi/:unscaled\"
FontPath \"/usr/lib/X11/fonts/Type1\"
FontPath \"/usr/lib/X11/fonts/Speedo\"
FontPath \"/usr/lib/X11/fonts/100dpi\" #这两个字体是每一个X
FontPath \"/usr/lib/X11/fonts/75dpi\" #系统都必需安装的英文字体
EndSection


下面的是模块段,用来配置X系统加载的模块。
代码:

Section \"Module\"
Load \"xtt\" #gtk1使用的字体引擎,效果好,速度稍慢
Load \"GLcore\" #如果你是用的是Nvidia的显卡,似乎一定要注消掉这一行
Load \"bitmap\"
Load \"dbe\"
Load \"ddc\"
Load \"dri\"
Load \"extmod\"
# Load \"freetype\" #如果你使用了xtt模块,那么freetype模块就需要注消掉
Load \"glx\"
Load \"int10\"
Load \"record\"
Load \"speedo\"
Load \"type1\"
Load \"vbe\"
EndSection


下面的段是用来配置你的键盘的,属于“输入设备”
代码:

Section \"InputDevice\"
Identifier \"Generic Keyboard\" #这是你的键盘的名字,随便你啦:)
Driver \"keyboard\" #键盘的驱动…哇,键盘也有驱动
Option \"CoreKeyboard\" #如果你有多个键盘,那么你需要在这里指定哪一个键盘是主要的键盘
Option \"XkbRules\" \"xfree86\"
Option \"XkbModel\" \"pc104\" #键盘的分布格式,一般来说
Option \"XkbLayout\" \"us\" #美国104键盘是大家通用的。
EndSection


这里配置你的鼠标,当然你可以配置两个鼠标,如果你有的话
代码:

Section \"InputDevice\"
Identifier \"Configured Mouse\" #鼠标的名字
Driver \"mouse\" #鼠标的驱动
Option \"CorePointer\"
Option \"Device\" \"/dev/input/mice\"
#注意,这里很重要,这是鼠标的设备文件
#我的鼠标是光电鼠标,用的USB接口,对应的鼠标文件是/dev/input/mice
#如果你的鼠标是普通的滚轮鼠标,用的是PS2接口,那么你应该使用
#/dev/mouse或者/dev/psaux或者/dev/ttys0这个设备
Option \"Protocol\" \"ImPS/2\"
#这是鼠标的类型,如果不是是滚轮鼠标,那么使用PS/2
Option \"Emulate3Buttons\" \"true\"
#在Linux系统中,鼠标的第三个键非常有用,
#如果你的鼠标没有第三个键,那么我们应该允许使用双键同时点击来模拟
Option \"ZAxisMapping\" \"4 5\"
EndSection


下面的设备是显卡,这是最头痛的设备了,如果你的显卡太新潮,很有可能不能支持哦。Nvidia的GForce2显卡就必需自己编译显卡的驱动程序才能使用
代码:

Section \"Device\"
Identifier \"Generic Video Card\"
Driver \"ati\" #如果你是Nivida的显卡,这里应该是\"nvidia\"
EndSection



这个设备是显示器。
代码:

Section \"Monitor\"
Identifier \"Generic Monitor\" #显示器的名字
HorizSync 30-60 #显示器的频率,一半来说你的显示器
VertRefresh 50-75 #应该可以达到我的这个水平
#因为我的显示器是15\"的老显示器了
#大家的电脑都比我的好吧?
Option \"DPMS\"
EndSection


下面是综合以上你的配置的设备的各种显示效果
代码:

Section \"Screen\"
Identifier \"Default Screen\" #效果的名字
Device \"Generic Video Card\" #你可以指定你的显卡的名字
Monitor \"Generic Monitor\" #指定你的显示器的名字
DefaultDepth 24 #默认的颜色深度
SubSection \"Display\"
Depth 1
Modes \"1024x768\"
EndSubSection
SubSection \"Display\"
Depth 4
Modes \"1024x768\"
EndSubSection
SubSection \"Display\"
Depth 8
Modes \"1024x768\"
EndSubSection
SubSection \"Display\"
Depth 16
Modes \"1024x768\" #在这里你可以指定扫描频率例如
#\"1024x768 @ 85\"就是用85mhz的频率
EndSubSection
SubSection \"Display\"
Depth 24
Modes \"1024x768\"
EndSubSection
EndSection



最终你必需定义下面的段用来告诉X服务器你使用的配置
代码:

Section \"ServerLayout\"
Identifier \"Default Layout\" #刚才我们给我们的配置取的名字
Screen \"Default Screen\" #给我们的效果取的名字
InputDevice \"Generic Keyboard\" #我们的键盘的名字
InputDevice \"Configured Mouse\" #我们的鼠标的名字
#这些名字一定要在前面的配置中已经定义
EndSection

Section \"DRI\"
Mode 0666
EndSection



一般来说我们X启动时候会遇到的问题是:
1:no screen found
这有可能是你没有正确的定义所需要的效果,也有可能是你的其他部分定义出错倒置你的效果不能实现
2:xtt和freetype的冲突,注消一个就可以了
3:驱动没有找到,如果你的显卡非常的新潮,那么多半是这个错误了,编译你的驱动吧…


--



cnhnln 发表于 2006-2-27 23:47:24

Linux系统基础知识
第五章 Linux命令和技巧

第五章 Linux命令和技巧
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

第五章 Linux命令和技巧

1. mount umount 命令

在Linux里面想要使用你的软盘和光盘可不是像在Windows里面那么的危险。
想想看如果你在Windows里面安装一个光盘里面的软件或者玩游戏的时候,你的女朋友,甭管是第几个女朋友,因为对你每天打游戏而不做晚饭,乃至于别人做了晚饭你居然没时间吃,而气急败坏的按了一下光盘的Eject按钮……哈哈,害怕了?放心,在Linux里面这种事情绝对不用你操心。

要使用光盘,首先把光盘安放好以后,执行以下命令:

mount -t iso9660 /dev/cdrom /mnt/cdom 把光驱挂装到/mnt/cdrom目录

-t参数是指定光盘的文件系统类型,一般来说,光盘都是用的iso9660标准的格式。接下来的/dev/cdrom是你的光驱对应的设备文件,我们前面说过每一个硬件设备都对应了一个标准的设备文件。最后一个/mnt/cdrom目录是你的一个本地硬盘上的目录,在使用以前如果发现没有这个目录,可以建立一个。当然也不一定非要使用这个目录,你甚至可以很变态的使用mount /dev/cdrom /root命令把你的光驱挂装到你的的/root目录,这样一来你的/root的内容将不再是原来的内容,直到你取消挂载。

下面的命令取消挂载:

umount /mnt/cdrom 或 umount /dev/cdrom

这两个命令都可以把刚才挂装上去的光盘取消挂载,只有这样你的光盘才能取出。不行的话,你再执行一次挂装命令,然后按一下光驱上的Eject按钮,看看有没有什么反应啊?没有,对不对?这就是Linux的一个优点,虽然操作起来有点麻烦的感觉,但是想想看,非常安全和稍微的复杂,你选哪一个?

使用软盘的方法也很类似:

mount /dev/fd0 /mnt/floppy

/dev/fd0是你的软盘对应的设备文件,后面的自然是你的挂装目录。但是如果这个时候你想要尝试能不能在没有取消软盘的挂装就推出软盘,你就是一个非常BT的人了。有没有搞错?软盘的退出是机械的操作,你硬要按出来,我有什么办法?那么取消软盘挂载的方法也是很类似的:

umount /dev/fd0 或 umount /mnt/floppy

其实挂装时候第一个参数-t,可以省略,因为系统会自动的判断应该用什么样的格式来识别。不过知道了我们用的软盘或者光盘的格式,对于挂装一个ISO文件有帮助。

mount -t iso9660 -o loop /home/kris/somewhat.iso /mnt/cdrom

我们都知道现在网上有很多的ISO文件,就是把光盘的所有内容打包成为一个文件,方便网上的传送。我们获得这样的文件以后不一定非要用刻录机把它刻录成为光盘,我们只要用上面的命令就可以把光盘的ISO文件挂载到/mnt/cdrom目录了。第一个参数-t iso9660就是光盘使用的文件系统格式,第二个参数是loopback的意思。

取消挂装:umount /mnt/cdrom

2. 管道命令

管道命令是Linux系统的一个很重要的内容,这里我们只介绍一些简单的。

首先我们已经学过一个命令cat,用来显示一个文件的内容,但是你有没有遇到一个文件很长,一页显示不完的情况?如果你需要把一个很长的文件分页显示,每当你按一个键才显示下一页的话,你可以用more命令:

more LoveLetter
这样,LoveLetter的内容显示在屏幕上,没到一页就自动停下来,等待你的按键,然后才继续显示下面一页。

可是如果我们用ls命令显示一个目录的所有文件的时候遇到一页不能显示完的情况该怎么办?这就需要一个管道符号“|”,就是“\\”按钮上面的字符:

ls /dev | more

下面,我们遇到一个新的问题,我们不仅仅想要看看/dev目录下面有哪些文件,我们还希望用一个文件来纪录刚才ls的命令显示的所有结果,难道需要用手工输入?不需要,我们介绍两个管道符号:“>”“>>”,也就是大于符号啦。

ls /dev > filenames.txt

还有一个管道符号是由两个大于号组成的“>>”,它和刚才“>”的区别在于一个大于符号的管道是用来创建一个新的文件filenames.txt,如果已经有了同名的文件就复盖掉以前的内容;而两个大于符号的管道是用来在已经存在的文件后面追加新的内容,如果没有这个文件就创建它。

现在我们vi filenames.txt看看一共有多少行,是不是1000多行啊?我们运行

ls /dev >> filenames.txt

再来vi filenames.txt看看,是不是一共2000多行啦?

其实这两个管道符号很容易记忆,向左边的箭头意思就是把前面命令的内容输入到后面的文件中去,刚才那个“|”管道符号是用来把前面命令的输出结果当作后面一个命令的输入数据。下面我们看一个和刚才“>>”刚刚相反的管道符号“<<”:

cat >> friends << \"EOF\"
> a
> b
> c
> EOF
运行第一行以后,意思就是把我们接下来的输入内容保存到friends文件里面,当我们输入“EOF”的时候结束。“<<”的意思就是向前面的命令传送一个数据。
中间我象征性的输入了a b c三行,每一行前面的“>”是系统自动产生的提示符号。第四行输入“EOF”系统就保存刚才输入的a b c三行到一个叫做friends的文件里面去。
现在我们cat friends看看是不是刚才的输入成功的保存了。怎么样,同样的命令,使用不同的管道符号,即可以显示文件内容,也可以用来创建文件,这就是管道符号的强大

3. Linux使用技巧(没有整理完成,有待大家的帮助)

Linux中有太多的使用技巧,这里慢慢的总结:
4. 基本命令总结

1) ls

ls --color=never *.txt > report 不显示文字颜色,将所有txt文件记录到report文件中

2) cd
cd ../ 到上一级目录
cd ../.. 到上二级目录
cd ~ 进入用户的个人目录,root用户就是/root目录,kris用户就是/home/kris目录

3) rm
rm -fr 目录名 直接删除一个目录和里面的所有目录,没有任何提示

4) cp
cp 源目录 目标位置 -R 复制原目录里面所有的文件和子目录的内容

5) echo
echo message “我爱你” 在字符界面下面显示一些内容,这里是“我爱你”

6) export
export LC_ALL= 定义一个变量LC_ALL并且设置为空NULL
export LANG=zh_CN.gb2312 定义一个变量LANG的值是zh_CN.gb2312
export http_proxy=\"http://xxx.xxx.xxx.xxx:port\"
定义http代理服务器

7) find
find -iname [目录] 文件名 在指定目录里面(如果不指定目录就是当前目录)查找指定文件名的文件

grep
ps -A | grep some_command

用ps命令加上-A参数显示所有的当前运行的进程,用管道符号“|”加上grep命令检索是否有我们指定的some_command运行

9) lynx
lynx http://www.google.com/

字符界面的网络浏览器,我们这里用来浏览http://www.google.com

补充一点,没umount软盘就直接取出的话,可能软盘上更改的内容还没写进软盘,因为linux采用的是在系统空闲或缓冲区已满的时候才进行写盘操作的(提高效率??),有时你往软盘里拷贝了一个文件,没umount就直接取出软盘的话,可能那个文件还在缓冲区,没拷贝进去.因此,正确的方法应该是先umount /dev/fd0,然后等软盘的灯灭了后再取出软盘,这样就保证所有的写盘操作都已经完成.


--



cnhnln 发表于 2006-2-27 23:47:48

Linux安装的几点经验
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux安装的几点经验
  有关于Linux操作系统的好处许多文章都已经有介绍过了,想必大家一定都知道一些,前不久,我在我的电脑上安装了一套Linux操作系统(版本是Red
Hat Linux 7.3),安装过程中有一些收获和体会,在此想通过这篇文章与各位交流一下,也算是体现一下Linux所倡导的共享精神。

  1. 安装前一定要对硬盘规划好,即确定好Linux安装在哪个分区。因为Linux支持的分区格式:Linux Native(根分区)和Linux
Swap(数据交换区),与Win 9x支持的分区格式FAT、Windows NT支持的分区格式NTFS,他们之间互不兼容。也就是说,如果你还要继续使用Win
9x、NT的话(相信大多数人会是这么做的),Linux就必须安装在单独的分区下。另外,Linux应安装在硬盘分区的最后一个扩展分区。例如:原来分区为C、D、E、F,一定要将Linux安装在F盘。如果你将Linux安装在了D盘,那么进入Win
9x后,原来的E盘成了D盘,F盘成了E盘。虽然各盘的软件都还能运行,但是桌面、开始菜单的快捷键却都已无效。更麻烦的是注册表内还是原先E、F盘的信息。
  2. Linux的Swap分区swap的大小作的跟内存一样大就是了,最大128M。Native 分区的大小由你要安装的Linux组件多少决定,但最少要保证240MB。由于现在Linux的应用软件比较少,Native分区也不必留的太大。我建议Native分区不要超过2.5G。

  3. 由于安装过程中会询问一些有关硬件的信息,因此要提前搜集好PC硬件方面的信息。硬件信息主要有显示器、显卡、鼠标、键盘等。特别是显示器的信息,将直接决定你安装Linux后,使用图形界面程序fvwm95的效果。

  4. 如果Linux的安装事用Text方式的话那可比Windows的安装麻烦得多。首先,安装时它不支持鼠标,你必须频繁使用Tab、箭头、空格、回车等键做出选择。另外,如果你对满屏的英文没有十分把握,你手边最好放本字典。不过我们安装以默认的就可以,一路都事图形界面,它的安装和以前有了很大的改观。与windows的安装的区别在逐渐的缩小。

  5. 由于Linux系统区分大小写,所以在安装、使用linux的过程中输入命令时,请注意大小写。
  6. 下面谈谈Linux、Win 9x、NT多重启动方法。首先,在安装Linux的过程中,最好按照最后的要求制作好一张启动盘(Bootdisk)。还有安装过程中,系统会要你选择Linux的启动方法(我们一般选择默认grub)。这里有两种方法选择:Master
Boot Record和First Sector of Boot Partition。第一种方法是直接从C盘,通过Linux系统的grub多重引导系统,选择某种操作系统启动;第二种方法是通过启动盘启动。这是因为毕竟现在大多数情况我们还是要使用Win
9x(或NT)系统。这样,平时启动时要进入到Windows系统(同时装有Win 9x、NT、MS-DOS时,还可通过NT的多重引导程序,做出进一步的选择,进入其中其他的一个系统),如果只安装一种linux我强烈建议使用第一种方法启动,在开机的时候可以通过选择菜单选择你所要进入的操作系统。如果选择第二中方法一般是安装两个以上的linux等特殊情况。然后再通过配grub(有时事lilo,不过他功能不如grub)多重引导。

  Linux安装完成后,等待你的是深入学习它,了解它的好处。祝你在这个“新星”中,实现自己的梦想。

--



cnhnln 发表于 2006-2-27 23:48:34

linux文件系统
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

linux文件系统([email protected]


  Linux支持数量众多的本地文件系统类型和几种通过网络访问远程磁盘的文件系统,分析/proc/filesystems文件的内容即可找出当前Linux内核提供了对哪些文件系统的支持。
  Linux默认直接支持的文件系统是ext2文件系统。
  一,exe2文件系统


  当前,ext2文件系统(即second extended filesystem)是Linux默认直接支持的文件系统。ext2文件系统和其他现代Unix使用的文件系统非常相似,但更接近于BSD系统所用的Berkeley
Fast Filesystem。ext2文件系统的最大容量是4 TB,但目前它的最大文件大小被Linux内核限制为2 GB。


  ext2的核心是两个内部数据结构,即superblock和inode。superblock是一个包含文件系统重要信息的表格,比如标签、大小、inode的数量等,它是对文件系统结构的基础性的、全局性的描述。因此,没有了superblock的文件系统将不再可用。由于这个原因,文件系统中不同位置存放着superblock的多个副本。

  inode是基本的文件级数据结构,文件系统中的每一个文件都可以在其中一个inode中找到其描述。inode描述的文件信息包括:文件的创建和修改时间,文件大小,实际存放文件数据的块列表,等等。对于较大的文件,块列表可能包含附加数据块列表的磁盘位置(称为间接块),甚至有可能出现二重或三重的间接块列表。文件名字通过目录项(Directory
Entry)关联到inode,目录项由“文件名字-inode”对构成。
  二,创建和管理文件系统


  Linux提供了大量用于创建和管理文件系统的工具。接下来我们将以新增磁盘(或分区)为线索,介绍各种要用到的工具。尽管完成这一任务的过程并不复杂,但这些操作还得在Linux命令行进行,这是因为大多数图形界面的工具在这方面的支持非常有限。
  1,确定设备文件
  为新加入的物理磁盘(或磁盘分区)创建文件系统之前,首先必须知道该磁盘具体的设备名字。我们可以用好几种方法来找出它的设备名字。例如,可以通过dmesg命令分析启动日志(通过管道传送给grep,并搜索d);如果已经用syslog截取,则可以查看日志文件。另外,大多数Linux发行版都默认启用/proc文件系统,如果你也使用了它,则可以分析/proc/partitions文件,查看系统认可的所有磁盘分区的清单。


  有时我们需要手工为磁盘创建设备文件,但这种情况极其罕见。设备文件可以用/dev目录下面的MAKEDEV脚本创建。例如,下面的命令将为第六个SCSI磁盘创建设备文件:

# cd /dev; MAKEDEV sdf
  2、创建分区
  确定磁盘的设备文件之后,接下来就要用fdisk之类的工具将磁盘分区。输入fdisk命令并在参数中指定目标磁盘
即可启动该工具:
# fdisk /dev/sdf


用fdisk修改好分区定义之后,可以用W命令保存更新后的分区表,用Q命令直接退出cfdisk则表示忽略所有已经作出的改动。只要对磁盘分区表作了任何实质性的改动(即,不仅仅指定分区标签或改变分区类型),则在继续处理之前
应当重新启动系统。
  3,创建文件系统
用mkfs命令创建文件系统(或者,更精确地说是用mke2fs命令。mkfs是一个统一的前端工具,为所有不同文件系统类型的创建命令提供)。如下例所示,该命令最简单的形式是通过-t参数指定文件系统的类型,然后加上创建该文件系统的分区。下面这个命令在第二个SCSI磁盘的第二个分区上创建一个ext2文件系统:

#mkfs -t ext2 /dev/sdb2
# mke2fs /dev/sdb2
  上面的第二个命令是直接使用mke2fs时的等价命令。
mke2fs的参数
-L label
指定分区的标签(最长11个字符)。
-b size
文件系统的块大小,以字节计,默认值1024。块是文件系统分配磁盘空间的单位。
-c
在创建文件系统之前检查分区的坏块。
-m percent
指定保留的文件系统空间百分比,这部分空间只能由root访问。默认值是磁盘的百分之五,这是传统Unix默认值的一半。在今天普遍使用大容量磁盘的情况下,即使是这个百分比也值得再加斟酌,比如可以将它降低到百分之二或者三。

-i ratio
指定每个inode的字节数,即为每个指定大小的字节块创建一个inode。默认值是4096,这个值所创建的inode通常超过实际可能用到的,但一般没有必要改变它,因为节省下来的磁盘空间非常有限。另外,用“-N
数字”可以显式地指定创建inode的数量。
-v -q
分别表示详细输出或简略输出
  4,其他工具
  Linux下有许多用于检测现有ext2文件系统状态以及重新进行配置的工具。tune2fs就是其中一个,它的-l选项将列出指定ext2文件系统的各种属性。其中大多数属性的含义都非常明确,这些属性与可在mke2fs命令中指定的选项相对应。个别属性决定fsck何时对文件系统进行下一次检查。默认情况下,Linux将每隔20次系统启动或者30天对文件系统进行检查(这里的时间间隔周期以秒指定)。

  这些文件系统属性中的很大一部分都可以用tune2fs的相应参数进行修改。例如,下面的命令通过设置两次检查
的时间间隔秒数(-i)为0禁止了根据时间周期执行的检查:
# tune2fs -i 0 /dev/hdb5
  三,日志文件系统reiserfs


  在1997年7月23日,Hans Reiser把他的基于平衡树结构的ReiserFS文件系统在网上公布 。 这是ReiserFS的第一次公开亮相。此后,ReiserFS一直在Hans
Reiser和领导下的开发小组下开发和发展,SuSE Linux也对它的发展起了重大的帮助。由于ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。目前,bluepoint
linux 2.0 和suse linux 7.3都直接支持ReiserFS,更重要的是在Linux内核2.4.1版本开始已支持ReiserFS,估计ReiserFS很快就会普及。



  ReiserFS是一种新型的文件系统,你可以选择它来装载你的Linux操作系统和其他应用程序和数据文件。它通过一种与众不同的方式--完全平衡树结构来容纳数据,包括文件数据,文件名以及日志支持。ReiserFS还以支持海量磁盘和磁盘阵列,并能在上面继续保很快的搜索速度和很高的效率。ReiserFS文件系统一直以来被用在高端Unix系统上如SGI等。

搜寻方式
ReiserFS是基于平衡树的文件系统结构,尤其对于大量文件的巨型文件系统,如服务器上的文件系统,搜索速度要比ext2快;ext2使用局部的二分查找法,综合性能比不上ReiserFS。

  空间分配和利用情况


  ReiserFS里的目录是完全动态分配的,因此不存在ext2中常见的无法回收巨型目录占用的磁盘空间的情况。ReiserFS里小文件(<4K)可以直接储进树,小文件读取和写入的速度更快,树内节点是按字节对齐的,小的文件可共享同一个硬盘块,节约大量空间。Ext2使用固定大小的块分配策略,也就是说,不到4K的小文件也要占据4K的空间,导致的空间浪费比较严重。

  先进的日志机制
  ReiserFS有先进的日志(Journaling/logging)机制,在系统意外崩溃的时候,未完成的文件操作不会影响到整个文件系统结构的完整性。
ext2虽然健壮性很强,但一旦文件系统被不正常地断开,在下一次启动时它将不得不进行 漫长的检查系统数据结构的完整性的过程,这是为了防止数据丢失而必需的操作。对于较大型的服务器文件系统,这种\"文件系统检查\"可能要持续好几个小时,在很多场合下这样长的时间是无法接受的,解决这个问题一种技术\"日志文件系统\"。在日志的帮助下,每个对数据结构的改变都被记录下来,日志在机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。正因为如此,在系统突然崩溃时,在下次启动几秒钟后就能恢复成一个完整的系统,系统也就能很快的使用了。

  支持海量磁盘和优秀的综合性能


  ReiserFS是一个相当现代化的文件系统,相比之下,ext2虽然性能已经很好了,但其设计还只是19世纪80年代的水准。ReiserFS的出现,使Linux拥有了像Irix/AIX那样的高档商用Unix才有的高级文件系统。ReiserFS可轻松管理上百G的文件系统,在企业级应用中有其用武之地,由于它的高效存储和快速小文件I/O特点,它在桌面系统上也表现出色:启动X窗口系统的时间ReiserFS比ext2少1/3。而ext2则无法管理2G以上的单个文件,这也使得ReiserFS在某些大型企业级应用中比ext2要出色。

  ReiserFS一个最受人批评的缺点是每升级一个版本,都将要将磁盘重新格式化一次,这个缺点也正在改进中。
http://www.devlinux.com/namesys
下载后用root身份登录进入系统,切换至/usr/src/linux目录,执行命令:
#gunzip /path/to/linux-2.2.16-reiserfs-3.5.22-patch.gz
#patch -p1 -i /path/to/linux-2.2.16-reiserfs-3.5.22-patch
  在做完上面的两步后,重新编译kernel,将reiserfs编译进kernel或做成一个模块。
  Reiserfs的相关应用程序在 /usr/src/linux/fs/reiserfs/utils 目录下。你可以用下面方法安装它们:

#mkdir bin
#make
#make install
  最后,你可以用“fdisk”命令重新分区或用“mkreiserfs”命令重新格式化一个已经存在的分区。 指定reiserfs类型加载这个分区,如“mount
-t reiserfs /dev/hda2/download”,这样你就可以使用这个新的分区了。


--



cnhnln 发表于 2006-2-27 23:49:44

Linux系统安装前的准备工作
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux系统安装前的准备工作
  在您开始安装Linux之前,您必须做以下的准备工作:
  1. 备份您硬盘上的所有重要数据! 首先建议您将您硬盘上的重要数据备份到软盘/光盘/磁带上,以免发生意外时,给您造成不必要的损失.
  2.如果采用硬盘,网络安装,或者bios不支持光盘启动,则要准备一,两张安装软盘。
  所需的img文件可在redhat安装光盘的/images/目录下找到,所需的img文件(/images/boot.img,bootnet.img)
  制作方法一,在dos下:
把光碟上的/dosutils/rawrite.exe 拷贝到dos系统下,准备一张刚dos格式化的软盘。
  \"C:
  awrite ***.img\"
  制作方法二,在unix(linux)下:
  准备一张刚dos格式化的软盘,不要mount上系统。
  \"dd if=***.img of=/dev/fd0\"
  3. 准备Linux分区
  Linux拥有自己的文件系统 (Linuxext2),所以,你在安装linux时它应该拥有自己特别的分区类型。这意味着你不能将Linux安装到一个已经存在的
DOS或Windows98分区上。所以您必须将硬盘上的分区进行调整,同时要在硬盘上留有足够的而且未被分配的磁盘空间来安装Linux,要达到这样的目的您可以通过下面的途径来做:



  A,备份硬盘上的数据,通过dos下的fdisk对硬盘进行分区(这个办法一般不推荐使用,除非你使用的事一个崭新的硬盘。或者对硬盘上的所有数据进行北方,不然所有的数据都将会丢失)
  B,先在widows下将最后的一个分区的数据往前几个分区移动使其空出来(对于重要的数据请备份,以防不测)。如果你对linux下的分区软件Disk
Druid了解的话,你就可以直接进行安装。要你是一个新手的话,我建议你去找dos版的Patition magic,这是一个非常专业而且功能强大
的分区编辑软件,您可以使用该工具对您的硬盘分区进行重新划分。不过现在你只要在dos下将刚才整理出来的空间的格式转换为linux et2的格式,那样你在等下安装linux的时候在分区的那项的时候你就可以按照默认进行。


  4.收集你的机器的所有硬件的信息,这些硬件大概包括如下几种 主板(主板上的芯片主型号) 声卡 显卡 鼠标 键盘 网卡等,这些信息一般你都可以在windows中找到。当然还有你的机器的说明书,这个可不要忘了。

--



cnhnln 发表于 2006-2-27 23:50:50

[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux与其他操作系统的区别


  Linux可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。因为它们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。

  目前运行在PC机上的操作系统主要有Microsoft的MS-DOS、Windows、Windows NT、IBM的OS/2等。早期的PC机用户普遍使用MS-DOS,因为这种操作系统对机器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来越低,人们可以相对容易地提高计算机的硬件配置,于是开始使用Windows、Windows
NT等具有图形界面的操作系统。Linux是新近被人们所关注的操作系统,它正在逐渐为PC机的用户所接受。那么,Linux与其他操作系统的主要区别是什么呢?下面从两个方面加以论述。

  首先看一下Linux与MS-DOS之间的区别.在同一系统上运行Linux和MS-DOS已很普遍,就发挥处理器功能来说,MS-DOS没有完全实现x86处理器的功能,而Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。Linux可以直接访问计算机内的所有可用内存,提供完整的Unix接口。而MS-DOS只支持部分Unix的接口。

  就使用费用而言,Linux和MS-DOS是两种完全不同的实体。与其他商业操作系统相比,MS-DOS价格比较便宜,而且在PC机用户中有很大的占有率,任何其他PC机操作系统都很难达到MS-DOS的普及程度,因为其他操作系统的费用对大多数PC机用户来说都是一个不小的负担。Linux是免费的,用户可以从internet上或者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。

  就操作系统的功能来说,MS-DOS是单任务的操作系统,一旦用户运行了一个MS-DOS的应用程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而Linux是多任务的操作系统,用户可以同时运行多个应用程序。

  再看一下Linux与OS/2、Windows、Windows NT之间的区别。
  从发展的背景看,Linux与其他操作系统的区别是,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows
NT等,都是自成体系,无对应的相依托的操作系统。这一区别使得Linux的用户能大大地从Unix团体贡献中获利。因为Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是Unix的作者还是Unix的用户,都认为只有Unix才是一个真正的操作系统,许多计算机系统(从个人计算机到超级计算机)都存在Unix版本,Unix的用户可以从很多方面得到支持和帮助。因此,Linux做为Unix的一个克隆,同样会得到相应的支持和帮助,直接拥有Unix在用户中建立的牢固的地位。

  从使用费用上看,Linux与其他操作系统的区别在于Linux是一种开放、免费的操作系统,而其他操作系统都是封闭的系统,需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。有来自很多软件商的多种Unix实现,Unix的开发、发展商以开放系统的方式推动其标准化,但却没有一个公司来控制这种设计。因此,任何一个软件商(或开拓者)都能在某种Unix实现中实现这些标准。OS/2和Windows
NT等操作系统是具有版权的产品,其接口和设计均由某一公司控制,而且只有这些公司才有权实现其设计,它们是在封闭的环境下发展的。



--



cnhnln 发表于 2006-2-27 23:51:59

unix系统发展史
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

unix系统发展史


一、Multics计划


1965年,AT&T贝尔电话实验室、通用电气公司、麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系统。Multics系统的目标是要向大的用户团体提供对计算机的同时访问,支持强大的计算数据存储,以及允许用户在需要的时候容易地共享他们的数据。



1969年Multics的原始版本在GE645计算机上运行了,但它既没能提供预定的综合服务,而且,连它自己也不清楚究竟什么时刻算达到开发目标。在这种情况下,AT&T贝尔电话实验室首先退出了这一项目。

二、UNIX系统的萌芽


Multics项目中止后,AT&T贝尔电话实验室中参加开发的主要人员开始寻找其他有趣的项目。这其中,KenThompson写了一个名叫“太空漫游”的游戏程序。他找到了一台基本无人使用的DEC
PDP-7计算机运行他的程序。然而由于DEC PDP-7缺少程序开发程序,以致于Thompson不得不在另一台运行GECOS操作系统的Honeywell635上交叉汇编子他的程序,然后再通过纸带加载到DEC
PDP-7上。
为了方便太空漫游的开发,Thompson和Dennis Ritchie一起着手开发DEC PDP-7上的操作环境:
1.一个简单的文件系统,它后来深化成称之为System V文件系统的早期版;
2.一个进程子系统和shell(命令解释器)。
这样这个系统就足以满足他们的需要,他们将这个操作环境命名为UNIX。
Thompson和Ritchie后来开发了B语言(后来Ritchie又将其发展为C语言),并扩展了UNIX系统,UNIX系统便在AT&T贝尔电话实验室流行起来。



1973年11月,他们用C语言彻底重写,这是UNIX操作系统迈向成功之路的关键一步。完成后,Thompson和Ritchie共同在《ACM通信》上发表了首篇UNIX论文,The
UNIX Time Sharing System。
三、UNIX系统的发展


而由于AT&T公司受到美国反托拉斯法的诉讼,与联邦政府签署了一份协议,这份协议不允许AT&T公司生产与电话和电报服务无关的设备,也不允许从事除“公用通信服务”外的任何商业活支。这样,AT&T公司就陷入了不能经营计算机产品的尴尬局面。



而自从在《ACM通信》中发表了关于UNIX的论文后,越来越多的人希望能够获得UNIX软件和源码。为了不违背与政府签署的协议,AT&T公司既不出售UNIX、也不为其作广告、不对其提供技术支持。而同时为了满足大家的需要,AT&T公司在签署简单协议的前提下,将UNIX系统无偿地提供给大学,以供教学与研究。



由于AT&T公司对UNIX的策略,使得UNIX在全世界范围内快速发展。到1975年底,它已经传播到西至耶路撒冷的Hebrew大学,南至澳大利亚的新南威尔士大学,北至加拿大多伦多大学的世界各地。

1979年1月发行的UNIX版本是一个真正可移植的UNIX系统,它对其后的UNIX发展有着深远的影响。该版本最初是运行在PDP-11和Interdata
8/32上的,该系统更加健壮,而且提供了比版本6更强大的功能,但其相当慢。许多领取了许可证的用户针对这一情况从不同方面对系统的性能进行了改进,AT&T又将这些改进中的许多加入了其以后的UNIX发行中。

这种使用者与开发者之间的合作精神正是UNIX快速成长和不断发展的关键因素。不幸的是,当UNIX在商业上取得很大成功之后,这种精神就不存在了。

四、UNIX系统最重要的分支----BSD UNIX


1974年12月,加州大学伯克利分校获得了UNIX许可证。在其后的几年里,包括Bill Joy和Chuck Haley在内的一组研究生为UNIX开发了几个实用工具,其中包括ex编辑器---vi的前身和一个Pascal编译器。他们将这些软件绑定成一个称为“伯克利软件销售(BSD)”的软件包,并在1978年春以每个许可证50美元出售。最初的BSD发行仅包括应用程序和实用工个,并没有对操作系统进行修改和再发行。Joy早期的贡献之一就是C
Shell。


1978年伯克利得到一台VAX-11/780以及由新泽西州Holmdel的BTL小组移植的UNIX/32V。VAX-11采用32位体系结构,可以有4GB的地址窨,而物理内存仅为2MB。与此同时,Ozalp
Babaoglu为VAX设计了一个分页式的虚存系统,并将其加入到UNIX系统中。这就是1979年末发行的3BSD,是由伯克利发行的第一个操作系统。



伯克利在虚存方面的工作促使美国国防部高级研究项目署(DARPA)决定投资支持伯克利的UNIX系统开发。DARPA项目的目的之一就是将TCP/IP网络协议族集成到UNIX系统中。在DARPA的资助下,伯克利又推出了几个BSD发行,统称4BSD。

五、纯UNIX系统----System V


AT&T公司与美国司法部的法律大战终天在1982年达到终点,一部里程碑式的法律出台了。根据该法令,地区性运营公司都从AT&T公司中分离出来,成立一系列的“贝尔宝宝”,
贝尔电话实验室也独立出来,改名为贝尔实验室。同时,AT&T也被重新允许进入计算机市场。
贝尔实验室先后在1982年发行了System III,1983年发行了System,1984年发行了System V Release
2(SVR2),1987年发行了SVR3。
System V UNIX也引入了许多新特征,新设施。最有代表性的就是进程间通信机制。
六、UNIX系统的商业化


UNIX系统的不断发展吸引了许多计算机公司。它们急急忙忙地开始将UNIX商业化,出售自己的UNIX版本。每一家都是以AT&T或BSD为蓝本,将它们移植到自己的硬件上,并加上一些自己的“增值”功能。

1982年,Bill Joy离开了伯克利,与人合资成立了Sun公司,基于BSD开发、发行了SunOS,后来又基于SVR4发行了Solaris。

微软与SCO合作开发发行的XENIX。
此后,SCO公司将SVR3移植到386上,并将其命名为SCO UNIX。
还有一此大型的硬件公司,配合自己的计算机系统,也开发出一许多不同的UNIX版本:
IBM公司开发的AIX操作系统----运行在RS 6000小型机上;
HP公司开发的HP-UX----运行在HP工作站上;
Digital公司开发的Digital UNIX。
还有著名教授Tanenbaum为了教学开发的MINIX系统;
以及我们可爱的小企鹅----LINUX操作系统。
每种商业变体都增加了许多新特征,这些功能中的许多后来又被加入到主线系统中,这样逐步推动UNIX系统向前发展。
七、UNIX系统标准
UNIX系统变体的泛滥造成了许多不兼容问题,尽管所有的变体从某种程度“看起来都像UNIX”,但它们在许多重要方面却千差万别。最初,业界根据AT&T的System
V发行版、伯克利的BSD发行版的不同一分为二。然而,后来随着商业变体不断涌现,情况越来越糟。
Sys unix系统发展史
LinuxAid 工程师 fjxufeng
一、Multics计划


1965年,AT&T贝尔电话实验室、通用电气公司、麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系统。Multics系统的目标是要向大的用户团体提供对计算机的同时访问,支持强大的计算数据存储,以及允许用户在需要的时候容易地共享他们的数据。



1969年Multics的原始版本在GE645计算机上运行了,但它既没能提供预定的综合服务,而且,连它自己也不清楚究竟什么时刻算达到开发目标。在这种情况下,AT&T贝尔电话实验室首先退出了这一项目。

二、UNIX系统的萌芽


Multics项目中止后,AT&T贝尔电话实验室中参加开发的主要人员开始寻找其他有趣的项目。这其中,KenThompson写了一个名叫“太空漫游”的游戏程序。他找到了一台基本无人使用的DEC
PDP-7计算机运行他的程序。然而由于DEC PDP-7缺少程序开发程序,以致于Thompson不得不在另一台运行GECOS操作系统的Honeywell635上交叉汇编子他的程序,然后再通过纸带加载到DEC
PDP-7上。
为了方便太空漫游的开发,Thompson和Dennis Ritchie一起着手开发DEC PDP-7上的操作环境:
1.一个简单的文件系统,它后来深化成称之为System V文件系统的早期版;
2.一个进程子系统和shell(命令解释器)。
这样这个系统就足以满足他们的需要,他们将这个操作环境命名为UNIX。
Thompson和Ritchie后来开发了B语言(后来Ritchie又将其发展为C语言),并扩展了UNIX系统,UNIX系统便在AT&T贝尔电话实验室流行起来。



1973年11月,他们用C语言彻底重写,这是UNIX操作系统迈向成功之路的关键一步。完成后,Thompson和Ritchie共同在《ACM通信》上发表了首篇UNIX论文,The
UNIX Time Sharing System。
三、UNIX系统的发展


而由于AT&T公司受到美国反托拉斯法的诉讼,与联邦政府签署了一份协议,这份协议不允许AT&T公司生产与电话和电报服务无关的设备,也不允许从事除“公用通信服务”外的任何商业活支。这样,AT&T公司就陷入了不能经营计算机产品的尴尬局面。



而自从在《ACM通信》中发表了关于UNIX的论文后,越来越多的人希望能够获得UNIX软件和源码。为了不违背与政府签署的协议,AT&T公司既不出售UNIX、也不为其作广告、不对其提供技术支持。而同时为了满足大家的需要,AT&T公司在签署简单协议的前提下,将UNIX系统无偿地提供给大学,以供教学与研究。



由于AT&T公司对UNIX的策略,使得UNIX在全世界范围内快速发展。到1975年底,它已经传播到西至耶路撒冷的Hebrew大学,南至澳大利亚的新南威尔士大学,北至加拿大多伦多大学的世界各地。

1979年1月发行的UNIX版本是一个真正可移植的UNIX系统,它对其后的UNIX发展有着深远的影响。该版本最初是运行在PDP-11和Interdata
8/32上的,该系统更加健壮,而且提供了比版本6更强大的功能,但其相当慢。许多领取了许可证的用户针对这一情况从不同方面对系统的性能进行了改进,AT&T又将这些改进中的许多加入了其以后的UNIX发行中。

这种使用者与开发者之间的合作精神正是UNIX快速成长和不断发展的关键因素。不幸的是,当UNIX在商业上取得很大成功之后,这种精神就不存在了。

四、UNIX系统最重要的分支----BSD UNIX


1974年12月,加州大学伯克利分校获得了UNIX许可证。在其后的几年里,包括Bill Joy和Chuck Haley在内的一组研究生为UNIX开发了几个实用工具,其中包括ex编辑器---vi的前身和一个Pascal编译器。他们将这些软件绑定成一个称为“伯克利软件销售(BSD)”的软件包,并在1978年春以每个许可证50美元出售。最初的BSD发行仅包括应用程序和实用工个,并没有对操作系统进行修改和再发行。Joy早期的贡献之一就是C
Shell。


1978年伯克利得到一台VAX-11/780以及由新泽西州Holmdel的BTL小组移植的UNIX/32V。VAX-11采用32位体系结构,可以有4GB的地址窨,而物理内存仅为2MB。与此同时,Ozalp
Babaoglu为VAX设计了一个分页式的虚存系统,并将其加入到UNIX系统中。这就是1979年末发行的3BSD,是由伯克利发行的第一个操作系统。



伯克利在虚存方面的工作促使美国国防部高级研究项目署(DARPA)决定投资支持伯克利的UNIX系统开发。DARPA项目的目的之一就是将TCP/IP网络协议族集成到UNIX系统中。在DARPA的资助下,伯克利又推出了几个BSD发行,统称4BSD。

五、纯UNIX系统----System V


AT&T公司与美国司法部的法律大战终天在1982年达到终点,一部里程碑式的法律出台了。根据该法令,地区性运营公司都从AT&T公司中分离出来,成立一系列的“贝尔宝宝”,
贝尔电话实验室也独立出来,改名为贝尔实验室。同时,AT&T也被重新允许进入计算机市场。
贝尔实验室先后在1982年发行了System III,1983年发行了System,1984年发行了System V Release
2(SVR2),1987年发行了SVR3。
System V UNIX也引入了许多新特征,新设施。最有代表性的就是进程间通信机制。
六、UNIX系统的商业化


UNIX系统的不断发展吸引了许多计算机公司。它们急急忙忙地开始将UNIX商业化,出售自己的UNIX版本。每一家都是以AT&T或BSD为蓝本,将它们移植到自己的硬件上,并加上一些自己的“增值”功能。

1982年,Bill Joy离开了伯克利,与人合资成立了Sun公司,基于BSD开发、发行了SunOS,后来又基于SVR4发行了Solaris。

微软与SCO合作开发发行的XENIX。
此后,SCO公司将SVR3移植到386上,并将其命名为SCO UNIX。
还有一此大型的硬件公司,配合自己的计算机系统,也开发出一许多不同的UNIX版本:
IBM公司开发的AIX操作系统----运行在RS 6000小型机上;
HP公司开发的HP-UX----运行在HP工作站上;
Digital公司开发的Digital UNIX。
还有著名教授Tanenbaum为了教学开发的MINIX系统;
以及我们可爱的小企鹅----LINUX操作系统。
每种商业变体都增加了许多新特征,这些功能中的许多后来又被加入到主线系统中,这样逐步推动UNIX系统向前发展。
七、UNIX系统标准
UNIX系统变体的泛滥造成了许多不兼容问题,尽管所有的变体从某种程度“看起来都像UNIX”,但它们在许多重要方面却千差万别。最初,业界根据AT&T的System
V发行版、伯克利的BSD发行版的不同一分为二。然而,后来随着商业变体不断涌现,情况越来越糟。
System V与BSD系统的不同,影响到了用户编程。此时,你已不可能编写一个复杂应用不需任何修改变可以在两种系统上运行。
接着,各种商业版本的掺合,使得开发应用的程序员不得不花费大量的精力来保证它们的程序可以运行于各种不同的UNIX系统。
在这种局面下,人们强烈要求出台一组标准接口,许多小组开始了这方面的工作。其中被广泛认可的有三个标准:
1.AT&T的System V接口定义----SVID;
2.IEEE POSIX(可移植操作系统标准)规范;



--



cnhnln 发表于 2006-2-27 23:52:42

操作系统简述
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

操作系统简述

(LinuxAid 工程师 fjxufeng)
  一、计算机软件与操作系统


  功能强大的计算机自从走进了人类的生活就发挥着越来越重要的作用,随着时代的发展,计算机已与人们的日常生活息息相关。不能不说计算机软件日新月异的发展在此起着关键作用。可以这么说,离开了软件,计算机就成了废铜烂铁。计算机机软件大致可以分为两类:系统软件和应用软件。系统软件用于管理计算机资源,并为应用软件提供一个统一的平台。应用软件则在系统软件的基础上实现用户所需要的功能。
而操作系统(Operation System)则是最基本的系统软件,它控制计算机的所有资源关提供应用程序开发的基础。
  二、操作系统诞生的原因


  计算机是由CPU、内存、磁盘、显卡、声卡等许许多多设备组成的,而且这些设备的厂商众多,品种繁多,而且不同厂商生产的同种设备虽然完成同种功能,但是具体细节却存在千差万别。为了正确地管理和使用这些设备来实现具体的应用,这样程序员就得了解和掌握各种设备的工作原理。
而且对于同种设备,由于不同的硬件厂商在实现细节上的差异使得程序员再次陷入了复杂的硬件控制的深渊!必须找到一种方法使得程序员从苦海中脱离出来!多年的研究与发展终于使得这个愿望成为现实。这个解决方法就是在硬件的基础上加载一层软件来管理整个系统。这个软件通过设备驱动程序来与计算机硬件打交道,通过一系列的功能模块将整个计算机硬件系统抽象成为一个公共、统一、开放的接口—虚拟机,从而使得程序员不必再陷入各种硬件系统的具体细节!这一层软件就是操作系统。

  三、什么是操作系统
  操作系统是一个大型的软件系统,其功能复杂,体系庞大。从不同的角度看的结果也不同,正是“横看成岭侧成峰”,下面我们通过最典型的两个角度来分析一下。

  1.从程序员的角度看
  正如前面所说的,如果没有操作系统,程序员在开发软件的时候就必须陷入复杂的硬件实现细节。程序员并不想涉足这个可怕的领域,而且大量的精力花费在这个重复的、没有创造性的工作上也使得程序员无法集中精力放在更具有创造性的程序设计工作中去。程序员需要的是一种简单的,高度抽象的可以与之打交道的设备。将硬件细节与程序员隔离开来,这当然就是操作系统。从这个角度看,操作系统的作用是为用户提供一台等价的扩展机器,也称虚拟机,它比底层硬件更容易编程。

   2.从使用者的角度看
   从使用者的角度来看,操作系统则用来管理一个复杂系统的各个部分。操作系统负责在相互竞争的程序之间有序地控制对CPU、内存及其它I/O接口设备的分配。

   比如说,假设在一台计算机上运行的三个程序试图同时在同一台打印机上输出计算结果。那么头几行可能是程序1的输出,下几行是程序2的输出,然后又是程序3的输出等等。最终结果将是一团糟。这时,操作系统采用将打印输出送到磁盘上的缓冲区的方法就可以避免这种混乱。在一个程序结束后,操作系统可以将暂存在磁盘上的文件送到打印机输出。从这种角度来看,操作系统则是系统的资源管理者。

  四、操作系统发展历史
  下面我们结合计算机的发展历史来回顾一下操作系统的发展历程。
  1.第一代计算机(1945-1955):真空管和插件板
   40年代中期,美国哈佛大学、普林斯顿高等研究院、宾夕法尼亚大学的一些人使用数万个真空管,构建了世界上第一台电子计算机。开启计算机发展的历史。这个时期的机器需要一个小组专门设计、制造、编程、操作、维护每台机器。程序设计使用机器语言,通过插板上的硬连线来控制其基本功能。
这个时候处于计算机发展的最初阶段,连程序设计语言都还没有出现,操作系统更是闻所未闻!
  2.第二代计算机(1955-1965):晶体管和批处理系统
   这个时期计算机越来越可靠,已从研究院中走出来,走进了商业应用。但这个时期的计算机主要完成各种科学计算,需要专门的操作人员维护,并且需要针对每次的计算任务进行编程。
第二代计算机主要用于科学与工程计算。使用FORTRAN与汇编语言编写程序。在后期出现了操作系统的雏形:FMS(FORTRAN监控系统)和IBMSYS(IBM为7094机配备的操作系统)

   3.第三代计算机(1965-1980):集成电路芯片和多道程序
   60年代初,计算机厂商根据不同的应用分成了两个计算机系列,一个针对科学计算,一个针对商业应用。随着计算机应用的深入,对统一两种应用的计算机需求出现了。这时IBM公司试图通过引入System/360来解决这个问题。与这个计划配套,IBM公司组织了OS/360操作系统的开发,然后复杂的需求,以及当时软件工程水平低下使得OS/360的开发工作陷入了历史以来最可怕的“软件开发泥潭”,诞生了最著名的失败论著----《神秘的人月》。虽然这个开发计划失败了,但是这个愿望却成为了计算机厂商的目标。此时,MIT、Bell
Lab(贝尔实验室)和通用电气公司决定开发一种“公用计算机服务系统”----MULTICS,希望其能同时支持数百名分时用户的一种机器。结果这个计划的研制难度超出了所有人的预料,最后这个系统也以失败结束。不过,MULTICS的思想却为后来的操作系统很多提示。60年代未,一位贝尔实验室曾参加过MULTICS研制工作的计算机科学家Ken
Thompson,在一台无人使用的PDP-7机器上开发出了一套简化的、单用户版的MULTICS。后来导致了UNIX操作系统的诞生。目前UNIX操作系统主导了小型机、工作站以及其他市场。也是至今最有影响力的操作系统之一,而Linux也是UNIX系统的一种衍生,下一讲我们将专门介绍一下UNIX的发展历史。

  4.第四代计算机(1980-今):个人计算机
  随着计算机技术的不断更新与发展,计算机神奇般地闯入了人们的生活,现在以低廉的价格就可以获得强大计算能力的计算机。价格不再是阻拦计算机普及的门槛时,降低计算机的易用性就显得十分重要!由于UNIX系统的本身特点,使得其不太适合于在运行在个人计算机上,这时就需要一种新的操作系统。在这一历史关键时候,IBM公司由于低估了PC机的市场,并未使用最大的力量角逐这一市场,这时Intel公司趁机进入,成为了当今微处理器的老大。同时善于抓住时机的微软公司的总裁比尔·盖茨适时地进入了这一领域,用购买来的CP/M摇身一变成为MS-DOS,并凭借其成为个人计算机操作系统领域的霸主。虽然是苹果公司在GUI方面先拔头筹,但由于苹果公司的不兼容、不开放的市场策略,未能扩大战果,这时微软又适时地进入了GUI方面,凭借WINDOWS系统再次称雄!

  五、操作系统构成
  一般来说,操作系统由以下几个部分组成:
  1)进程调度子系统:进程调度子系统决定哪个进程使用CPU,对进程进行调度、管理。
  2)进程间通信子系统: 负责各个进程之间的通信。
  3)内存管理子系统:负责管理计算机内存。
  4)设备管理子系统:负责管理各种计算机外设,主要由设备驱动程序构成。
  5)文件子系统:负责管理磁盘上的各种文件、目录!
  6)网络子系统:负责处理各种与网络有关的东西。
  六、操作系统结构设计
   操作系统有多种实现方法与设计思路,下面仅选取最有代表性的三种做一简单的叙述。
   1.整体式系统结构设计 这是最常用的一种组织方式,它常被誉为“大杂烩”,也可说,整体式系统结构就是“无结构”。
这种结构方式下,开发人员为了构造最终的目标操作系统程序,首先将一些独立的过程,或包含过程的文件进行编译,然后用链接程序将它们链接成为一个单独的目标程序。
Linux操作系统就是采用整体式的系统结构设计。但其在此基础上增加了一些形如动态模块加载等方法来提高整体的灵活性,弥补整体式系统结构设计的不足。

   2.层次式系统结构设计 这种方式则是对系统进行严格的分层,使得整个系统层次分明,等级森严!这种系统学术味道较浓!实际完全按照这种结构进行设计的操作系统不多,也没有广泛的应用。
可以这么说,现在的操作系统设计是在整体式系统结构与层次式系统结构设计中寻求平衡。
   3.微内核系统结构设计 而微内核系统结构设计则是近几年来出现的一种新的设计理念,最有代表性的操作系统有Mach和QNX。微内核系统,顾名思义就是系统内核很小!比如说QNX的微内核只负责:

   ¨ 进程间的通信
   ¨ 低层的网络通信
   ¨ 进程调度
   ¨ 第一级中断处理
  七、操作系统横向比较
   计算机历史中出现了许许多多的操作系统,然后大浪淘沙,无情地淘汰了许多,只留下一些经历过市场考验的:
   1.桌面操作系统:
   1)MSDOS:Intel x86系列的PC机上的最早的操作系统,微软公司产品,曾经统治了这个领域,现在已逐渐被自家兄弟WINDOWS
9x系列所代替,现在除了一些低档机外已不多见。
   2)Windows 9x:微软公司产品,从Windows 3.x发展而来,现在是基于Intel
x86系列的PC机上的主要操作系统,也是现然个人电脑中装机量最大的操作系统。面向桌面、面向个人用户。
   3)Mac OS:苹果公司所有,界面友好,性能优异,但由于只能运行在苹果公司自己的电脑上而发展有限。但由于苹果电脑独特的市场定位,现在仍存活良好。

   2.服务器操作系统:
   1)UNIX系列:UNIX可以说是源远流长,是一个真正稳健、实用、强大的操作系统,但是由于众多厂商在其基础上开发了有自己特色的UNIX版本,所以影响了整体。在国外,UNIX系统可谓独树一帜,广泛应用于科研、学校、金融等关键领域。但由于中国的计算机发展较为落后,UNIX系统的应用水平与国外相比有一定的滞后。

   2)Windows NT系列:微软公司产品,其利用Windows的友好的用户界面的优势打进服务器操作系统市场。但其在整体性能、效率、稳定性上都与UNIX有一定差距,所以现在主要应用于中小企业市场。

   3)Novell Netware系列:Novell公司产品,其以极适合于中小网络而著称,在中国的证券行业市场占有率极高,而且其产品特点鲜明,仍然是服务器系统软件中的长青树。

   4)Linux操作系统



--



cnhnln 发表于 2006-2-27 23:53:36

常见linux介绍
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

常见linux介绍


  目前我们所能接触到的linux主要有Red Hat、Slackware、Debian、SuSE、OpenLinux、TurboLinux、Red
Flag、Mandarke、
BluePoint等。
  (1)Red Hat http://www.redhat.com
  以容易安装著称,初学者安装这个版本,遇到挫折的机会几乎是零,如果您对安装Win9x已驾轻就熟的话,Red Hat Linux的安装一定难不倒您。
  Red Hat另一个优点是它的RPM(Red Hat Package Manager);以往在安装软件时,最让使用者伤脑筋的是:软件在解开压缩前先要新建一个目录,然后将软件搬进去解压,解压后,有些部份可能需要搬到另一个目录中去,当要搬移的项目多时,做这些工作就是件苦差事了。而RPM「包裹管理者」就针对这一点,能将所有要安装的路径全部安排好,当使用者解开有「.rpm」扩展名的文件时,会将当初打包该文件时设定好的路径档案先检查一次,然后依照档案里的设定,将各个文件解开,送到它们应该去的地方;不只如此,它还会制作安装记录,当使用者要移除其中任一个rpm文件时,系统会根据安装记录将该文件反安装,这种做法绝对准确,不会像Windows那样会移除不该拿掉的东西。

  Red Hat Linux可以说是相当成功的一个产品,Red Hat公司有「官方版本」(official)供使用者购买,也提供了自由的FTP站供大众直接下载,官方版本与自由下载版本差异在于,官方版本多提供了一些商用软件和印刷精美的说明书。

  (2)Slackware http://www.cdrom.com
  这是个老字号的门派了,前几年玩Linux的人,几乎都用这套系统。它可完全「手工打造」个人需求的特性,让很多目前已是高手级的玩家仍念念不忘,Slackware在国内用得很多,也许用来做服务器,性能会好些。最新版本安装的过程已改善了不少,各位想要「完全掌控」情况的朋友可以一试。

  (3)Debian http://www.debian.org
  您通常会在Debian字眼后看见GNU Linux的字样,该派别目前是大家公认的结构最严谨、组织发展最整齐的,它也有一个包裹管理系统称之为「dpk」(Debian
Package),所作的事情和Red Hat的「rpm」异曲同工,使整体文件的管理更加方便。Debian的原始程序代码都是遵循GNU的方式开放的,所以它完全符合开放原代码精神,不像其它的Linux都或多或少的保留了一部份程序代码不开放(Red
Hat是直到6.0版才全部开放的)。最新版本有一部份程序设计师,将Debian移植到其它平台上,所以也可以在其它平台上看见其踪影。
  (4)SuSE http://www.suse.com
  这是一套在欧洲相当受欢迎的版本,它和XFree86合作开发x86上 的X Server。SuSE安装时可以选择显示德文或英文,它还有自己的一套设定程序叫做「SaX」,可以让使用者较方便的设定,它的安装套件也采用RPM模式,所以要安装、升级与移除程序都非常方便,目前版本8.0。

  (5)OpenLinux http://www.caldera.com
  这是由Caldera公司推出的版本,并不是很「Open」的一个版本,网上可以下载其Lite版本, 但正式版本是要money的,因为整个套件中有许多商用软件,所以并没有提供网络下载的服务。

  (6)TurboLinux http://www.pacific.com
  由Pacific HiTech公司发展的套件,该套件在日本市场占有一席之地,从安装到使用接口都是日文的,在国内它与清华大学及研究机构合作研发了中文版本,在国内造成了一股Linux潮流,目前已推出7.0的简体版本,8.0的日文版本。

  (7)Red Flag http://www.redflag-linux.com
  这是由中科红旗软件技术有限公司推出的中文版本的linux,该linux在众多的中国linux用户中占有一定的比例。可以从网络上下载其红旗桌面版。目前桌面版的最高版本为3.2。同时红旗针对服务器市场,专门推出了红旗服务器版本,其目前最高版本为3.0。

  (8)Mandarke Linux
  它的吉祥物是一个黑色的魔术帽,它其实参照了Redhat的基础上制成的,它继承了许多Redhat的优点,还加上了许多迎合Linux初学者的功能,如美丽的图形化安装界面。7.0版本开始走向成熟,赢得了不少用户。而且现在自从推出8.0
8.1以及8.2版后,使得Mandarke也获得了较高的用户占有率。刚从Windows中走出来的朋友,可以一试。挺不错的。
  (9)BluePoint Linux
  我觉得是这做得最成功的一款中文Linux发行版,说心里话,蓝点还是挺有创新,挺挖得深的一个Linux厂商。但是其稳定性不是太好,我觉得适于桌面,不适于做务器。不过蓝点不再出新版本了,目前的版本为BluePoint
2.0
  其他还有中软linux等等,由于篇幅以及资料收集方面的限制就不再一一介绍。请大家见谅。


--



cnhnln 发表于 2006-2-27 23:54:30

关于开放源代码的定义
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

关于开放源代码的定义


  开放源代码并不仅仅意味着对源代码的访问权。开放源代码软件的发布条款必须满足以下条件:

  1. 自由地再发布
  如果被发布的软件是由不同来源的程序组成的,许可证不得限制任何当事人或组织(party)销售或赠送作为被发布软件成分之一的开放源码软件。
许可证不得从此项销售中索取使用费或其它任何费用。(理由)
  2. 源代码
程序必须包括源代码,必须允许以源代码方式发布、还必须允许以编译后的形式发布。如果产品的某个部分没有与源代码一同发布,那么必须提供通行的、不需要支付合理范围之外的任何费用的手段以获得源代码---从网络上免费下载是一种可取的方式。源代码必须是程序员对其进行修改的最佳形式。故意地使源代码变得含混晦涩是不允许的。也不允许给出预处理器或翻译器处理的中间结果。(理由)
  3. 派生作品
  许可证必须允许修改软件和派生软件,并且必须允许它们按照原软件的许可证的条款进行发布。(理由)
  4. 作者的源代码的完整性
  只有在许可证允许与源代码一同发布\"补丁文件\"(该\"补丁文件\"以在创建时对程序进行修改为目的)时,许可证才能限制对修改形式的源代码的发布。许可证必须明确地允许发布由修改后的源代码生成的程序。许可证可以要求派生的作品采用不同的名称或不同的版本号以区别于原来的软件。(理由)
  5. 不得歧视任何个人或团体
许可证不得歧视任何个人或者由多人组成的团体。(理由)
  6. 不得歧视任何应用领域(fields of endeavor)
许可证不得限制任何人把程序应用于任何领域。例如,不得规定程序不能应用于商业领域或基因研究领域。(理由)
  7. 许可证的发布
与程序有关的权利必须适用于该程序的任何使用者,并且程序的使用者也不需要为了使用该程序而获得其它许可证的许可。(理由)
  8. 许可证不能针对于一个产品
与程序有关的权利不能由该程序是否作为某个软件产品的一部分来决定。如果程序从那个发布中被抽出来,并且按照程序的许可证的条款进行使用和发布,那么得到该程序的当事人或组织将获得与得到原程序的使用者相同的权利。(理由)
  9. 许可证不能影响其它软件
  许可证不得向与采用它的软件一同发布的其它软件提出任何限制。例如,许可证不能坚持要求在同一媒体上发布的其它程序都是开放源代码软件。(理由)
Conformance
  (本节不是开放源代码定义的一个部分)
  我们认为本开放源代码定义涵盖了由绝大多数软件团体使用的术语\"开放源代码\"的最初含义和当前含义。然而,该术语被广泛地应用,并且它的含义变得不精确了。OSI
Certified标志是某个软件发布许可证是否服从开放源代码定义的OST认证方式。一般的术语\"开放源代码\"并不提供这种担保,但我们仍然鼓励使用\"开放源代码\"这一术语以表明它符合\"开放源代码定义\"。关于OSI
Certified标志的信息,以及已经通过了OSI Certified、符合\"开放源代码定义\"的许可证,请参见OSI
Certified标志与纲要。
  开放源代码定义之原理
  给出开放源代码的定义的目的是:把我们所确信的、由软件开发团体所公认的\"开放源代码\"的含义作为一组具体的准则写下来---该准则确保按照开放源代码许可证发布的软件可以得到与其它软件同样认真的评审、使软件可以不断地得到改良和遴选,从而提供非开放软件所难以提供的可靠性与能力。

  为了使此项工作持续发展,我们必须抵制人们为了短期利益而中止为软件开发做出贡献。这意味着,许可证的条款必须防止人们藏匿(lock
up)源代码从而导致只有很少的人才能够阅读和修改它。
当软件的开发者按照由OSI认证的许可证发布他们的软件时,他们可以在软件中使用\"OSI Certified\"标志。这种认证标志告知用户,该软件所采用的许可证符合开放源代码定义。关于我们的认证标志的更多信息及其纲要,请参见OSI
Certified标志与纲要。
  1. 自由地再发布
  通过强制要求许可证允许自由地再发布,我们抵制了任何为了获得少量短期销售金额而放弃长期效益的诱惑。如果我们不这样做,就会有很多压力迫使合作者放弃承诺。
  2. 源代码
由于软件只有通过修改才能够得到改进,因此我们要求获得易于理解的源代码。因为我们的目的是使软件易于改进,我们也就希望软件易于修改。
  3. 派生作品
仅仅提供可以阅读的源代码,对于实施认真的评审、对于软件的快速改良与遴选来说都是不够的。为了加快改进软件的速度,人们需要能够进行试验和对修改进行重新发布。
  4. 作者的源代码的完整性
鼓励对软件进行各种改进是一件好事,但使用者有权知道谁应该对他们所使用的软件负责。软件的作者和维护者都有权知道需要他们提供支持的软件是什么,以维护他们的名誉。
因此,开放软件许可证必须保证可以容易地得到源代码,但可以要求源代码以原始源代码和一组补丁文件的形式发布。按照这种方式,就可以获得\"非正式的\"的修改而同时又可以轻易地把它们从原始源代码中区分出来。
  5. 不得歧视任何个人或团体
为了从该进程中获得最大的收益,应该给尽可能多的个人和团体以同等资格对开放源代码软件做出贡献。为此我们禁止开放源代码许可证把任何人排除在这个进程之外。
  6. 不得歧视任何应用领域(fields of endeavor)
该条款的主要目的是禁止许可证中含有使开放源代码软件无法在商业上使用的规定。我们需要商业用户参与我们的工作,而不让他们感到被排除在外。
  7. 许可证的发布
本条款的目的是禁止通过非直接的手段,例如需要签署非公开的协定,使软件无法公开。
  8. 许可证不能针对于一个产品
  本条款用于预防其它许可证陷阱。
  9. 许可证不能影响其它软件
  开放源代码软件的发布者有权为他们自己的软件做出选择。
是的,GPL满足这条要求。按GPL发布的库只影响(contaminate)在运行时
与之连接的软件,于仅仅和它一同发布的软件无关。
OSI Certified标志与纲要
  开放源代码定义给出了开放源代码软件的基本性质。不幸的是,术语\"开放源代码\"遭到了滥用,并且由于它的描述性,它不能作为一个商标(这是我们的首选)被保护。由于社团需要一种可靠的方式以确定一份软件是否真正是开放源代码软件。OSI为此目的而注册了一个认证标志,OSI
Certified。如果你在一份软件上看到了该标志,那么该软件就是必定是按照遵从开放源代码定义的许可证发布的,否则,该发行人就是在滥用该标志而且违反了法律。
OSI Certified标志被用于软件而不是许可证:人们需要知道的是组成软件的包和它们的许可证是开放的源代码。此外,单独的许可证可能不是\"货物\",它由美国专利和商标局注册认证标志。但是软件的作者显然必须能够在不询问我们的情况下(自我认证)、在适当的时刻确认他们的软件是按照OSI
Certified的开放源代码方式发布的。所以认证按照两步进行:
* OSI提供一个满足开放软件源代码定义的开放源代码许可证表。这些许可证经过公众的详细审查并且被我们所批准。如果你有一个希望加入该列表的许可证,请与

[email protected]联系,它启动了获得许可证批准的程序。
* 如果你希望在你的软件上设置OSI Certified标志,你可以从列表中选择一个获得批准的许可证并根据它发布软件,并且适当地为软件做标志。
上面仅仅是一个概括。下面给出申请批准许可证和把OSI Certified标志应用在你的软件上的详细说明。
获得许可证的批准
  1. 通过电子邮件把许可证发送给[email protected]。在电子邮件中说明你是否愿意以你的签名或者匿名地把许可证发送到许可证讨论列表中。(我们愿意考虑那些根本不希望被发送的许可证,但由于社团的评审是批准的一个重要组成部分,我们将不得不把该许可证私下地发送给评审者:因此,对没有被发送到许可证讨论列表中的许可证的批准,要花费更长的时间,并且通常要更多地与你交流。)

  2. 如果我们发现你的许可证不符合开放源代码的定义,我们将与你一同解决这个问题。
  3. 同时,我们将关注许可证论坛列表,并且与你一同工作以解决大家提出的任何未包含的问题。
  4. 作为该过程的一部分,我们还将就许可证问题向外界寻求法律上的建议。
  5. 一旦许可证符合了开放源代码定义,并且在许可证论坛上经过了充分的讨论或者其它的评审者没有提出我们认为重要的问题,我们将通知你,许可证已经被批准了,同时它被复制到我们的网站上,并且被加入以下的许可证列表。
使用该标志
  你可以在这两种软件的发行上使用OSI Certified标志。该软件的发布包括并且达到了被批准的许可证列表中某个许可证的要求,或者该软件的源代码已经被明确地放到公众可以得到的位置。

  为了表明你的软件是按照OSI Certified发布的,你必须不加任何修改地把下面两者之一,按照下述方式加入你的软件。完整的声明是:
  This software is OSI Certified Open Source Software.
  OSI Certified is a certification mark of the Open Source Initiative.
  较简短的声明是:
  OSI Certified Open Source Software
  你的软件的每种发布形式都有自身的要求:
  * 如果软件以电子的形式发布(而不是实物(tangible)的形式),你必须把完整的声明放在README文件或者类似的、人类用户将首先阅读的文件中。
  * 如果软件以实物形式发布,你必须完成以下所有可行的任务:
  . 如果软件的发布包括印刷品,你必须把完整的声明加入该印刷品。
  . 如果软件发布在可擦写的媒体(例如软磁盘)、CD-ROM、磁带等媒体上,它们
在物理上可以添加能够被人的裸眼所阅读的简短声明,而不影响它们的功能,你必须
把完整的声明或简短的声明标注在该媒体上。
  . 如果软件的发布是一个的包,从而使其中的声明不能被阅读。你必须在包的外
面放置完整的声明。
  如果不能把以上任何条款用于发布,请与我们联系,我们将把你选择的位置加入本列表。
获得批准的许可证
  以下许可证满足开放源代码的定义,并且已经被批准用于OSI Certified的开放源代码软件。没有给出批准日期的许可证是在1999年1月1日以前批准的。
  * The GNU General Public License(GPL);
  * The GNU Library(Lesser) General Public License(LGPL);
  * The BSD License;
  * The X Consortium License;
  * The Artistic License;
  * The Mozilla Public License(MPL);
  * The QPL;
  其它符合定义的许可证包括:libpng许可证、zlib许可证、IJG JPEG许可证和OPL(Open LDAP Public License)许可证。



--



cnhnln 发表于 2006-2-27 23:55:50

什么是Linux
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

什么是Linux


  简单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)的操作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE
POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性较好的功能 强大而稳定的操作系统.它可以运行在x86
PC,Sun Sparc,Digital Alpha,680x0,PowerPC, MIPS等平台上,可 以说Linux是目前运行硬件平台最多的操作系统.
Linux最大的特点在于它是GNU(Gnu\'s Not Unix----有点分形与混沌的意味----无限自包含,简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承
\"自由的思想,开放的源码\"的原则,成千上万的专家/爱好者通过Internet在不断地完善并维护它,可以说Linux是计算机爱好者自己的操作系统.
  追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(Andy
Tanenbaum教授所写的很小的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了自认为狂妄的想法----写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序,一个小的文件系统,......,这样0.0.1版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10月5号发布Linux
0.0.2版本,在这个版本中已经可以运行bash(the GNU Bourne Again Shell----一种用户与操作系统内核通讯的软件)和gcc(GNU
C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:

  \"Do you pine for nice days of Minix-1.1, when mem were men
and wrote their own device drivers? Are you without a nice project
and just dying to cut your teeth on a OS you can try to modify for
your needs? Are you finding it frustrsting when everything works on
Minix? No more all-nighters to get a nifty program working? Then this
post might be just for you. \"As I mentioned a month ago, I\'m
working on a free version of a Minix-lookalike for AT-386 computers.
It has finally reached the stage where it\'s even usable(though may
not be depending on what you want),and I am willing to put out the
sources for wider distribution. It is just version 0.0.2 ... but I\'ve
successfully run bash,gcc,gnu-make,gnu-sed,compress,etc.under it.\"

   随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的内核开发,Linux倾向于成为一个黑客的系统----直到今天,在Linux社区里内核的开发被认为是真正的编程.由于一批高水平黑客的加入,使Linux发展迅猛,到1993年底94年初,Linux
1.0终于诞生了! Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,不过自从2.1.xx系列的内核Linux开始走高端的路子----硬件的发展太快了,但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital
Alpha(至少目前主频是最高的).所以不要总把Linux与低档硬件平台联系到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥出来而已,Linux必将从低端应用横扫到高端应用!

   在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一个根基,我现在也搞不清楚到底是GNU
Linux呢还是基于Linux的GNU. :-) 更重要的是遵循公共版权许可证,在继承自由软件的精神的前提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且还在增加,注意你不能说\"Redhat
Linux\"\"Suse Linux\"\"Slackware Linux\"等等,Linux主要指操作系统内核,对所有发行版内核原代码都是一样的(但集成的内核版本可能因发行时间不同而有所不同).还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix,Sysbase,Corel,Netscape,CA,Novell等都宣布支持Linux!
商家的加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希望所在!!
   Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统......常有新手问Linux能做什么,其实它不象那些中看不中用的操作系统,不在于你用它能干什么,而在于你想干什么!

   Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,又如自由软件的精神......



--



cnhnln 发表于 2006-2-27 23:57:02

GNU通用公共许可证
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

GNU通用公共许可证 (1991.6第二版)


  版权所有(C)1989,1991 Free Software foundation,Inc.675 Mass Ave,Cambridge,MAO2139,USA
允许每个人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。
序言


  大多数软件许可证决意剥夺你的共享和修改软件的自由。对比之下,GNU通用公共许可证力图保证你的共享和修改自由软件的自由——保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。

  当我们谈到自由软件(free software)时,我们指的是自由而不是价格。我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且将这些条款给他们看,使他们知道他们有这样的权利。

  我们采取两项措施来保护你的权利。
   (l)给软件以版权保护。
   (2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保(no
warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引人的任何问题,不应损害原作者的声誉。

   最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。

   有关复制,发布和修改的条款和条件


  0.此许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL条款的约束下发布。下面提到的“程序”指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约柬的衍生作品。

  也就是说包含程序或程序的一部分的作品。可以是原封不动的,或经过修改的和/或翻译成其他语言的(程序)。在下文中,翻译包含在修改的条款久每个许可证接受人(license)用你来称呼。

  许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。是否普遍适用取决于程序具体用来做什么。



  1.只要你在每一副本上明显和恰当地出版版权声明和不承担担保的声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起绘每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。

  你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定费用。
  2.你可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。

  a)你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。
  b)你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。

  c)如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。

  这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当你将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。

  因此,本条款的意图不在于索取权利;或剥夺全部由你写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。
  此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。

  3.你可以以目标码或可执行形式复制或发布程序(或符合第2款的基于程序的作品),只要你遵守前面的第l,2款,并同时满足下列3条中的1条。

  a)在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面第1,2款的要求。或者
  b)在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的第1,2款的要求。或者

  c)和目标码一起,附有你收到的发布源码的报价信息。(这一条款只适用于非商业性发布,而且你只收到程序的目标码或可执行代码和按b)款要求提供的报价)。

  作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的script。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。

  如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。



  4.除非你明确按许可证提出的要求去做,否则你不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制,修改,转发许可证和发布程序是无效的。而且将自动结束许可证赋予你的权利。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。



  5.你没有在许可证上签字,因而你没有必要一定接受这一许可证。然而,没有任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证,这些行为是法律禁止的。因此,如果你修改或发布程序(或任何基于程序的作品),你就表明你接受这一许可证以及它的所有有关复制,发布和修改程序或基于程序的作品的条款和条件。



  6.每当你重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的许可证。你不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履行许可证条款的义务。



  7.如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题)的结果,强加于你的条件(不管是法院判决,协议或其他)和许可证的条件有冲突。他们也不能用许可证条款为你开脱。

  在你不能同时满足本许可证规定的义务及其他相关的义务时,作为结果,你可以根本不发布程序。例如,如果某一专利许可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。

  如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分。并将条款作为整体用于其他环境。
  本条款的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过通用公共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大量自由软件作出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统发布软件。许可证待有人不能强制这种选择。

  本节的目的在于明确说明许可证其余部分可能产生的结果。


  8.如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受到限止,将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的条款,将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情况下,许可证包含的限止条款和许可证正文一样有效。

  9.自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差别。

  每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及“任何更新的版本”。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。



  10.如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同。写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导。这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态。以及从整体上促进软件的共享和重复利用。

没有担保
  l1.由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其他提供程序的人们“一样”
不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由你来承担。如果程序出现缺陷,你承担所有必要的服务,修复和改正的费用。



  12.除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者程序不能和其他程序协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。

最后的条款和条件
  如何将这些条款用到你的新程序
  如果你开发了新程序,而且你需要它得到公众最大限度的利用。
  要做到这一点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和重新发布。为了做到这一点,绘程序附上下列声明。最安全的方式是将它放在每个源程序的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”行以及在什么地方能看到声明全文的说明。

  <用一行空间给出程序的名称和它用来做什么的简单说明>
  版权所有(C)19xx(<作者姓名>
  这一程序是自由软件,你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修改和重新发布这一程序。或者用许可证的第二版,或者
(根据你的选择)用任何更新的版本。
  发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
  你应该已经和程序一起收到一份GNU通用公共许可证的副本。
  如果还没有,写信给:


  The Free Software Foundation,Inc,,675 Mass Ave,Cambridge, MAO2139,USA还应加上如何和你保持联系的信息。

  如果程序以交互方式进行工作,当它开始进人交互方式工作时,使它输出类似下面的简短声明ll
  Gnomovision第69版,版权所有(C)19XX,作者姓名,
  Gnomovision绝对没有担保。要知道详细情况,请输人\'show w\'。
  这是自由软件,欢迎你遵守一定的条件重新发布它,要知道详细情况,请输人\'Show c\'。
  假设的命令‘shovr w’和‘show c’应显示通用公共许可证的相应条款。当然,你使用的命令名称可以不同于‘show w’和‘show
c,。根据你的程序的具体情况,也可以用菜单或鼠标选项来显示这些条款。
如果需要,你应该取得你的上司(如果你是程序员)或你的学校签署放弃程序版权的声明。下面只是一个例子,你应该改变相应的名称:
  Ynyodyne公司以此方式放弃James Harker 所写的Gnomovision程序的全部版权利益。
  <Ty coon签名>,1989.4.1
  Ty coon付总裁

这一许可证不允许你将程序并人专用程序。如果你的程序是一个子程序库。你可能会认为用库的方式和专用应用程序连接更有用。如果这是你想做的事,使用GNU库通用公共许可证代替本许可证。



--


页: [1] 2 3
查看完整版本: Linux基础知识