




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统 及程序设计 教学目标:掌握Linux系统组成特点、常用命 令和使用方法;深入了解和掌握Linux系统的内 部结构、编译、调试和运行系统程序的方法; 对Linux操作系统建立一个全面、系统的认识, 进而对现代操作系统的设计方法和有较全面的 认识,为进一步学习和应用打下基础。 教学主要内容:Linux系统基本使用,shell 及其编程,Linux文件系统,多进程与多线程程 序设计,进程间通信 教学时数:讲解辅助下的实验30学时 第一讲 Linux 简介 初步掌握Linux系统安装、实验环境构建和基 本特点。 Linux概述 Linux网络操作系统 1990年,Linus Torvalds在一台386 AT计算机 上,根据Andrew S. Tanenbaum教授的MINIX开发 的一个OS内核。 两个进程交替运行,分别打印A和B 增加驱动程序、文件系统 Linux发展迅速 世界500强超级计 算机系统统计 表 (按操作系统分类统计 2007.6) OS FamilyCountShare %Rmax Sum (GF) Rpeak Sum (GF) Processor Sum Linux38977.80%31180604809959615612 Unix6012.00%532647728573120394 Mixed428.40%11944731496163469052 BSD Based40.80%52899591865952 Mac OS30.60%32989530086296 Windows20.40%15518363573808 Totals500100%4946586.057183245.391221114 Linux的应用发展方向 超级计算机系统 通用计算机系统 嵌入式计算机系统 Linux与Unix的关系 POSIX标准(1990/1996) Portable Operating System Interface of UNIX UNIX标准之争的产物,描述了系统调用、编程接口 API、Shell机制和基本命令集、实时性、信号量机制等设 计操作系统许多方面的规范。 自由软件 自由软件基金会 (FSF Free Software Foundation) Richard M. Stallman FSF创始人 自由软件是指其使用者对该软件有使用、复制、 分发、研究、改写、再利用的自由。 自由是关乎权利,而非价格 Free指“自由”,而不是“免费” Linux与自由软件和开源软件 自由权利 自由之一:不论目的为何,都有使用该软件的自由 。 自由之二:有研究该软件如何工作的自由,并且可 以改写软件,以符合使用者的需求。 前提:可以获得该软件的源代码。 自由之三:有重新散布该软件的自由,所以每个人 都可以通过分发自由软件来帮助他人。 自由之四:有改进该软件的自由,并且公开发布软 件的改进版本,使整个社群都可以受益。 前提:获得该软件的源代码。 一般在软件许可(License)中说明。 GNU项目 GNUs Not Unix (有点奇怪? 是什么意思呢?) GNU GPL GNU General Public License GNU读作g-noo GNU是一个类Unix操作系统 采用Linux作为内核 Richard Stallman专门写了一篇文章讲述来试图澄 清Linux与GNU项目的关系: Linux and the GNU Project 典型的桌面环境:GNOME,KDE 开源软件 Open Source 是一种软件开发方法 旨在保证更好的质量、更高的可靠性、更大的灵活 性、更低的费用,结束软件开发公司对使用者所进 行的“掠夺” 。 开源也有自己的许可,其中重要的一条就是开源软 件要公开源代码,这个许可尚处于讨论之中。 Linux特点 类Unix(Unix-like)操作系统 其他类UNIX系统包括Solaris、Mac OS等 基于GPL(GNU Public License)的自由操作系 统 第一个版本发行于1991年 主要用C语言编写,部分代码用汇编语言编 写 “Linux”在不同语境下的内涵不同 Linux内核、Linux系统、Linux开发套件等 严格来说,Linux指由Linux Torvalds维护(及通 过主要镜像网站发布)的内核 14 LinuxLinux发展史发展史 19911991年年1111月,芬兰赫尔辛基大学的月,芬兰赫尔辛基大学的 Linus TorvaldsLinus Torvalds 编写了一个小程序(取名为编写了一个小程序(取名为LinuxLinux),发布在互联),发布在互联 网上网上 希望借此实现一个操作系统希望借此实现一个操作系统“ “内核内核” ” 19931993年年 一批高水平网络黑客参与,诞生一批高水平网络黑客参与,诞生Linux 1.0 Linux 1.0 版版 19941994年年 Linux Linux 的第一个商业版的第一个商业版 SlackwareSlackware 问世问世 19961996年年 美国国家标准技术局计算机系统实验室确认美国国家标准技术局计算机系统实验室确认 Linux Linux 版本版本.13符合符合 POSIX POSIX 标准标准 20012001年年 Linux2.4Linux2.4版内核发布版内核发布 20032003年年 Linux2.6Linux2.6版内核发布版内核发布 Linux简介 15 LinuxLinux操作系统特征操作系统特征 符合符合POSIXPOSIX标准规范的操作系统标准规范的操作系统 Portable Operation System Interface of UnixPortable Operation System Interface of Unix:可:可 移植的操作系统接口移植的操作系统接口 由由IEEEIEEE开发,开发,ANSIANSI和和ISOISO标准化标准化 具备现代操作系统的基本功能具备现代操作系统的基本功能 抢占式多任务处理,支持多用户抢占式多任务处理,支持多用户 图形用户接口图形用户接口 异构硬件支持异构硬件支持 支持支持SMPSMP 支持支持TCP/IPTCP/IP 多体系结构支持,支持多体系结构支持,支持32/6432/64位位CPUCPU 拥有其他操作系统没有的特色拥有其他操作系统没有的特色 NFSNFS、VFSVFS、高效的、高效的EXTEXT系列文件系统等系列文件系统等 Linux简介 代表一种开源文化代表一种开源文化 免费软件,开放源代码免费软件,开放源代码 自由软件自由软件,可在原有程序基础上开发自己的程可在原有程序基础上开发自己的程 序序 GNU/LinuxGNU/Linux LinuxLinux仅指仅指LinuxLinux内核内核 LinuxLinux系统的大部分应用都建立在系统的大部分应用都建立在GNUGNU软件之上软件之上 核心结构核心结构 LinuxLinux内核内核 Linux ShellLinux Shell LinuxLinux文件系统文件系统 LinuxLinux应用系统应用系统 GNU ToolsGNU Tools 16 LinuxLinux精髓精髓 Linux简介 17 LinuxLinux的系统结构的系统结构 用户应用程序 系统调用 硬件资源管理接口 Shell,库函数 内核实现 Linux简介 用户态 核心态 不区分的缺陷不区分的缺陷 用户直接修改操作系统的数据用户直接修改操作系统的数据 用户直接调用操作系统的内部函数用户直接调用操作系统的内部函数 用户直接操作外设用户直接操作外设 用户任意读用户任意读/ /写物理内存写物理内存 区分的意义区分的意义 禁止用户程序和底层硬件直接打交道禁止用户程序和底层硬件直接打交道 如果用户程序往硬件控制寄存器写入不恰当的值,如果用户程序往硬件控制寄存器写入不恰当的值, 可能导致硬件无法正常工作可能导致硬件无法正常工作 禁止用户程序访问任意物理内存,否则可能会禁止用户程序访问任意物理内存,否则可能会 破坏其他程序的正常执行破坏其他程序的正常执行 如果对核心内核所在的地址空间写入数据,会导致如果对核心内核所在的地址空间写入数据,会导致 系统崩溃系统崩溃 18 划分用户态划分用户态/ /内核态的必要性内核态的必要性 Linux简介 现代现代CPUCPU都有几种不同指令执行级别都有几种不同指令执行级别 在高执行级别下,代码可以执行在高执行级别下,代码可以执行特权指令特权指令,访,访 问问任意的物理地址任意的物理地址,这种,这种CPUCPU执行级别就对应执行级别就对应 着内核态着内核态 在相应低级别执行状态下,代码的掌控范围会在相应低级别执行状态下,代码的掌控范围会 受到限制,只能在对应级别允许的范围内活动受到限制,只能在对应级别允许的范围内活动 举例举例 intel x86 CPUintel x86 CPU有四种不同的执行级别有四种不同的执行级别0-30-3 LinuxLinux只使用只使用0 0级和级和3 3级分别表示内核态和用户态级分别表示内核态和用户态 19 CPUCPU对用户态对用户态/ /和心态划分的支持和心态划分的支持 Linux简介 cscs寄存器寄存器最低两位最低两位表明当前代码的特权级表明当前代码的特权级 CPUCPU每条指令的读取都是通过每条指令的读取都是通过cs:eipcs:eip这两个寄这两个寄 存器存器 cscs:代码段选择寄存器:代码段选择寄存器 eipeip:偏移量寄存器:偏移量寄存器 上述判断由硬件完成上述判断由硬件完成 在在LinuxLinux中,地址空间是一个显著的标志中,地址空间是一个显著的标志 0xc00000000xc0000000以上地址空间:只能在内核态下访以上地址空间:只能在内核态下访 问问 0x00000000 0xbfffffff0x00000000 0xbfffffff的地址空间:两种状态的地址空间:两种状态 下都可访问下都可访问 注意,这里的地址空间是逻辑地址而不是物理地址注意,这里的地址空间是逻辑地址而不是物理地址 20 用户态用户态/ /和心态的区分方法和心态的区分方法 Linux简介 vvLinuxLinux是是单内核单内核、多模块多模块系统系统 LinuxLinux内核运行在单独的内核地址空间内核运行在单独的内核地址空间 所有操作系统功能作为一个模块所有操作系统功能作为一个模块实现实现在其内核中在其内核中 模块均运行在内核态,直接调用函数,无需消模块均运行在内核态,直接调用函数,无需消 息传递息传递 具备模块化设计、抢占式内核具备模块化设计、抢占式内核(Linux 2.6(Linux 2.6支持,支持,Linux Linux 2.42.4用户级抢占用户级抢占) )、支持内核线程及动态装载内核模块、支持内核线程及动态装载内核模块 的能力的能力 与与UnixUnix主要区别主要区别 LinuxLinux汲取了微内核设计思想(基于模块定制内汲取了微内核设计思想(基于模块定制内 核)核) UnixUnix也是单内核系统也是单内核系统 Windows NTWindows NT和和MachMach是是微内核微内核系统系统 21 LinuxLinux的内核特点的内核特点 Linux简介 22 LinuxLinux单内核结构单内核结构 用户态 标准函数库 系统调用(POSIX标准)接口 模块 内核 (进程管理、存储 管理、文件管理 、设备管理、网 络管理) 设备 驱动 计算机硬件 核心态 单内核 模块 接口 驱动 接口 Linux简介 23 LinuxLinux的内核版本的内核版本 LinuxLinux内核版本指由内核版本指由LinuxLinux开发小组(开发小组(Linus Linus TorvaldsTorvalds总协调)开发出系统内核的版本号总协调)开发出系统内核的版本号 LinuxLinux内核采用内核采用双树系统双树系统 一棵是稳定树,主要用于发行一棵是稳定树,主要用于发行 另一棵是非稳定树(开发树),用于产品开发另一棵是非稳定树(开发树),用于产品开发 和改进和改进 LinuxLinux内核版本号由内核版本号由3 3位数字位数字组成组成 r.x.y 第1位数字r 为主版本号 第2位数字x为说明版本类型的次版 本号: 偶数表示产品化版本 奇数表示实验版本 第3位数字y为修改号, 表示错误修补的次数 Linux简介 24 主流的主流的LinuxLinux发行版本发行版本 Linux简介 25 LinuxLinux与与WindowsWindows的区别的区别 文件系统文件系统 LinuxLinux需要一个挂载需要一个挂载根目录根目录/ /的的extext分区分区和一个作和一个作 为虚拟内存的为虚拟内存的swapswap分区分区 LinuxLinux没有盘符,可通过设备名挂载,挂在信息没有盘符,可通过设备名挂载,挂在信息 在在/dev/fstab/dev/fstab,如,如 mount -t ntfs /dev/sda1 /mnt/win_cmount -t ntfs /dev/sda1 /mnt/win_c LinuxLinux将将所有设备都映射所有设备都映射成成/ /devdev目录目录下的一下的一 个文件个文件 用户管理用户管理 系统管理员是系统管理员是rootroot,使用,使用susu命令切换命令切换 Linux简介 26 主要内容主要内容 LinuxLinux简介简介 LinuxLinux内核环境内核环境 LinuxLinux编程环境编程环境 LinuxLinux的系统初始化的系统初始化 LinuxLinux的程序执行机制的程序执行机制 27 LinuxLinux内核核心组成内核核心组成 进程调度程序:负责控制进程访问进程调度程序:负责控制进程访问CPUCPU 内核管理程序:支持虚拟内存及多进程安全共享主存系统内核管理程序:支持虚拟内存及多进程安全共享主存系统 虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口 网络接口:提供对多种组网标准和网络硬件的访问网络接口:提供对多种组网标准和网络硬件的访问 进程间通信:为进程之间的通信提供实现机制进程间通信:为进程之间的通信提供实现机制 Linux内核环境 28 LinuxLinux内核源码的获取内核源码的获取 下载位置下载位置 以以GNU zipGNU zip和和bzip2bzip2形式发布形式发布 安装位置安装位置 一般安装在一般安装在/usr/src/linux/usr/src/linux,不要将该源码树用于,不要将该源码树用于 开发开发 在编译自己编写的在编译自己编写的C C库所用的内核版本要链接到库所用的内核版本要链接到 该树该树 不要以不要以rootroot身份对内核进行修改,应先建立自己身份对内核进行修改,应先建立自己 的主目录,仅以的主目录,仅以rootroot身份安装新内核身份安装新内核 安装新内核应该保持安装新内核应该保持/usr/src/linux/usr/src/linux原封不动原封不动 Linux内核环境 29 LinuxLinux核心源码结构核心源码结构 Linux内核环境 30 LinuxLinux核心源码的组织核心源码的组织 arch arch 目录目录 包含与体系结构相关的核心代码,相关包含与体系结构相关的核心代码,相关.h.h文件则放在文件则放在 include/asminclude/asm下下 支持的每种支持的每种CPUCPU均有相应子目录,包含均有相应子目录,包含bootboot、kernelkernel 、liblib和和mmmm等子目录等子目录 /kernel/kernel目录目录 存放大多数内核函数存放大多数内核函数 主要文件包括主要文件包括sched.csched.c、time.ctime.c、sys.csys.c、itimer.citimer.c、 fork.cfork.c、signal.csignal.c、softirq.csoftirq.c、resource.cresource.c、dma.cdma.c、 printk.cprintk.c等等 /mm/mm子目录子目录 独立于体系结构独立于体系结构的主存管理文件的主存管理文件 包括实现虚拟主存管理的源代码包括实现虚拟主存管理的源代码 Linux内核环境 /fs/fs目录目录 存放存放VFSVFS和系统支持的各种文件系统源代码和系统支持的各种文件系统源代码 每个子目录对应一个特定文件系统每个子目录对应一个特定文件系统 /include/include目录目录 存放重要的内核存放重要的内核.h.h头文件头文件 为各种为各种CPUCPU专设一个子目录专设一个子目录 通用子目录通用子目录include/linuxinclude/linux、include/netinclude/net /ipc/ipc目录目录 存放处理进程间通信所需源代码存放处理进程间通信所需源代码 31 LinuxLinux核心源码的组织(续)核心源码的组织(续) Linux内核环境 /drivers/drivers目录目录 存放所有设备驱动程序源代码存放所有设备驱动程序源代码 /net/net子目录子目录 存放网络子系统,如各种网卡和网络规程驱动存放网络子系统,如各种网卡和网络规程驱动 程序程序 /security/security目录目录 存放安全子系统代码存放安全子系统代码 /sound/sound目录目录 存放语音子系统代码存放语音子系统代码 32 LinuxLinux核心源码的组织(续)核心源码的组织(续) Linux内核环境 /init/init目录目录 存放内核引导和初始化代码存放内核引导和初始化代码 许多重要文件,如许多重要文件,如main.cmain.c、version.cversion.c就位于该目录就位于该目录 下下 /lib/lib目录目录 存放内核需要的通用工具性内核函数(如对出错信存放内核需要的通用工具性内核函数(如对出错信 息的处理),它能够在引导时解压内核并装入主存息的处理),它能够在引导时解压内核并装入主存 /scripts/scripts目录目录 存放编译内核所用脚本和用于系统配置的命令文件存放编译内核所用脚本和用于系统配置的命令文件 /documentation/documentation目录目录 存放内核源代码文档存放内核源代码文档 33 LinuxLinux核心源码的组织(续)核心源码的组织(续) Linux内核环境 采用采用模块化模块化的内核配置系统的内核配置系统 内核模块内核模块(Loadable Kernel Module)(Loadable Kernel Module)的概念的概念 模块实际上是一种目标对象文件,没有链接,不模块实际上是一种目标对象文件,没有链接,不 能独立运行能独立运行 但是其代码可以在系统运行时链接到系统中作为但是其代码可以在系统运行时链接到系统中作为 内核的一部分运行,或从内核中取下,从而可以内核的一部分运行,或从内核中取下,从而可以 动态扩充内核的功能(不需要重新编译内核)动态扩充内核的功能(不需要重新编译内核) 这种目标代码通常由一组函数和数据结构组成这种目标代码通常由一组函数和数据结构组成 34 LinuxLinux内核的配置组成内核的配置组成 Linux内核环境 vv使得内核更加紧凑和灵活,可扩展使得内核更加紧凑和灵活,可扩展 vv修改模块时,不必全部重新编译整个内核修改模块时,不必全部重新编译整个内核 系统如果需要使用新模块,只要编译相应的模块系统如果需要使用新模块,只要编译相应的模块 ,然后将模块插入即可,然后将模块插入即可 vv模块可以不依赖于某个固定的硬件平台模块可以不依赖于某个固定的硬件平台 vv模块的目标代码一旦被链接到内核,它的模块的目标代码一旦被链接到内核,它的 作用域和静态链接的内核目标代码完全等作用域和静态链接的内核目标代码完全等 价价 35 内核模块的优点内核模块的优点 Linux内核环境 并不是所有地方都使用内核模块并不是所有地方都使用内核模块 设备驱动程序设备驱动程序 文件系统驱动程序文件系统驱动程序 系统调用系统调用 大部分系统调用属于基础内核(大部分系统调用属于基础内核(Basic kernelBasic kernel),也),也 可以以内核模块方式增加新的系统调用或者覆盖现可以以内核模块方式增加新的系统调用或者覆盖现 有基于内核模块方式实现的系统调用有基于内核模块方式实现的系统调用 36 内核模块的使用内核模块的使用 Linux内核环境 程序代码:程序代码:helloworld.chelloworld.c 编译、安装方法编译、安装方法 root# gcc -c helloworld.croot# gcc -c helloworld.c root# insmod helloworld.oroot# insmod helloworld.o root# lsmodroot# lsmod root# rmmod helloworldroot# rmmod helloworld 37 模块示例模块示例 #define MODULE#define MODULE #include #include int init_module(void) int init_module(void) printk(“Hello World!n”);printk(“Hello World!n”); return 0;return 0; void cleanup_module(void) void cleanup_module(void) printk(“ Goodbye!n”);printk(“ Goodbye!n”); Linux内核环境 38 内核模块与应用程序的差别内核模块与应用程序的差别 C C语言程序语言程序 模块模块 运行运行 用户空间用户空间 内核空间内核空间 入口入口 main() main() init_module() init_module() 出口出口 无无 cleanup_module()cleanup_module() 编译编译 gcc -c gcc -c -D_KERNEL_-DMODULEgcc -c gcc -c -D_KERNEL_-DMODULE 连接连接 gcc gcc insmodinsmod 运行运行 直接运行直接运行 insmodinsmod 调试调试 gdbgdb kdbug, kdb, kgdb kdbug, kdb, kgdb等等 Linux内核环境 控制需要编译到内核的控制需要编译到内核的二进制映象二进制映象(启动时(启动时 载入)和在需要时才装入的载入)和在需要时才装入的内核模块内核模块 配置选项命名形式:配置选项命名形式:CONFIG_CONFIG_FEATUREFEATURE 如如CONFIG_SMPCONFIG_SMP表示支持对称多处理器表示支持对称多处理器 配置项选择模式配置项选择模式 二选一:二选一:yesyes或或nono 三选一:三选一:yesyes、nono或或modulemodule uuYesYes选项表示把代码编译进选项表示把代码编译进主内核映象主内核映象,而不作为模块,而不作为模块 uuModuleModule意味该配置项被选定,但编译时该功能的实现代码是意味该配置项被选定,但编译时该功能的实现代码是以以 模块形式生成模块形式生成 uu驱动程序驱动程序一般都用三选一形式一般都用三选一形式 字符串或整数字符串或整数 uu不控制编译过程,只是指定内核源码可以访问的值,如定义不控制编译过程,只是指定内核源码可以访问的值,如定义 静态变量静态变量 uu一般以预处理宏的形式表示一般以预处理宏的形式表示 39 LinuxLinux内核编译时的模块选配参数内核编译时的模块选配参数 Linux内核环境 内核编译主要工具文件内核编译主要工具文件 内核编译后,会在内核编译后,会在/boot/boot目录生产以下文件目录生产以下文件 vmlinuzvmlinuz文件文件 initrd.imginitrd.img文件文件 System.mapSystem.map文件文件 40 LinuxLinux内核编译的基本架构内核编译的基本架构 文件类型作用 Makefile顶层Makefile文件 .config内核配置文件 arch/$(ARCH)/Makefile机器体系Makefile文件 scripts/Makefile.*所有内核Makefiles共用规则 kbuild Makefiles其它Makefile文件 MakefileMakefile 定义编译链接规则、位于定义编译链接规则、位于linuxlinux源代码各目录源代码各目录 配置文件配置文件(config.in(config.in或或kconfig)kconfig) 提供内核的配置选择和设置提供内核的配置选择和设置 配置工具配置工具 文本命令行工具:文本命令行工具:make configmake config 基于基于ncursencurse的图形工具:的图形工具:make menuconfigmake menuconfig 基于基于X11X11的图形工具:的图形工具:make xconfigmake xconfig 基于基于gtk+gtk+的图形工具:的图形工具:make gconfigmake gconfig 创建默认配置:创建默认配置:make defconfigmake defconfig 配置工具输出文件配置工具输出文件 .config.config文件:用文件:用#include#include包括到主包括到主MakefileMakefile中中 include/linux/autoconf.hinclude/linux/autoconf.h:用:用#include#include包括到各个包括到各个.c.c文件文件 u每个.c文件都有代码项 41 LinuxLinux内核配置系统组成内核配置系统组成 Linux内核环境 采用采用GNUGNU编译工具对编译工具对.config.config中的源文件列表编译中的源文件列表编译 完成内核文件的配置、依赖关系及模块的生成,随后调完成内核文件的配置、依赖关系及模块的生成,随后调 用用Rules.makeRules.make编译文件编译文件 Rules.makeRules.make定义所有定义所有MakefileMakefile共用的编译规则共用的编译规则 MakefileMakefile支持的支持的makemake命令命令 make mrpropermake mrproper:检查:检查.o.o文件及文件依赖关系的正确性文件及文件依赖关系的正确性 make configmake config:配置内核并生成配置文件:配置内核并生成配置文件 make depmake dep:根据配置文件创建相应的依赖关系树:根据配置文件创建相应的依赖关系树 make cleanmake clean:清除旧版本的目标文件:清除旧版本的目标文件 make zImagemake zImage:编译并用:编译并用gzipgzip压缩成压缩成1MB1MB以下的内核以下的内核 u未压缩的文件是vmlinuz make bzImagemake bzImage:编译并用:编译并用gzipgzip压缩成压缩成1MB1MB以上的内核以上的内核 make modulesmake modules:编译模块:编译模块 make modules_install make modules_install :安装模块:安装模块 depmod adepmod a:生成模块之间的依赖关系:生成模块之间的依赖关系 42 主主MakefileMakefile功能功能 Linux内核环境 准备阶段准备阶段 下载源码:下载源码: 将源码解压到将源码解压到/usr/src/usr/src目录下目录下 tar xvjf tar xvjf linux-x.y.z.linux-x.y.z.tar.bz2tar.bz2 tar xvzf linux-x.y.z.tar.gztar xvzf linux-x.y.z.tar.gz 解压位置:解压位置:linux-x.y.zlinux-x.y.z目录下目录下 建立内核编译环境建立内核编译环境 ln sf linux-x.y.z linux ln sf linux-x.y.z linux cd /usr/includecd /usr/include rm -rf asm linux scsirm -rf asm linux scsi ln -sf /usr/src/linux/include/asm-i386 asmln -sf /usr/src/linux/include/asm-i386 asm ln -sf /usr/src/linux/include/linux linuxln -sf /usr/src/linux/include/linux linux ln -sf /usr/src/linux/include/scsi scsiln -sf /usr/src/linux/include/scsi scsi 43 LinuxLinux内核的编译、安装过程内核的编译、安装过程 Linux内核环境 配置内核配置内核 检查文件依赖关系正确性:检查文件依赖关系正确性:make mrpropermake mrproper 获取默认获取默认.config.config文件:文件:cp /boot/config-uname -r cp /boot/config-uname -r .config.config 生成配置文件:生成配置文件:make configmake config 创建依赖关系树:创建依赖关系树:make depmake dep 清除旧版本目标文件:清除旧版本目标文件:make cleanmake clean 生成压缩形式内核文件:生成压缩形式内核文件:make bzImagemake bzImage或或make make zImagezImage 编译后的文件在编译后的文件在/usr/src/linux/arch/i386/boot/usr/src/linux/arch/i386/boot目录下目录下 编译、安装内核编译、安装内核 编译内核:编译内核:makemake 编译模块:编译模块:make modulesmake modules 安装模块:安装模块:make modules_installmake modules_install 生成模块依赖关系:生成模块依赖关系:depmod adepmod a 安装内核:安装内核:make installmake install 44 Linux内核环境 配置启动文件配置启动文件 将内核映像拷贝到合适位置,并按启动要求启将内核映像拷贝到合适位置,并按启动要求启 动动 #cp /usr/src/linux/arch/i386/boot/zImage #cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-x.y.z/boot/zImage-x.y.z #cp /usr/src/linux/System.map /boot/System.map-#cp /usr/src/linux/System.map /boot/System.map- x.y.zx.y.z ln sf /boot/vmlinuz-x.y.z /boot/vmlinuzln sf /boot/vmlinuz-x.y.z /boot/vmlinuz ln sf /boot/System.map-x.y.z /boot/system.mapln sf /boot/System.map-x.y.z /boot/system.map u系统正常启动时不会读这个符号表;主要是为了内核引导 出错时便于调试 /sbin/mkinitrd /boot/initrd-x.y.z.img x.y.z/sbin/mkinitrd /boot/initrd-x.y.z.img x.y.z 如果是如果是LILOLILO启动方式,编辑启动方式,编辑/etc/lilo.conf/etc/lilo.conf 45 LinuxLinux内核的编译、安装过程内核的编译、安装过程( (续续) ) Linux内核环境 lilo.conflilo.conf修改方法修改方法 image=/boot/vmlinux-2.4.7-10image=/boot/vmlinux-2.4.7-10/ / 旧内核旧内核 label=linuxlabel=linux read-onlyread-only root=/dev/hdalroot=/dev/hdal image=/boot/zImage-x.y.z / image=/boot/zImage-x.y.z / 新内核新内核 label=newkernellabel=newkernel read-onlyread-only root=/dev/hdalroot=/dev/hdal 注意:必须注意:必须运行运行lilolilo命令将激活新配置。如果是命令将激活新配置。如果是grubgrub ,则不需要。,则不需要。 46 LinuxLinux内核的编译、安装过程内核的编译、安装过程( (续续) ) 47 LinuxLinux系统的文件系统结构系统的文件系统结构 / /:文件系统结构的起始点:文件系统结构的起始点 /home/home:用户主目录:用户主目录 /bin/bin:标准指令和工具程序:标准指令和工具程序 /usr /usr :系统使用文件和指令:系统使用文件和指令 /usr/bin/usr/bin:用户命令和工具:用户命令和工具 程序程序 /usr/sbin/usr/sbin:系统管理员命令:系统管理员命令 /usr/lib/usr/lib:编程语言库编程语言库 vv /usr/doc/usr/doc:LinuxLinux文档文档 vv /usr/man/usr/man:在线联机帮助手册:在线联机帮助手册 vv /usr/spool/usr/spool:假脱机文件:假脱机文件 vv /sbin/sbin:管理员开启系统的命令:管理员开启系统的命令 vv /var/var:时变文件,例如邮箱文件:时变文件,例如邮箱文件 vv /dev/dev:设备文件接口:设备文件接口 vv /etc/etc:系统配置文件及其它系统文件:系统配置文件及其它系统文件 Linux内核环境 Linux网络操作系统的安装 u安装基本需求 存储空间=700MB,一般桌面系 统需3GB存储空间 处理器:x86和x86_64 内存:=64MB CD/DVD -ROM:执行光盘安装 网卡:网络安装需要支持网络启动 的网卡 分区与文件系统 磁盘与分区 文件与文件系统 支持Ext2、Ext3、vFat、NTFS、HPFS Linux的分区命名 a) IDE硬盘命名为hd,SCSI硬盘命名为sd; b) 第一个磁盘命名为a,第二个磁盘命名为b,其余 依此类推; c) 磁盘上第一个主分区命名为1,第二个主 分区命名为2,其余依此类推; d) 磁盘上第一个逻辑分区命名为5,第二个 逻辑分区命名为6,其余依此类推; 例如:一台计算机中有一块IDE硬盘,分了三个 分区,两个主分区,一个逻辑分区,则这三个分 区的命名分别为什么? 答:hda1、hda2、hda5。 / bin home2 home1 bootvar www html index.ht ml default.css Linux文件系统示例图 磁盘2 磁盘1 Linux的安装方式 光盘或者USB设备安装 硬盘安装 网络安装 安装过程略。 双系统安装方法 GRUB引导Windows Windows引导Linux GRUB引导多个Linux 2 Linux网络参数的配置 Linux系统中主要的网络参数有主机名、IP 地址、子网掩码、网关、DNS服务器等。 网络参数可以通过对相关配置文件的配置 来完成设置,也可以通过Linux的图形界面 来配置。 实际上,Linux中几乎所有的配置都是 通过配置文件来完成的,在图形界面下的 配置其实也是对相关配置文件的配置。 2.1 用命令行配置 在命令行状态下,网络参数的配置命令 主要有ifconfig、ifup、ifdown等。下面举例 说明这些命令在配置网络参数中的常见用法 。 (1)查看网络运行情况 在命令行直接输入命令:ifconfig 该命令在屏幕上显示当前系统中网络参数的 配置情况,如下图所示。 主要显示信息: eth0:网络适配器(网卡)的网络接口,如果系统 中有多个网卡,则以eth1、eth2递增编号。 Hwaddr:网卡的物理地址,是计算机中与网络硬件 相关的惟一地址。由于地址格式与所用介质的访问控 制方法相关,又常称为MAC地址。 inet:网卡的IP地址。 bcast:网卡的广播地址。 mask:显示网卡的子网掩码。 lo:回环地址,一般此接口的IP地址都是。 (2)为网络接口eth0 配置IP地址 假设为网卡eth0配置IP地址:。 在命令行输入命令:ifconfig eth0 或ifconfig eth0 /24 注意:各参数必须用空格隔开。 (3)激活网络接口eth0 在命令行输入命令:ifconfig eth0 up 或 ifup eth0 (4)关闭网络接口eth0 在命令行输入命令:ifconfig eth0 down 或 ifdown eth0 (5)将网络接口eth0 设置为动态获取IP地址 命令:ifconfig eth0 dynamic (6)为系统添加缺省网关54 命令:route add default gw 54 2.2 直接修改配置文件 通过命令可以快捷地进行网络参数的配置 ,但系统重新启动后,所设置的网络参数将丢 失。直接修改配置文件可以解决该问题。所有 的配置文件都在/etc目录下。以下是几个主要 配置文件。 (1)文件/etc/sysconfig/network 内容如下: NETWORKING=yes HOSTNAME=localhost.localdomain 说明 NETWORKING:定义在系统启动时是否启 动网络,如果不希望启动则设定为no。 HOSTNAME:定义主机的名称。 (2)文件/etc/sysconfig/network-scripts/ifcfg-eth0,内 容如下: DEVICE=eth0 BOOTPROTO=none ONBOOT=yes USERCTL=no PEERDNS=no TYPE=Ethernet IPADDR= NETMASK= GATEWAY=54 NETWORK= BROADCAST=55 说明 DEVICE:定义本文件所对应的网络接口。 BOOTPROTO:定义系统启动时此本网络接口是否使 用bootp协议,即是否动态获得IP地址。如果希望动态获 得IP地址则设为“BOOTPROTO=dhcp”。 ONBOOT:定义系统启动时是否启动此网络接口。 USERCTL:定义用户是否可以启动本接口。如果设 为“yes”,则所有用户都可以启动或禁用此接口,如果设 为“no”则只有root用户才可以启动或者禁用此接口。 PEERDNS:是否设置PEERDNS,一般不需要设置 。 TYPE:定义此网络接口的格式,这里为以太网格式 。 (余下的较直观。) (3)文件/etc/re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 完善疫情防控的应急预案(3篇)
- 广播电视台应急预案(3篇)
- 突发诉讼事件应急预案方案(3篇)
- 租赁场所疫情防控应急预案(3篇)
- 直播电商内容创新的创意生成与传播机制对GMV的作用研究
- 阜阳市应急预案哪家好(3篇)
- 人员擅入轨行区应急预案(3篇)
- 河北机电职业技术学院《媒介素养教育》2024-2025学年第一学期期末试卷
- 应急管理预案的制定与实施(3篇)
- 精神病病人应急预案模板(3篇)
- 对标工作的方案和计划对标管理实施方案
- 图书管理员考试的注意事项和建议试题及答案
- 警校区队管理制度规定
- 郑州银行总行信息科技岗位招聘考试真题2024
- 新发展英语(第二版)综合教程2 课件 Unit 6 Cultural Difference
- 脑卒中失语症的康复护理
- 消防联动调试方案
- 2025年安徽中医药高等专科学校单招职业技能测试题库审定版
- 自动化仪表施工方案
- 注射用重组人TNK组织型纤溶酶原激活剂-药品临床应用解读
- 小儿泄泻(小儿腹泻病)中医临床路径
评论
0/150
提交评论