01-linux简介

一、Linux发展简史
1、什么是嵌入式操作系统/strong>
        嵌入式操作系统(Embedded Operating System,简称EOS):嵌入式系统是以应用为中心,以计算机技术为基础,并且软、硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用性计算机系统。
        嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

不同于以Windows为代表的个人PC操作系统,以Linux为代表的嵌入式操作系统具有以下特性:
    1.专用性:
    嵌入式操作系统的个性化很强,其中的软件系统与硬件系统结合非常紧密,一般要针对特定的硬件进行系统开发移植,即使同一品牌、同一系列的产品也需要根据系统硬件的变化做出修改。
    2.可裁剪:
    嵌入式操作系统不要求其功能设计上过于复杂。由于嵌入式系统一般针对小型电子设备,系统资源有限,因此该产品非必要的功能需要尽可能的删减。
    3.高效可靠:
    高实时性是嵌入式操作系统的基本要求,而且软件代码也要求保证高质量与高可靠性。
    4.应用广泛
    5.需要开发工具和环境:
    嵌入式系统开发需要专用的开发工具与环境。由于其本身不具备自主开发能力,即使设计完成后用户通常也不能对程序某功能进行修改,必须借助一套专用的开发工具与环境才能进行开发。开发阶段有“主机”和“目标机”的概念,主机用于程序开发,目标机作为最后的执行机。开发阶段需要交替结合进行。

常见的嵌入式操作系统:Linux,Windows CE,VxWorks,Symbian,Android,Meego,chromeOS等

2、Linux系统简介
1)一切要从UNIX系统讲起
        1969年,AT&T公司(美国电话电 公司)的贝尔实验室与MIT合作开发了UNIX操作系统,旨在开发一个用于大型、并行、多用户的操作系统。最早由Ken Thompson、Dennis Ritchie(同时也是C语言创始人)和Douglas McIlroy三人负责研发。
1971年,Ken Thompson向学院申请了一台PDP-11/24机器(只有24K内存与500K磁盘),第一版的UNIX系统就诞生在这台电脑上。同时著名的fork()系统调用(开启多进程)也是在这一时间段出现的。
到了1973年,Ken Thompson与Dennis Ritchie深感使用汇编语言编写系统移植太过头疼,因此他们想采取高级编程语言完成UNIX系统的第三版。一开始他们试图使用Fortran但是失败了,后来Dennis Ritchie整合了BCPL语言形成B语言,然后在B语言的基础上进行大幅度的修改,这就是大名鼎鼎的C语言。于是Dennis Ritchie成功的使用C语言完成了UNIX第三版内核的开发。而C语言与UNIX系统的完美连体,很快就成为了世界的主导。
2)UNIX系统版本内讧战争
        20世纪70年代,AT&T开始注意到UNIX系统所带来的商业价值。公司的律师开始着手保护UNIX系统并让其成为了商业机密。从1979年的UNIXv7版本开始,UNIX禁止大学使用UNIX源码,包括在授课过程中学习与研究。1980年,UNIX分成了两个版本线,一个是Berkeley的BSD UNIX版本,另一个是AT&T的UNIX版本。竞争最终引发了UNIX的战争。
1982年,Joy创建了SUN公司并提供了SunOS系统,而随后几年AT&T则发布了UNIX System V的第一版。
3)Linux的横空出世
          林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ ),出生于芬兰赫尔辛基市,著名的电脑程序员、黑客。在《时代》周刊根据读者投票评选出的二十世纪100位最重要人物中,林纳斯居然排到了第15位,而从20世纪的最后几年就开始霸占全球首富称 的盖茨不过才是第17位。
1991年4月,Linus为了让自己寝室内的电脑运行与实验室的电脑一样的系统,开始研究minix(Unix系统的一个精简版)系统。
1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生(Freeminix-like kernel sources for 386-AT)。
1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。
1994年3月,Linux1.0发布,代码量17万行,采用GPL协议。

3、GNU与GPL
1)GNU
        GNU的英文全称是”GNU is Not Unix”(递归缩写,程序员的幽默),又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。由于GNU在英文中原意为非洲牛羚,因此GNU计划的图标就是一个牛羚。
GNU计划下的著名软件有Linux系统、gcc编译器、make工程管理器、OpenOffice办公等
2)GPL
        GNU计划认为任何软件都应当以自由软件发布。要想让一款软件成为“自由软件”,必须使用自由软件许可证来发布。通常使用GPL(或与GPL兼容的)许可证发布。

GPL(GNU General Public License,GNU通用公共许可证)。GPL对GNU下的软件有以下要求:
1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL 软件,也就是说必须随应用程序一起发布源代码。
3.GPL并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
4、脱颖而出的Linux系统——Ubuntu
Ubuntu(中译“乌班图”)是一个以桌面应用程序为主的Linux系统,其名称Ubuntu来自非洲南部祖鲁语的”Ubuntu”一词,意为“人性”“人道待人”“我的存在是因为大家存在”,是非洲的一种传统价值观,类似中国的“仁爱”“众生平等”。
Ubuntu由马克·舍特尔沃斯创立,其首个版本—4.10发布于2004年10月20日,它以Debian为开发蓝本。与Debian稳健的升级策略不同,Ubuntu每六个月便会发布一个新版,其中每年4月发布的为稳定版,10月发布的为测试版(不稳定版)。有些带有LTS字样意为长期支持版。
2014年2月20日,Ubuntu操作系统正式登陆魅族MX3国际版。

二、Linux体系结构
Linux系统大致分为Linux内核、Shell、文件系统、应用程序4大部分

1、内核
        内核是操作系统的核心,具有一个操作系统最基本的功能,它负责管理系统的进程、内存、设备驱动、文件和 络系统,直接决定系统的性能与稳定性。
Linux系统内核大概可分为:内存管理部分、进程管理部分、设备驱动管理部分、文件系统部分和 络管理部分等。

1.系统调用接口(System Call Interface,简称SCI):系统调用提供了从用户空间到内核的函数调用。
2.进程管理(Process Management):主要用于处理进程/线程虚拟化空间、创建、杀死、活动进程间资源共享等需求。
3.内存管理(Memory Management):内核负责管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
4.虚拟文件系统(Virtual File System,简称VFS):虚拟文件系统是Linux内核中非常重要的组成部分,它提供了一个通用接口对象,隔离了系统调用接口与内核支持的文件系统,在二者之间提供了一个交换层,这样可以屏蔽不同文件系统中对不同文件读写操作的差异,简化程序开发。
5. 络堆栈(Network Stack): 络系统的分层体系结构,例如传输控制协议(TCP/UDP)、 络协议(Internet Protocol,简称IP)等。
6.设备驱动(Device Drivers):提供设备驱动程序,用于运转特定的硬件设备。
7.依赖体系结构代码(Arch):Linux在运行时虽然采用独立的体系结构,但是有些元素必须考虑特定体系结构才能正常操作并提高效率。arch子目录内定义了内核源代码中依赖于体系结构的部分。例如对于典型的桌面操作系统,使用i386目录。
Linux内核用于控制进程、输入与输出、文件系统操作、内存管理等,并且Linux内核支持多用户、多任务模式。
/**********Linux版本 ***********/
查看当前计算机版本信息:uname -a
Linux的版本 有两种版本:
第一种:由三个数字组成:r.x.y
r:目前发布的内核主版本
x:偶数表示稳定版,奇数表示测试版
y:错误补丁修补次数
主版本 在内核结构有较大变化时才会变更。
例如2009年发布的2.6.27版,表示主版本为Linux2,稳定版,修订了27次
第二种:major.minor.patch-build.desc
1.major:主版本
2.minor:次版本 ,新增功能时会发生变化;偶数表示稳定版,奇数表示测试版
3.patch:对次版本的修订次数
4.build:表示编译(或构建)次数,每次编译可能对少量程序做优化修改但一般没有大的功能性变化
5.desc:描述当前版本的信息。例如一些内核版本中有SMP,表示多对称处理器(Symmetric MultiProcessing)。

Linux版本 简史:
0.02:1991年10月5日,Linus Torvalds将这个版本内核代码发布到了Minix新闻组,很快得到了反应。Linus在其他热心支持者的帮助下推出了第一个稳定工作版。
0.11:1991年12月8日,发布在Internet上,已经是可以正常运行的内核版本。
0.95:1992年3月8日,加入了虚拟文件系统
1.0:1994年3月14日,Linux核心开发团队正式组建,Linux用于也越来越多
2.0:1996年2月9日
2.6:2003年12月17日,与之前的相比,首次支持多处理器运算和64位计算,支持高效率处理本机POSIX的线程库(NPTL),改进了性能、安全、驱动程序等诸多方面。
有关不同内核版本信息与下载,可以去Linux内核官 https://www.kernel.org/查看更多信息。

2、Shell
Shell(中文翻译为“壳”,为了区别于Kernel“核”)是Linux内的一个命令行解释器,它为使用者提供使用界面,用户在Shell内输入指令,Shell接收用户的指令然后调用相关程序或指令。
另一方面,Shell又是一种程序设计语言。作为一门解释性语言,提供各种变量、参数、循环与分支等。
Shell基本上可以分为两大类
1)图形界面Shell:例如Gnome等
2)命令行式Shell:例如Bourne Shell(最早的Shell)、bash、csh以及Windows系统的cmd.exe等
有关Shell的具体介绍我们将在后续课程中讲解。
3、其他操作系统组件
Linux还包括图形用户界面(GUI)、应用程序管理、编程工具(例如GCC、Java eclipse等)、配置服务器等组件。这里就不一一介绍。

!!!注意!!!(这是一个悲伤的故事)
不要擅自修改该文件内容,即使想修改也请事先做好备份工作
修改完毕后,保存文件后执行apt-get update命令更新配置文件

APT提供一组命令供用户选择,以下是一些常见的命令:
//注意:大多数的apt命令都需要管理员权限运行,因此使用时常常与sudo一起使用
    apt-get:最常用,用于管理软件包,包括安装、更新、卸载等操作
    apt-cache:查询软件包信息
    apt-cdrom:安装CD-ROM内软件包
    ……
在这些命令中,我们最常用的是apt-get。apt-get本身并没有软件包管理功能,而是提供了一个软件包管理平台,在该平台上使用子命令来完成具体的操作任务。
1)apt-get命令格式:
apt-get 子命令 [可选指令] 软件包名
子命令:
    update:下载更新软件包列表信息
    upgrade:升级软件包到最新版本
    install:下载软件包并安装
    remove:卸载软件包
    autoremove:自动卸载不满足依赖关系的软件包
    source:下载源码
    clean:删除缓存内已下载的包
    check:检查系统中依赖关系的完整性
可选指令:
    -d:仅下载而不解压安装
    -f:修复系统中存在的软件包依赖性问题
    –purge:与remove一起使用,完全卸载软件包
    –reinstall:与install一起使用,重新安装该软件包
    -b:下载源码包后编译生成相应的软件包
    -y:对所有询问都做yes回答,apt在执行时不再进行任何提示
    -h:获取帮助信息
    -v:获取apt-get版本
当我们执行apt-get install命令后,APT就可以自动完成整个安装过程,而无需考虑软件包的版本、优先级、依赖关系等。
apt-get install安装软件大致分为4步:
1.扫描本地存放的列表,寻找镜像服务器上的软件包
2.进行软件包依赖性检查,找到支持该软件正常运行的所有软件包
3.从镜像服务器中下载相关软件包
4.安装软件并配置相关文件

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24872 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年9月20日
下一篇 2018年9月20日

相关推荐