




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Linux内核基础,本章主要内容,Linux简介Linux内核和Unix内核的比较Linux内核版本获取、阅读内核源代码编译内核,1.1Linux简介,Linux的起源:UNIXLinux的产生为什么使用LinuxLinux的现状Linux与发展我国自主的操作系统,Linux的起源:UNIX,70年代Unix的初始发展阶段1969年,在AT&T贝尔实验室,KenThompson、DennisRitchie和其他的研究人员开发了一个操作系统,这个新的操作系统称为UNIX。1971年UNIX移植到PDP-11上,第一次得到实用。此时的系统全部用汇编语言写成;1973年用C语言重写UNIX核心,系统变得极为便于理解、修改和移植;1976年的V6是第一个在Bell实验室以外可以使用的版本。1977年UNIX成为产品;同期开始被移植到各种类型的机器上,并产生了许多变种版本。如移植到VAX机上形成32位的UNIXV7。,Linux的起源:UNIX,80年代Unix的丰富发展时期1981年Bell实验室推出UNIXSYSTEMIII。一个重要的分支是BSD版(BerkeleyUNIX)。由加利福尼亚大学伯利克分校开发。它在UNIX中增加了很多显著的特征,如TCP/TP网络、UFS文件系统,并改进了内存管理代码,采用页。90年代Unix的完善阶段Bell实验室推出UNIXSystemVRelease4。伯克利的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和其它使用IBMPower和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、MC680 x0、IBMSystem/390等)的具有很大影响力的操作系统。注:Pentium,PentiumII等等均属于i386系列体系结构)。本课程将主要针对i386CPU。,为什么要用Linux,免费或少花费用减少在硬件升级上的开支根据您的需求灵活定制从许可证的限制中解脱稳定性性能标准兼容性众多的硬件支持特性强大因特网支持能与现有存在的操作系统共存,Linux的现状,Linux的用户个人用户:是潜在用户。专业用户:学习内核功能,从中找到有用的思想;从源代码中获得编程技巧。商业用户:看重Linux的安全性、可靠性和低廉的费用。,Linux的功能,提供WWW服务打印服务数据库服务网络服务典型应用,Linux的欠缺,字处理软件、表格处理软件等没有Word、Excel等功能强操作易用性、安装易用性、配置易用性在可靠性方面,没有一个成熟的双机热备份系统,Linux与发展我国自主的操作系统,发展我国自主的操作系统,这里的“自主”,不是有“自己的知识产权”,因为在自主的技术中可以包含公有技术和其他不收使用费(版权费)的技术。如果采用Linux作为自主操作系统的核心,它是自由软件,属于不收版权费的技术,它的知识产权属于Linux群体。采用Linux作为OS核心可以达到自主,即得到源码,自主发布版本,可以根据用户的需求进行定制,可以修改、发展等等,当然,同时也要遵守它的公用许可证(GPL)条款。发展在OS上的支撑软件、应用软件,发展PC以外的嵌入式OS。,操作系统自主的意义,为什么要发展自主操作系统,保障网络及信息安全Windows存在问题不提供源代码,像一个“黑盒子”改变软件产业游戏规则Windows的垄断,世界市场占95%,中国市场占95%Windows与其他应用软件捆绑,使民族产业受到威胁未来OS是Windows和Linux之争,Linux与Windows的争夺,Linux作为Internet服务器的理由,机遇,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系统都设计为单内核。微内核:它的功能被划分为独立的过程,每个过程叫做一个服务。所有的服务都保持独立并运行在各自的地址空间。Windows是典型的微内核结构。,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日发布了1版内核。,本课程分析的内核版本,与教材相配合,本课程采用2.6.10版的内核作为实例进行分析。,1.4获取、阅读内核源代码,官方网站:新版本的内核的发布有两种形式:完整的内核版本:比较大,一般是.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,内核源码树,,内核源代码树(1),内核源代码的顶层是/usr/src/linux,此目录下有:(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等。除此之外,还有通用的子目录linux、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),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。,安装内核源代码,编译内核需要root权限,以下操作都假定你是root用户。把新版本的内核(以linux-2.4.33.tar.bz2为例)拷贝到/usr/s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江省建筑安全员《B证》考试题库
- 《公共政策学》题库及答案 2
- 西安信息职业大学《商业伦理》2023-2024学年第二学期期末试卷
- 2024-2025学年山东省聊城市高唐县第二中学高三上学期12月月考历史试卷
- 武汉船舶职业技术学院《R语言与数据可视化》2023-2024学年第二学期期末试卷
- 湖南财经工业职业技术学院《斜视弱视学》2023-2024学年第二学期期末试卷
- 2025青海省安全员《C证》考试题库
- 潍坊理工学院《经济统计学》2023-2024学年第二学期期末试卷
- 临夏现代职业学院《数字信号处理A》2023-2024学年第二学期期末试卷
- 平顶山学院《安全类专业写作》2023-2024学年第二学期期末试卷
- 《网络服务器搭建、配置与管理-Linux(RHEL8、CentOS8)(微课版)(第4版)》全册电子教案
- 心理评估与诊断简介
- 无痛病房管理课件
- 让孩子变成学习的天使——由《第56号教室的奇迹》读书分享
- 球泡检验标准
- 公安笔录模板之询问嫌疑人(书面传唤治安案件)
- 振动分析基础讲义1
- 记账凭证汇总表excel模板
- 邓丽君经典歌曲30首简谱(共33页)
- 故障诊断技术的国内外发展现状(共3页)
- 园林绿化施工通用表格模板
评论
0/150
提交评论