任务一 查找Linux系统的基本概况
第一步:通过搜索引擎搜索“Linux”
在百度等搜索引擎中搜索“UNIX”、“Linux”、“Linux操作系统”等关键词。
(1)UNIX是大型机用的,主要特点是支持多用户同时操作系统和共享系统资源。一般人接触不到UNIX,一般只有大型公司才用到。
(2)Linux是一条免费使用和自由传播的类UNIX操作系统。它和UNIX的主要区别是UNIX有版权的,与微软的Windows一样是要收费的。
(3)Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
(4)Linux可安装在各种计算机硬件设备中,例如手机、路由器、平板电脑、台式计算机、大型机、超级计算机。
(5)严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并使用GNU工程各种工具和数据库的操作系统。
任务二 总结Linux系统的最初十年
第一步:关键词搜索
任务三 研究Linux的特点、优势及发行版本
子任务一 阐述Linux系统的优点
Linux系统越来越受到电脑用户的欢迎,于是很多人开始学习Linux。Linux系统之所以会成为目前最受关注的系统之一,主要原因是它的免费,以及系统的开放性,可以随时取得程序的原代码,这对于程序开发人员是很重要的。除了这些它还具有以下的优势:
Linux系统优势一:跨平台的硬件支持
由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。
Linux系统优势二:丰富的软件支持
与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。
Linux系统优势三:多用户多任务
和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。
Linux系统优势四:可靠的安全性
Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。
对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。
Linux系统优势五:良好的稳定性
Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。
Linux系统优势六:完善的网络功能
Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。
Linux 在它的追捧者眼里是一个近乎完美的操作系统,它具有运行稳定、功能强大、获取方便等优点,因而有着广阔的前景,或许也值得我们每一个计算机爱好者学习和应用。
子任务三 总结Linux系统的发行版本
第一步:通过阅读相关书籍以及网络搜索的网页资料,总结整理
常见的Linux系统发行版本
1.RHEL红帽
Redhat,应该称为Redhat系列,包括
(1)RHEL (Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本,稳定性非常好,适合服务器使用)
(2)Fedora Core (由原来的Redhat桌面版本发展而来,免费版本,稳定性较差,最好只用于桌面应用)
(3)CentOS (RHEL的社区克隆版本,免费版本,稳定性非常好,适合服务器使用)
Redhat是国内使用人群最多的Linux版本,以至于有的人将Redhat等同于Linux,而有些老手更是只用这一个版本的Linux。所以有什么不明白的地方,很容易找到人来问,而且网上的Linux教程基本都是以Redhat为例来讲解。Redhat系列的包管理方式采用的是基于RPM包和YUM包的管理方式,包分发方式是编译好的二进制文件。
2. CentOS
社区企业操作系统(Community Enterprise Operating System,Centos)
来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
3.Fedora
用户可免费体验到最新的技术或工具,而功能成熟后会被加入到RHEL系统中。因此也被称为RHEL系统的“试验田”,如果感兴趣的话,可以多关注此类系统的发展变化及新特性。
由全球社区爱好者构建的面向日常应用的快速且强大的操作系统。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开源代码的软件和开放的标准。Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat 的支持。Fedora (第七版以前为Fedora Core)是一款基于 Linux 的操作系统,也是一组维持计算机正常运行的软件集合。其目标是创建一套新颖、多功能并且自由和开源的操作系统。
4.OpenSUSE
德国著名的Linux系统,全球范围内有着不错的声誉及市场占有率,发行量在欧洲占第一位。。OpenSUSE对个人来说是完全免费的,包括使用和在线更新。OpenSUSE被评价为最华丽的Linux桌面发行版,甚至超越win7,但它的优势绝不仅仅局限于win7还要绚丽的用户交互界面,其性能也绝不亚于其他Linux桌面发行版!
5.Gentoo
具有极高的自定制性,操作复杂,因此适合有经验的人员使用。
它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西——你想让它成为什么,它就可以成为什么。
6.Debian
应该称为Debian 系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。提供了接近十万种不同的开源软件支持,在国外用于很高的认可度和使用率。对于各类内核架构支持性良好,稳定性、安全性强更有免费的技术支持。
Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去。
分为三个版本分支(branch):
(1)unstable,为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
(2)testing,经过unstable中的测试,相对较为稳定,也支持了不少新技术。
(3)stable,一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
7.Ubuntu
Ubuntu是一款基于Debian派生的操作系统(严格来说不能算一个独立的发行版本),对新款硬件具有极强的兼容能力。 特点是界面非常友好,容易上手,对硬件支持非常全面,是最适合做桌面系统的Linux发行版本,同时Ubuntu也可用于服务器领域。
Ubuntu的目标在于为一般用户提供一个最新的,同时又相对稳定的主要自由软件构建而成的操作系统。Ubuntu具有强大的社区力量,用户可以方便地从社区获取帮助。
第二步:找出几个比较经典的Linux发行版本的下载地址
Debian ISO映象文件地址:http://www.debian.org/distrib/。
Gentoo 镜像文件地址:http://www.gentoo.org/main/en/where.xml。
Ubuntu ISO映象文件地址:http://www.ubuntu.com/download。
任务四 Linux运维职业生涯规划
第一步:了解Linux运维工程师的发展前景
Linux工程师是最具有增值潜力的职业,是可以掌握企业核心网络构架、安全技术的,具有不可替代的竞争优势;
现在国内是缺少新型网络技术人才的,对于网络人才方面缺少达到三十万以上的,想要拿到丰厚的工资是必然的。它的就业方面广、专职多能、实践经验适用于各个领域,并且是具有很大的增加潜力的,它会随着自身经验的不断积累以及逐渐成熟掌握项目运作,升值空间是可想而知的;
Linux工程师职业发展前景广阔,Linux工程师到项目经理仅仅是一步之遥,从容晋升Manager。
Linux工程师可以从中小企业的网络管理员进行入职的,在入职之后,还能够同时从事网络管理管理工作,工资待遇与财力会有明显的增加;
其次Linux工程师学习更加全面的知识成为Linux工程师,根据自己积累的经验成为侧重于某一专业的Linux工程师,比如说网络存储工程师、综合布线工程师、网络安全工程师等。
最后是能够进阶成为专家级别的,比如IT项目经理、网络主管或者技术专家等,可以看出对于个人的发展是有前景的。
第二步:规划自己的学习内容
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O'Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
1. The C programming language
《C程序设计语言》
2. Pointers on C
《C和指针》
3. C traps and pitfalls
《C陷阱与缺陷》
4. Expert C Lanuage
《专家C编程》
5. Writing Clean Code
-----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++
《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐