linux学习之一了解linux+如何学习linux

2010年11月07日 Linux基础 评论 3 条 阅读 9,370 views 次

课程内容简介:
羽度非凡:UC房间的使用、虚拟视频MVBOX使用
视频下载地址:http://u.115.com/file/f7d1ff3b2d
羽飞:linux是什么、linux的特色、linux的发行版本、linux当前应用的角色、如何学习(无视频,全文字)
11月8日晚8点UC房间学习内容:linuxi学习环境搭建(常见的安装方式+服务器规划)
注:摘取鸟哥linux私房菜第三版部分内容。

第一章、linux是什么
   1.1linux是什么

Linux就是一套操作系统
 1223
Linux的核心是由Linus Torvalds在1991年的时候由他开发出来的, 并且放网络上提供大家下载,后来大家觉得这个小东西(Linux Kernel)相当的小而精巧, 所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!

1969年以前:一个伟大的梦想--Bell,MIT不GE的『Multics』系统
在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 戒称为通用电器)共同发起了Multics的计划, Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机联机使用的目标。 不过,到了1969年前后,计划一度落后,资金也短缺,所以该计划虽然继续在研究,但贝尔实验室还是退出了该计划的研究工作。 (注:Multics有复杂、多数的意思。)

1969年:Ken Thompson的小型file server system
Thompson因为自己的需要,希望开发一个小小的操作系统以提供自己的需求。
经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是Unix的原型! 当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。(当时尚未有Unix的名称)
Thompson的这个文件系统有两个重要的概念,分别是:
•所有的程序或系统装置都是档案
•不管建构编辑器还是附属档案,所写的程序只有一个目的,就是要有效的完成目标。

1973年:Unix的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心
Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本!

1977年:重要的Unix分支—BSD的诞生
柏克莱大学的Bill Joy在取得了Unix的核心原始码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是Unix很重要的一个分支,Bill Joy也是Unix业者『Sun(太阳)』这家公司的创办者! Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。 (后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)

1979年:重要的System V 架构与版权宣告
由于Unix的高度可移植性与强大的效能,加上当时并没有版权的纠纷, 所以让很多商业公司开始了Unix操作系统的发展,例如AT&T自家的System V、IBM的AIX以及HP不DEC等公司, 都有推出自家的主机搭配自己的Unix操作系统。
每一家公司自己出的Unix虽然在架构上面大同小异,但是却真的仅能支持自身的硬件, 所以,早先的Unix只能与服务器(Server)或者是大型工作站(Workstation)划上等号! 但到了 1979 年时,AT&T推出 System V 第七版 Unix 后,这个情况就有点改善了。 这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说 System V 可以在个人计算机上面安装与运作了。
不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是将想Unix的版权收回去。因此, AT&T在1979年发行的第七版Unix中,特别提到了 『不可对学生提供原始码』的严格限制! 同时,也造成Unix业界之间的紧张气氛,并且也引爆了很多的商业纠纷~
目前被称为纯种的Unix指的就是System V以及BSD这两套啰!

1984年之一:x86架构的Minix操作系统诞生
既然1979年的Unix第七版可以在Intel癿x86架构上面进行移植, 那么是否意味着可以将Unix改写并移植到x86上面了呢?在这个想法上, 谭宁邦教授于是乎自己劢手写了Minix这个Unix Like的核心程序! 在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心原始码!并且强调他癿Minix必须能够与Unix兼容才行!谭宁邦在1984年开始撰写核心程序, 到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合~
谭宁邦始终认为Minix主要用在教育用途上面,所以对于Minix是点到为止!

1984年之二:GNU计划与FSF基金会的成立
Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,对于现今的自由软件风潮, 真有不可磨灭的地位!目前我们所使用得很多自由软件,几乎均直接或间接受益于GNU这个计划!

1984年,史托曼开始GNU计划, 这个计划的目癿是:建立一个自由、开放的Unix操作系统(Free Unix)。
虽然GNU计划渐渐打开知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件, 都得要进行编译成为二进制文件(binary program)后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗? 因此他便开始撰写C语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc) !
这点相当的重要!这是因为C语言编译程序版本众多,但都是专利软件, 如果他写的C编译程序够棒、效能够佳,那么将会大大的让GNU计划出现在众人眼前!

GNU的通用公共许可证:
到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL),并称呼他为copyleft(相当于专利软件癿copyright!)。

GNU所开发的几个重要软件
Emacs
GNU C (GCC)
GNU C Library (glibc)
Bash shell

1988年:图形接口XFree86计划
鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT与其他第三方首次发表了X Window System ,并且在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是 X Window System + Free + x86的整合名称! 而这个XFree86的GUI界面更在Linux癿核心1.0版于1994年释出时,整合于Linux操作系统当中!

1991年:芬兰大学生Linus Torvalds的一则简讯
到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel癿386机器上面运作,这让很多人很感兴趣!从此开始了Linux不平凡的路程!

下面我们来看看GPL(GNU General Public License, GPL)是什么玩意儿? 为什么要将自由软件挂上GPL的『版权宣告』呢?这个版权宣告对于作者有何好处?
首先,Stallman对GPL一直是强调Free的,这个Free癿意思是这样的: "Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users' freedom to run, copy, distribute, study, change, and improve the software
大意是说,Free Software(自由软件)是一种自由有权力,并非是『价格!』 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力, 但是,这并不代表你可以到处喝『免费的啤酒!(free beer)』,也就是说, 自由软件的重点并不是指『免费』的,而是指具有『自由度, freedom』的软件, 史托曼迚一步说明了自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。
如此一来,你所拿到的软件可能原先只能在Unix上面跑, 但是经过原始码的修改之后,你将可以拿他在Linux或者是Windows上面来跑!总之, 一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!
这个软件就具有下面的特色:
o 取得软件与原始码:你可以根据自己的需求来执行这个自由软件;
o 复制:你可以自由的复制该软件;
o 修改:你可以将取得的原始码进行程序修改工作,使之适合你的工作;
o 再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
o 回馈:你应该将你修改过的程序代码回馈于社群!

但请特别留意,你所修改的任何一个自由软件都不应该也不能这样:
o 修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权~
o 单纯贩卖:你不能单纯的贩卖自由软件。

所以说,目前自由软件工作者,他们所赖以维生的,几乎都是在『服务』这个领域! 毕竟自由软件并不是每个人都会撰写,有人有需要你的自由软件时,他就会请求你癿协助, 此时,你就可以透过朋务来收费了!这样来说, 自由软件确实还是具有商业穸间的!
那么 GPL 对于自由软件的作者有何优点呢?
大致的优点有这些:
o 软件安全性较佳;
o 软件执行效能较佳;
o 软件除错时间较短;
o 贡献的原始码进永都存在。
这是因为既然是Open Source的自由软件,那么你的程序代码将会有很多人帮你查阅, 如此一来,程序癿漏洞与程序的优化将会进展的很快!所以,在安全性与效能上面, 自由软件一点都不输给商业软件喔!

POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口,这是由美国电器与电子工程师学会(IEEE)所发布的一项标准!
POSIX标准主要是针对Unix与一些软件运行时候的标准规范, 只要依据这些标准规范来设计的核心与软件,理讬上,就可以搭配在一起执行了。 而Linux的发展就是依据这个POSIX的标准规范,Unix上面的软件也是遵循这个规范来设计的, 如此一来,让Linux很容易就与Unix兼容共享互有的软件了!同时,因为Linux直接放置在网绚下,提供大家下载, 所以在流通的速度上相当的快!导致Linux的使用率大增!这些都是造成Linux大受欢迎的几个重要因素呢!

1994年终于完成的Linux的核心正式版!version 1.0。 这一版同时还加入了X Window System的支持!更于1996年完成了2.0版。此外,托瓦兹指明了企鹅为Linux的吉祥物。

好了,经过上面的说明,我们知道了Linux其实就是一个操作系统最底层的核心及其提供的核心工具。 他是GNU GPL授权模式,所以,任何人均可取得原始码与可执行这个核心秳序,并且可以修改。 此外,因为Linux参考POSIX设计规范,于是兼容Unix操作系统,故亦可称之为Unix Like的一种。    
   1.2linux的特色(优缺点)
稳定的系统:
Linux本来就是基于Unix概念而发展出来的操作系统,因此,Linux具有与Unix系统相似的程序接口跟操作方式, 当然也继承了Unix稳定并且有效率特点

免费或少许费用:
由于Linux是基于GPL授权下的产物,因此任何人皆可以自由取得Linux, 至于一些『安装套件』的发行者, 他们发行的安装光盘也仅需要一点钱即可获得!不同于Unix需要负担庞大的版权费用,当然也不同于微软需要一而再、 再而三的更新你的系统,并且缴纳大量费用啰!
安全性、漏洞的快速修补:
如果你常玩网络的话,那么你最常听到的应该是『没有绝对安全的主机』! 没错!不过Linux由于支持者日众,有相当多的热心团体、个人参与其中的开发, 因此可以随时获得最新的安全信息,并给予随时癿更新,亦即是具有相对的较安全!
• 多任务、多使用者:
与Windows系统不同的,Linux主机上可以同时允许多人上线来工作, 并且资源的分配较为公平,比起Windows的单人多任务系统要稳定的多啰! 这个多人多任务可是Unix-Like上面相当好的一个功能。你可以在一部 Linux主机上面规划出不同等级的用户,而且每个用户登入系统时的工作环境都可以不相同, 此外,还可以允许不同的使用者在同一个时间登入主机,以同时使用主机的资源。
• 使用者与群组的规划:
在Linux的机器中,档案的属性可以分为『可读、可写、可执行』 等参数来定义一个档案的适用性,此外,这些属性还可以分为三个种类, 分别是『档案拥有者、档案所属群组、其他非拥有者与群组者』。 这对于项目计划或者其他计划开发者具有相当良好的系统保密性。
• 相对比较不耗资源的系统: Linux只要一部P-III以上等级的计算机就可以安装并且使用愉忚啰!还不需要到P-4或AMD K8 等级的计算机呢!不过,如果你要架设的属于大型的主机(服务上百人以上的主机系统), 那就就需要比较好一点的机器了。不过,目前市面上任何一款个人计算机均可以达到这一个要求啰!
• 适合需要小核心程序的嵌入式系统: 由于Linux只要几百K不到的程序代码就可以完整的驱动整个计算机硬件并成为一个完整的操作系统, 因此相当适合于目前家电或者是小电子用品的操作系统!那就是当红炸子鸡『嵌入式』系统啦! Linux真的是很适合例如手机、数字相机、PDA、家电用品等等的微电脑操作系统!
• 整合度佳且多样的图形用户接口(GUI):
自从1994年Linux 1.0后就加入的X Window系统,在众多黑客的努力之下终于与Linux有高度整合, 且主要的绘图卡公司(Intel, NVidia, ATI等)都有针对Linux推出最新的驱动程序, 因此Linux的GUI已经有长足的进步了!另外,Linux环境下的图形接口不只有一种! 包括大家耳熟能详的KDE(http://www.kde.org/)以及GNOME(http://www.gnome.org)都是很常见的!

不过虽然Linux具有这样多的好处,但是他先天上有一个足以致命的地方, 使他的普及率受到很大的限制,就是Linux需要使用『指令』的终端机模式进行系统的管理!
没有特定的支持厂商:
游戏的支持度不足:
专业软件的支持度不足:
教育训练作的还不够好:
老实说,这些缺点绝大部分都不是Linux本身的问题,倒是一些政策面与商业方面的考虑,才是最大癿困扰。 不过,Linux与其他的操作系统一样,就是一个工具而已!希望大家能够在忚乐中学习到Linux的精髓
   1.3linux的发行版本
为了让使用者能够接觉到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行 软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让用户以光盘/DVD或者透过网络直接安装/管理Linux系统。 这个『Kernel + Softwares + Tools的可完全安装』癿东东,我们称之为Linux distribution, 一般中文翻译成可完全安装套件,或者Linux发布商套件等。

由于发展Linux distributions的社群与公司实在太多了,例如有名癿Red Hat,CentOS, SuSE, Ubuntu, Fedora, Debian等等,所以有很多人很担心,每个distribution是否都不相同呢? 这就不需要担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器癿Postfix/sendmail,文件服务器的Samba等等。
此外,为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的File system Hierarchy Standard (FHS)标准规范! 唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式吧! 所以说,基本上,每个Linux distributions除了架构的严谨度与选择的套件内容外, 其实差异并不太大啦!
distributions主要分为两大系统
一种是使用RPM斱式安装软件的系统,包括Red Hat,CentOS, Fedora, SuSE等都是这类;
一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu,等等。     
下面列出几个主要的Linux distributions发行者网址:
• Red Hat: http://www.redhat.com
• Fedora: http://fedoraproject.org/
• Mandriva: http://www.mandriva.com
• Novell SuSE: http://www.novell.com/linux/
• Debian: http://www.debian.org/
• Slackware: http://www.slackware.com/
• Gentoo: http://www.gentoo.org/
• Ubuntu: http://www.ubuntu.com/
• CentOS: http://www.centos.org/

到底是要买商业版还是社群版的Linux distribution呢?如果是要装在个人计算机上面做为桌面计算机用的,建议使用社群版,包括Fedora, Ubuntu, OpenSuSE等等。如果是用在服务器上面的,建议使用商业版本,包括Red Hat, SuSE,当然还有个CentOS,等。 这是因为社群版通常开发者会加入最新的软件,这些软件可能会有一些bug存在。至于商业版则是经过一段时间的磨合后,才将稳定的软件放进去。

第二章、如何学习linux
   2.1linux当前应用的角色
企业环境的使用
网络服务器
关键任务的应用(金融数据库、大型企业网管环境)
学术机构的高效能运算任务

个人环境的应用
桌面计算机
手持系统(PDA、手机)
嵌入式系统

   2.2如何学习
学习Linux的目的是什么
学习Linux还是学习Distributions
建议
了解计算机的概论与硬件常识
网络基础的建立(IP、路由、协议等等)
从linux的安装与指令学习
Linux操作系统的基础技能
这些包含了『使用者、群组的概念』、『权限的观念』,『程序的定义』等等,尤其是权限的概念, 由于不同的权限设定会妨碍你癿使用者的便利性,但是太过于便利又会导致入侵的可能! 所以这里需要了解一下你的系统呦!
一定要学习会VI编辑器
Shell与Shell Script学习
shell上面的数据太多了,包括『正则表达式』、『管道命令』与『数据重定向』等等,真的需要了解比较好呦! 此外,为了帮助你未来的管理服务器的便利性,shell scripts也是挺重要的!
一定要会软件的管理
Tarball/RPM/DPKG等软件管理员的安装方式的了解,对你来说是重要的
服务器架设
还有重要的一点,实践加实践

出现问题怎么解决?
先看出错信息
再看系统日志/var/log
然后就是google+baidu
还不能解决,那么就到群里面,论坛里面求教(这里要注意使用论坛的搜索功能)
解决了问题,要总结(建议是写成笔记,或者是贴在网络上)
不同的环境下,解决问题的方法有很多种,只要行的通,就是好方法!
其它的建议
兴趣
成就感(写出来)
回答问题
参与讨论

作为一个使用者,人要迁就机器;做为一个开发者,要机器迁就人。

3 条留言  访客:2 条  博主:1 条

  1. avatar hdlover

    飞哥,文章中有个别乱码的字。。。

  2. 举双脚赞成这种做法

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录