【文档说明】第1章Linux内核简介课件.ppt,共(50)页,298.688 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-55017.html
以下为本文档部分文字说明:
第1章Linux内核基础本章主要内容Linux简介Linux内核和Unix内核的比较Linux内核版本获取、阅读内核源代码编译内核1.1Linux简介Linux的起源:UNIXLinux的产生为什么使用LinuxLinux的现状Linux与发展我国自主的操作系统Linux的
起源:UNIX70年代——Unix的初始发展阶段1969年,在AT&T贝尔实验室,KenThompson、DennisRitchie和其他的研究人员开发了一个操作系统,这个新的操作系统称为UNIX。1971年UNIX移植到PDP-11上,第一次得到实用。此时的系统全部
用汇编语言写成;1973年用C语言重写UNIX核心,系统变得极为便于理解、修改和移植;1976年的V6是第一个在Bell实验室以外可以使用的版本。1977年UNIX成为产品;同期开始被移植到各种类型的机器上,并产生了许多
变种版本。如移植到VAX机上形成32位的UNIXV7。Linux的起源:UNIX80年代——Unix的丰富发展时期1981年Bell实验室推出UNIXSYSTEMIII。一个重要的分支是BSD版(BerkeleyUNIX)。由加利福尼
亚大学伯利克分校开发。它在UNIX中增加了很多显著的特征,如TCP/TP网络、UFS文件系统,并改进了内存管理代码,采用页。90年代——Unix的完善阶段Bell实验室推出UNIXSystemVRel
ease4。伯克利的4.3BSD已经形成了当前Unix的两大流派Linux的出现UNIX的重要分支SUN公司的SunOS与SolarisSUN公司在4.2BSDUNIX基础上加进系统V形成SunOS,后来由
SunSoft继续开发,形成SYSTEMV基础上的Solaris。硬件平台:SunSparc、IntelPC工作站和服务器SCO公司的SCOUNIXSCOUnix使用Intel的平台,较早进入中国市场。它的历史追溯到MicroSoft开发的Xienx,Xienx是运行在Intel平台上的
一种基于UnixV6的系统。Xienx开发部门独立出来成立了SCO公司,并基于AT&TSystemVR3.2开发了SCOUnix,其最新的版本为增强了图形接口的SCOOpenServer5.0.4。AT&T将Unix系统实验室卖给了Novell公司,它们的Unix被更名为UnixWare。
但是Novell正逢经营问题,不得不将UnixWare再次卖给SCO。硬件平台:IntelPC工作站和服务器UNIX的重要分支IBM公司的IBMAIX硬件平台:IBMRS/6000和其它使用IBMPowe
r和PowerPC系列处理器的系统,IntelAI-64版。HP公司的Hewlett-PackardHP-UX硬件平台:HP9000服务器Linux的产生RichardStallman于1984年独立开发出一个类UNIX的操作系统。Stallman的理想就是“开发
出一个质量高而自由的操作系统”。为此他创立了自由软件基金会,资助GNU(GNUisNotUnix的缩写)软件开发。之后GNU开发了gcc、Emacs等大量的程序。芬兰学生LinusTorvalds于1991年
为基于Intel80386的IBM兼容机开发了Linux操作系统。Linux的产生Linux在加入自由软件组织GNU后,经过Internet上全体开发者的共同努力,已成为能够支持各种体系结构(包括Alpha、SPARC、PowerPC、MC680x0、IBMSystem/390等)的具有
很大影响力的操作系统。注:Pentium,PentiumII等等均属于i386系列体系结构)。本课程将主要针对i386CPU。为什么要用Linux免费或少花费用减少在硬件升级上的开支根据您的需求灵活定制从许可证的限制中解脱
稳定性性能标准兼容性众多的硬件支持特性强大因特网支持能与现有存在的操作系统共存Linux的现状Linux的用户个人用户:是潜在用户。专业用户:学习内核功能,从中找到有用的思想;从源代码中获得编程技巧。商业用户:看重Linux的安全性、可靠性和低廉的费用。Linux的功能
提供WWW服务打印服务数据库服务网络服务典型应用Linux的欠缺字处理软件、表格处理软件等没有Word、Excel等功能强操作易用性、安装易用性、配置易用性在可靠性方面,没有一个成熟的双机热备份系统Linux与发展我国
自主的操作系统发展我国自主的操作系统,这里的“自主”,不是有“自己的知识产权”,因为在自主的技术中可以包含公有技术和其他不收使用费(版权费)的技术。如果采用Linux作为自主操作系统的核心,它是自由软件,属于不收版权费的技术,它的知识产权属于Lin
ux群体。采用Linux作为OS核心可以达到自主,即得到源码,自主发布版本,可以根据用户的需求进行定制,可以修改、发展等等,当然,同时也要遵守它的公用许可证(GPL)条款。发展在OS上的支撑软件、应用软件,发展PC以外的嵌入式OS。操作系统自主的意义
自主OS依赖别家的OS掌握源代码,可以自主开发不掌握源代码,依赖厂商发展不需要版权费需要版权费可根据需求自行定制依赖厂商有偿定制使用不受限制使用受限制安全性可以估量和增强安全性难以估量和增强可以自主发布版本依赖厂商更新版本可以发挥
人才优势英雄无用武之地为什么要发展自主操作系统保障网络及信息安全Windows存在问题不提供源代码,像一个“黑盒子”改变软件产业游戏规则Windows的垄断,世界市场占>95%,中国市场占>95%Windows与其他应用软件捆
绑,使民族产业受到威胁未来OS是Windows和Linux之争Linux与Windows的争夺Linux作为Internet服务器的理由Windows平台(98/NT/2000/XP)Linux平台依赖微软自主发展巨额版权费节省版
权费与微软的不平等竞争与其他公司的平等竞争安全有隐患安全可改进助长垄断摆脱垄断机遇OS/2的教训曾经辉煌到能与Windows平起平坐,但现在已退出操作系统舞台Linux的机遇开放源码的前景我国的具体情况自主操作系统的内容1.采用Linux作为自主OS的核心,并免费取得源码
。当然,按照GPL的规定,对Linux核心的任何改进,源码也必须开放。2.在Linux核心的基础上,我们可以按照特定的环境和需求定制成OS的各个“发行版本”,操作系统的发行版本可以包含与其捆绑在一起的支撑软件
和应用软件。自主操作系统的内容3.围绕Linux进行开发、增值、集成工作,这包括对OS核心的改进,增加驱动程序和设备支持,简化安装、配置,开发对用户友好的界面,开发运行于Linux平台的中间件和应用软件等等。4.加强对Linux的技术支持、服务,要看到服务业的重要性。5
.发展Linux的培训工作。如果能将Linux的培训与计算机OS的教学、计算机资格考试等等结合起来,将对它的推广产生深远的影响。红旗Linux北京中科红旗软件技术有限公司(简称红旗软件)是由中国科学院软件研究所和上
海联创投资管理有限公司在2000年6月份共同组建的。红旗软件致力红旗Linux操作系统及应用软件的开发和推广;提供包括桌面、服务器、高性能运算系统、安全操作系统到嵌入式系统的全线产品,以及全方位应用解决方案和技术服务。红旗Linux红旗嵌入式Linux秉承了开放的Linux的诸多优秀性能,并
经过红旗的精心优化和裁减,从而更加适用于嵌入式设备。现在,您可以在移动计算平台(PDA、SmartPhone、E-book)、信息家电(机顶盒)、工业(智能工控设备)、商业(POS/ATM)等众多的嵌入式设
备中看到红旗嵌入式Linux的身影。POSIX—可移植操作系统接口POSIX(可移植UNIX操作系统接口)是由业界众多公司开发并正在进一步开发的标准。最早的标准在1988年被采用,在很大程度上基于SystemV接口。已采用的POSIX标准包括:POSIX.1-
用于C程序的基础系统接口。1988年采用,1990年修订。POSIX.2-Shell和公用程序,包括交互式公用程序和几个C接口。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年采用。GNUGPL–(GNU通用公共许可证)其宗旨是保证用户有无限复制和修改的权利。
——copyleft它要求用户在发布源码时不收费、不附加其他条款,并必须附带GPL的条款。这样,无论任何人是否作了修改,在重新发布软件时,都必须连带传递复制和修改该软件的自由度。版权所有(C)1989,1991FreeSoftwareFoundation,Inc.Linux遵
从GNU的GPL第二版。你可以自由获取Linux内核源代码并任意修改它来使用,但如果你要发布你修改过的内核,则必须保证你的内核源码可以被任何人使用和修改。因为可以获取Linux内核源代码,所以你能够自行配制你的内核成为你想要的样子。自由软件基金会(FSF)
自由软件基金会(FreeSoftwareFoundation,Inc.)致力于消除对计算机程序在复制、分发、理解和修改方面的限制。通过在所有计算领域中开发和使用自由软件——尤其是通过帮助开发GNU操作系统的方式来实现这一目标。自由软件基金会致力于开发新的
自由软件,以及将这些软件构造成为一个协调一致的系统。除了开发GNU之外,FSF还分发GNU软件的拷贝和手册,只收取分发费用,它还接受免税的馈赠以支持GNU的开发。FSF的大多数资金来自它的软件分发服务。1.2Linux内核和Unix内核的比较单内核与微内核单内核:把内核从整体上作为一个
单独的大过程来实现,并同时运行在一个单独的地址空间。所有内核服务都在这样的一个大内核空间中运行。大多数Unix系统都设计为单内核。微内核:它的功能被划分为独立的过程,每个过程叫做一个服务。所有的服务都保持独立并运行在各自的地址空间。Wind
ows是典型的微内核结构。Linux是一个单内核,也即,Linux内核运行在单独的内核地址空间。但Linux也汲取了微内核的精华,如:模块化设计、抢占式内核、支持内核线程、动态装载内核模块。Linux内核与Unix内核的比较Linux支持动态加载内
核模块Linux支持SMP(SymmetricalMultiProcessor,对称多处理)Linux内核可以抢占Linux内核并不区分线程和一般进程Linux提供具有设备类的面向对象的设备模型、热插拔事件,以
及用户空间的设备文件系统Linux忽略了一些设计拙劣的Unix特性Linux是免费的1.3Linux内核版本Linux内核版本号命名规则:主版本号.次版本号.修订版本号当次版本号为偶数,内核为稳定版;奇数,内核为开发版。如:2.4.33,2.6.17均为稳定版。2006
年8月23日发布了2.6.17.11版内核。本课程分析的内核版本与教材相配合,本课程采用2.6.10版的内核作为实例进行分析。1.4获取、阅读内核源代码官方网站:http://www.kernel.org新版本的
内核的发布有两种形式:完整的内核版本:比较大,一般是.tar.bz2或者.tar.gz文件patch文件,即补丁:比较小,一般只有几十K到几百K,但是patch文件是针对于特定的版本的,你需要找到自己对应的版本才能使用源代码阅
读工具Windows平台下的阅读工具:SourceInsight。SourceInsight的使用简单介绍如下:先选择Project菜单下的new,新建一个工程,输入工程名,接着要求你把欲读的源代码加入(可以整个目录
加)后,该软件就分析你所加的源代码。分析完后,就可以进行阅读了。对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。阅读源
代码阅读Linux内核源代码的基本要求:操作系统的基本知识;对C语言比较熟悉,最好了解汇编语言的知识和GNUC对标准C的扩展的知识。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。现代操作系统一般由进程管
理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成见第9页表2-1。内核源码树2.4.33内核源码树2.6.17.8内核源代码树(1)内核源代码的顶层是/usr/src/li
nux,此目录下有:(1)arch:与体系结构相关的代码alpha:DECAlphaCPU工作站arm:ARM系列CPU,如Corel的NetWinder和AcornRiscPCi386:Intel公司的80386CPUm68k:
Motorola公司的680X0CPU,如Apple公司Macintosh计算机mips:MIPSCPU,最著名的是SiliconGraphics(SGI)工作站ppc:Motorola/IBM的PowerPC系列CPU,IBM的RS/6000计算
机sparc:UltraSPARCCPU,SUN公司产品内核源代码树(2)(2)crypto:cryptoAPI(3)Document:有关Linux内核的文档(4)drivers:设备驱动程序(5)fs:Linux支持的文件系统,每个子目
录分别对应一个特定的文件系统(6)include:包含了所有的.h文件,在include中也是为各种CPU都专设一个子目录,而通用的子目录asm则根据系统的配置而符号链接到具体CPU的专用子目录,如asm-i386等。除此之外,还有通用的子目录linu
x、net等内核源代码树(3)(7)init:内核引导和初始化过程,包括main.c,version.c等文件(8)ipc:进程间通信(9)kernel:进程管理和调度(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作为一个自由软件,在广大爱好者的支
持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效、更稳定的内核,就需要重新编译内核。通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、
更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。设置内核编译配置选项为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:自己定制编译的内核运行更快(具有更少的代码)系统将拥
有更多的内存(内核部分将不会被交换到虚拟内存中)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞将某种功能编译为模块方式会比编译到内核中的方式速度要慢一些内核编译模式要增加对某部分功能(比如网络)的支持,可以把相应部分编译到
内核中(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Wi
ndows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。安装内核源代码编译内核需要root
权限,以下操作都假定你是root用户。把新版本的内核(以linux-2.4.33.tar.bz2为例)拷贝到/usr/src/下,并解压,命令为:tar-xjvflinux-2.4.33.tar.bz2或:tar-xzvfl
inux-2.4.33.tar.gz解压后的源代码位于/usr/src/linux-2.4.33目录下准备编译内核为/usr/src/linux-2.4.33目录创建符号链接:#cd/usr/src#ln–slinux-2.4.3
3linux配置内核内核提供了各种不同的工具来简化内核配置:#makeconfig(基于文本的最为传统的配置界面,不推荐使用)#makemenuconfig(基于文本菜单的配置界面,字符终端下推荐使用)#makexconfig(基于图形窗口模式的配置
界面,Xwindow下推荐使用)#makeoldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)检查代码之间的依赖关系#makedep读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要。#makeclean删除前面步骤留
下的临时文件,以避免出现一些错误。编译内核#makebzImage或makezImage该命令完成内核的编译。二者生成的内核都是使用gzip压缩的,其区别在于使用makebzImage可以生成大一点的内核。建议使用makebzImage命令。#makemodules编译模块#make
modules_install安装模块,即把模块拷贝到需要的目录中安装内核#makeinstall把内核安装到正确的位置如果使用GRUB启动管理器,编辑/boot/grub/grub.conf文件如果使用LILO启动管理器,编
辑/etc/lilo.conf,并运行/sbin/lilo–v命令重启机器,使用新的内核