第1章Linux内核简介.ppt

上传人:本田雅阁 文档编号:3458313 上传时间:2019-08-28 格式:PPT 页数:50 大小:298.54KB
返回 下载 相关 举报
第1章Linux内核简介.ppt_第1页
第1页 / 共50页
第1章Linux内核简介.ppt_第2页
第2页 / 共50页
第1章Linux内核简介.ppt_第3页
第3页 / 共50页
第1章Linux内核简介.ppt_第4页
第4页 / 共50页
第1章Linux内核简介.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第1章Linux内核简介.ppt》由会员分享,可在线阅读,更多相关《第1章Linux内核简介.ppt(50页珍藏版)》请在三一文库上搜索。

1、第1章 Linux内核基础,本章主要内容,Linux简介 Linux内核和Unix内核的比较 Linux内核版本 获取、阅读内核源代码 编译内核,1.1 Linux简介,Linux的起源:UNIX Linux的产生 为什么使用Linux Linux的现状 Linux与发展我国自主的操作系统,Linux的起源:UNIX,70年代Unix的初始发展阶段 1969年,在AT &T贝尔实验室,Ken Thompson、Dennis Ritchie和其他的研究人员开发了一个操作系统,这个新的操作系统称为UNIX。 1971年 UNIX移植到PDP-11上,第一次得到实用。此时的系统全部用汇编语言写成;

2、1973年用C语言重写UNIX核心,系统变得极为便于理解、修改和移植; 1976年的V6是第一个在Bell实验室以外可以使用的版本。 1977年UNIX成为产品;同期开始被移植到各种类型的机器上,并产生了许多变种版本。如移植到VAX机上形成32位的UNIX V7。,Linux的起源:UNIX,80年代Unix的丰富发展时期 1981年Bell实验室推出UNIX SYSTEM III。 一个重要的分支是BSD版(Berkeley UNIX)。由加利福尼亚大学伯利克分校开发。它在UNIX中增加了很多显著的特征,如TCP/TP网络、UFS文件系统,并改进了内存管理代码,采用页。 90年代Unix的完

3、善阶段 Bell实验室推出UNIX System V Release 4 。 伯克利的4.3BSD已经形成了当前Unix的两大流派 Linux的出现,UNIX的重要分支,SUN公司的SunOS与Solaris SUN公司在4.2BSD UNIX基础上加进系统V形成SunOS,后来由SunSoft继续开发,形成SYSTEM V基础上的Solaris。 硬件平台:Sun Sparc、Intel PC工作站和服务器 SCO公司的SCO UNIX SCO Unix使用Intel的平台,较早进入中国市场。它的历史追溯到MicroSoft开发的Xienx,Xienx是运行在Intel平台上的一种基于Uni

4、x V 6的系统。 Xienx开发部门独立出来成立了SCO公司,并基于AT&T System VR3.2开发了SCO Unix,其最新的版本为增强了图 形接口的SCO OpenServer 5.0.4。 AT&T将Unix系统实验室卖给了Novell公司,它们的Unix被更名为UnixWare。但是Novell正逢经营问题,不得不将UnixWare再次卖给SCO。 硬件平台:Intel PC工作站和服务器,UNIX的重要分支,IBM公司的IBM AIX 硬件平台:IBM RS/6000和其它使用IBM Power 和PowerPC系列处理器的系统,Intel AI-64版。 HP公司的Hewl

5、ett-Packard HP-UX 硬件平台:HP 9000服务器,Linux的产生,Richard Stallman于1984年独立开发出一个类UNIX的操作系统。 Stallman 的理想就是“开发出一个质量高而自由的操作系统”。为此他创立了自由软件基金会,资助GNU (GNU is Not Unix的缩写) 软件开发。之后GNU开发了gcc、Emacs等大量的程序。 芬兰学生Linus Torvalds于1991年为基于Intel 80386的IBM兼容机开发了Linux操作系统。,Linux的产生,Linux在加入自由软件组织GNU后,经过Internet上全体开发者的共同努力,已成为

6、能够支持各种体系结构(包括Alpha、SPARC、PowerPC、MC680x0、IBM System/390等)的具有很大影响力的操作系统。 注:Pentium, Pentium II等等均属于i386系列体系结构)。 本课程将主要针对 i386 CPU。,为什么要用Linux,免费或少花费用 减少在硬件升级上的开支 根据您的需求灵活定制 从许可证的限制中解脱 稳定性 性能 标准兼容性 众多的硬件支持特性 强大因特网支持 能与现有存在的操作系统共存,Linux的现状,Linux的用户 个人用户:是潜在用户。 专业用户:学习内核功能,从中找到有用的思想;从源代码中获得编程技巧。 商业用户:看重

7、Linux的安全性、可靠性和低廉的费用。,Linux的功能,提供WWW服务 打印服务 数据库服务 网络服务 典型应用,Linux的欠缺,字处理软件、表格处理软件等没有Word、Excel等功能强 操作易用性、安装易用性、配置易用性 在可靠性方面,没有一个成熟的双机热备份系统,Linux与发展我国自主的操作系统,发展我国自主的操作系统,这里的“自主”,不是有“自己的知识产权”,因为在自主的技术中可以包含公有技术和其他不收使用费(版权费)的技术。如果采用Linux作为自主操作系统的核心,它是自由软件,属于不收版权费的技术,它的知识产权属于Linux群体。 采用Linux作为OS核心可以达到自主,即

8、得到源码,自主发布版本,可以根据用户的需求进行定制,可以修改、发展等等,当然,同时也要遵守它的公用许可证(GPL)条款。 发展在OS上的支撑软件、应用软件,发展PC以外的嵌入式OS 。,操作系统自主的意义,为什么要发展自主操作系统,保障网络及信息安全 Windows存在问题 不提供源代码,像一个“黑盒子” 改变软件产业游戏规则 Windows的垄断,世界市场占95%,中国市场占95% Windows与其他应用软件捆绑,使民族产业受到威胁 未来OS是Windows和Linux之争,Linux与Windows的争夺,Linux作为Internet服务器的理由,机遇,OS/2的教训 曾经辉煌到能与W

9、indows平起平坐,但现在已退出操作系统舞台 Linux的机遇 开放源码的前景 我国的具体情况,自主操作系统的内容,1. 采用Linux作为自主OS的核心,并免费取得源码。当然,按照GPL的规定,对Linux核心的任何改进,源码也必须开放。 2在Linux核心的基础上,我们可以按照特定的环境和需求定制成OS的各个“发行版本”,操作系统的发行版本可以包含与其捆绑在一起的支撑软件和应用软件。,自主操作系统的内容,3围绕Linux进行开发、增值、集成工作,这包括对OS核心的改进,增加驱动程序和设备支持,简化安装、配置,开发对用户友好的界面,开发运行于Linux平台的中间件和应用软件等等。 4加强对

10、Linux的技术支持、服务,要看到服务业的重要性。 5发展Linux的培训工作。如果能将Linux的培训与计算机OS的教学、计算机资格考试等等结合起来,将对它的推广产生深远的影响。,红旗Linux,北京中科红旗软件技术有限公司(简称红旗软件)是由中国科学院软件研究所和上海联创投资管理有限公司在2000年6月份共同组建的。 红旗软件致力红旗Linux操作系统及应用软件的开发和推广;提供包括桌面、服务器、高性能运算系统、安全操作系统到嵌入式系统的全线产品,以及全方位应用解决方案和技术服务。,红旗Linux,红旗嵌入式Linux秉承了开放的Linux的诸多优秀性能,并经过红旗的精心优化和裁减,从而更

11、加适用于嵌入式设备。现在,您可以在移动计算平台(PDA、Smart Phone、E-book)、信息家电(机顶盒)、工业(智能工控设备)、商业(POS/ATM)等众多的嵌入式设备中看到红旗嵌入式Linux的身影。,POSIX可移植操作系统接口,POSIX(可移植 UNIX 操作系统接口)是由业界众多公司开发并正在进一步开发的标准。最早的标准在 1988 年被采用,在很大程度上基于System V 接口。已采用的 POSIX 标准包括: POSIX.1 - 用于 C 程序的基础系统接口。1988 年采用,1990 年修订。 POSIX.2 - Shell 和公用程序,包括交互式公用程序和几个 C

12、 接口。1992 年采用。 POSIX.3 - 用于衡量 POSIX 遵从性的测试方法。1991 年采用。 POSIX.3.1 - 用于衡量 POSIX.1 遵从性的测试方法。1993 年采用。 POSIX.4 - POSIX.1 的实时扩展。1993 年采用。 POSIX.5 - 绑定到 POSIX.1 的 Ada 语言。描述与 POSIX.1 相同的功能,可通过 Ada 程序访问。1992 年采用。 POSIX.9 - 绑定到 POSIX.1 的 FORTRAN77 语言。描述与 POSIX.1 相同的功能,可通过 FORTRAN77 程序访问。1992 年采用。,GNU GPL (GNU

13、通用公共许可证 ),其宗旨是保证用户有无限复制和修改的权利。copyleft 它要求用户在发布源码时不收费、不附加其他条款,并必须附带GPL的条款。这样,无论任何人是否作了修改,在重新发布软件时,都必须连带传递复制和修改该软件的自由度。 版权所有(C)1989,1991 Free Software Foundation, Inc,Linux遵从GNU 的GPL第二版。 你可以自由获取Linux内核源代码并任意修改它来使用,但如果你要发布你修改过的内核,则必须保证你的内核源码可以被任何人使用和修改。 因为可以获取Linux内核源代码,所以你能够自行配制你的内核成为你想要的样子。,自由软件基金会(

14、FSF),自由软件基金会(Free Software Foundation, Inc.)致力于消除对计算机程序在复制、分发、理解和修改方面的限制。通过在所有计算领域中开发和使用自由软件尤其是通过帮助开发GNU操作系统的方式来实现这一目标。 自由软件基金会致力于开发新的自由软件,以及将这些软件构造成为一个协调一致的系统。 除了开发GNU之外,FSF还分发GNU软件的拷贝和手册,只收取分发费用,它还接受免税的馈赠以支持GNU的开发。FSF的大多数资金来自它的软件分发服务。,1.2 Linux内核和Unix内核的比较,单内核与微内核 单内核:把内核从整体上作为一个单独的大过程来实现,并同时运行在一个

15、单独的地址空间。所有内核服务都在这样的一个大内核空间中运行。 大多数Unix系统都设计为单内核。 微内核:它的功能被划分为独立的过程,每个过程叫做一个服务。所有的服务都保持独立并运行在各自的地址空间。 Windows是典型的微内核结构。,Linux是一个单内核,也即,Linux内核运行在单独的内核地址空间。 但Linux也汲取了微内核的精华,如:模块化设计、抢占式内核、支持内核线程、动态装载内核模块。,Linux内核与Unix内核的比较,Linux支持动态加载内核模块 Linux支持SMP(Symmetrical MultiProcessor,对称多处理) Linux 内核可以抢占 Linux

16、内核并不区分线程和一般进程 Linux提供具有设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统 Linux忽略了一些设计拙劣的Unix特性 Linux是免费的,1.3 Linux内核版本,Linux内核版本号命名规则: 主版本号.次版本号.修订版本号 当次版本号为偶数,内核为稳定版; 奇数,内核为开发版。 如:2.4.33,2.6.17均为稳定版。 2006年8月23日发布了2.6.17.11版内核。,本课程分析的内核版本,与教材相配合,本课程采用2.6.10版的内核作为实例进行分析。,1.4 获取、阅读内核源代码,官方网站:http:/www.kernel.org 新版本的

17、内核的发布有两种形式: 完整的内核版本:比较大,一般是.tar.bz2或者.tar.gz文件 patch文件,即补丁:比较小,一般只有几十K到几百K,但是patch文件是针对于特定的版本的,你需要找到自己对应的版本才能使用,源代码阅读工具,Windows平台下的阅读工具:Source Insight。 Source Insight的使用简单介绍如下:先选择Project菜单下的new,新建一个工程,输入工程名,接着要求你把欲读的源代码加入(可以整个目录加)后,该软件就分析你所加的源代码。分析完后,就可以进行阅读了。对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条

18、上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。,阅读源代码,阅读Linux内核源代码的基本要求: 操作系统的基本知识; 对C语言比较熟悉,最好了解汇编语言的知识和GNU C对标准C的扩展的知识。 另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。现代操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内源代码就可看出,各个目录大致对应了这些方面。 Linux内核源代码的组成见第9页表2-1。,内核源码树,2.4.33,内核源码树,2.6.17.8,内核源代码树 (1),内核源代码的顶层是/usr/src/linux,此目录下

19、有: (1) arch:与体系结构相关的代码 alpha:DEC Alpha CPU工作站 arm:ARM系列CPU,如Corel的 NetWinder 和AcornRisc PC i386:Intel公司的80386CPU m68k:Motorola公司的680X0CPU,如Apple公司Macintosh计算机 mips:MIPS CPU,最著名的是Silicon Graphics(SGI)工作站 ppc: Motorola/IBM的PowerPC系列CPU,IBM的RS/6000计算机 sparc:UltraSPARC CPU,SUN公司产品,内核源代码树 (2),(2) crypto:

20、 crypto API (3) Document:有关Linux内核的文档 (4) drivers: 设备驱动程序 (5) fs: Linux支持的文件系统,每个子目录分别对应一个特定的文件系统 (6) include: 包含了所有的.h文件,在include中也是为各种CPU都专设一个子目录,而通用的子目录asm则根据系统的配置而符号链接到具体CPU的专用子目录,如asm-i386等。除此之外,还有通用的子目录linux、net等,内核源代码树 (3),(7) init: 内核引导和初始化过程,包括main.c,version.c等文件 (8) ipc:进程间通信 (9) kernel :进

21、程管理和调度 (10) lib: 通用的工具性子程序,如对出错信息的处理等 (11) mm:内存管理子系统和VM (12) net: 网络子系统 (13) scripts: 编译内核所用的脚本,内核源代码树 (4),(14) security: Linux安全模块 (15) sound: 语音子系统 (16) usr: 早期用户空间代码 (17) CPOYING: 有关GPL的具体说明 (18) README: Linux内核安装和使用的简要说明 (19) Makefile: 重构Linux内核可执行代码的make文件,1.5 编译内核,为什么要重新编译内核? Linux作为一个自由软件,在广

22、大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效、更稳定的内核,就需要重新编译内核。 通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。,设置内核编译配置选项,为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑: 自己定制编译的内核运行更快(具有更少的代码) 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) 不

23、需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核中的方式速度要慢一些,内核编译模式,要增加对某部分功能(比如网络)的支持,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。 如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。 如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态

24、加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。,安装内核源代码,编译内核需要root权限,以下操作都假定你是root用户。 把新版本的内核(以linux-2.4.33.tar.bz2为例)拷贝到/usr/src/下,并解压,命令为: tar -xjvf linux-2.4.33.tar.bz2 或: tar -xzvf linux-2.4.33.tar.gz 解压后的源代码位于/usr/src/linux-2.4.33目录下,准备编译内核,为/usr/src/linux-2.4.33目录创建符号链接: # cd /usr/src # ln s linux-2.4.33 linu

25、x,配置内核,内核提供了各种不同的工具来简化内核配置: # make config(基于文本的最为传统的配置界面,不推荐使用) # make menuconfig(基于文本菜单的配置界面,字符终端下推荐使用) # make xconfig(基于图形窗口模式的配置界面,X window下推荐使用) # make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦),检查代码之间的依赖关系,# make dep 读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要。 # make clean 删除前面步骤留下的临时文件,以避免出现

26、一些错误。,编译内核,# make bzImage或make zImage 该命令完成内核的编译。二者生成的内核都是使用gzip压缩的,其区别在于使用make bzImage可以生成大一点的内核。 建议使用make bzImage命令。 # make modules 编译模块 # make modules_install 安装模块,即把模块拷贝到需要的目录中,安装内核,# make install 把内核安装到正确的位置 如果使用GRUB启动管理器,编辑/boot/grub/grub.conf文件 如果使用LILO启动管理器,编辑/etc/lilo.conf,并运行/sbin/lilo v命令 重启机器,使用新的内核,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1