Linux操作系统及程序设计.ppt
LinuxLinux操作系统操作系统及程序设计及程序设计教学目标:掌握Linux系统组成特点、常用命令和使用方法;深入了解和掌握Linux系统的内部结构、编译、调试和运行系统程序的方法;对Linux操作系统建立一个全面、系统的认识,进而对现代操作系统的设计方法和有较全面的认识,为进一步学习和应用打下基础。教学主要内容:Linux系统基本使用,shell及其编程,Linux文件系统,多进程与多线程程序设计,进程间通信教学时数:讲解辅助下的实验30学时第一讲第一讲Linux Linux 简介简介 初步掌握初步掌握LinuxLinux系统安装、实验环境构建和基系统安装、实验环境构建和基本特点。本特点。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 SumLinux38977.80%31180604809959615612Unix6012.00%532647728573120394Mixed428.40%11944731496163469052BSD Based40.80%52899591865952Mac OS30.60%32989530086296Windows20.40%15518363573808Totals500100%4946586.057183245.391221114Linux的应用发展方向超级计算机系统通用计算机系统嵌入式计算机系统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 LicenseGNU读作g-nooGNU是一个类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维护(及通过主要镜像网站发布)的内核14Linux发展史 19911991年年1111月,芬兰赫尔辛基大学的月,芬兰赫尔辛基大学的 Linus TorvaldsLinus Torvalds 编写了一个小程序(取名为编写了一个小程序(取名为LinuxLinux),发布在互联),发布在互联网上网上 希望借此实现一个操作系统希望借此实现一个操作系统“内核内核”19931993年年 一批高水平网络黑客参与,诞生一批高水平网络黑客参与,诞生Linux 1.0 Linux 1.0 版版 19941994年年 Linux Linux 的第一个商业版的第一个商业版 SlackwareSlackware 问世问世 19961996年年 美国国家标准技术局计算机系统实验室确认美国国家标准技术局计算机系统实验室确认 Linux Linux 版本符合版本符合 POSIX POSIX 标准标准 20012001年年 Linux2.4Linux2.4版内核发布版内核发布 20032003年年 Linux2.6Linux2.6版内核发布版内核发布Linux简简介介15Linux操作系统特征 符合符合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 ShellLinuxLinux文件系统文件系统LinuxLinux应用系统应用系统GNU ToolsGNU Tools16Linux精髓Linux简简介介17Linux的系统结构用户应用程序用户应用程序系统调用系统调用硬件资源管理接口硬件资源管理接口Shell,库函数,库函数内核实现内核实现Linux简简介介用户态用户态核心态核心态不区分的缺陷用户直接修改操作系统的数据用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接调用操作系统的内部函数用户直接操作外设用户直接操作外设用户任意读用户任意读/写物理内存写物理内存区分的意义禁止用户程序和底层硬件直接打交道禁止用户程序和底层硬件直接打交道 如果用户程序往硬件控制寄存器写入不恰当的值,如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作可能导致硬件无法正常工作禁止用户程序访问任意物理内存,否则可能会禁止用户程序访问任意物理内存,否则可能会破坏其他程序的正常执行破坏其他程序的正常执行 如果对核心内核所在的地址空间写入数据,会导致如果对核心内核所在的地址空间写入数据,会导致系统崩溃系统崩溃18划分用户态/内核态的必要性Linux简简介介现代CPU都有几种不同指令执行级别在高执行级别下,代码可以执行在高执行级别下,代码可以执行特权指令特权指令,访,访问问任意的物理地址任意的物理地址,这种,这种CPUCPU执行级别就对应执行级别就对应着内核态着内核态在相应低级别执行状态下,代码的掌控范围会在相应低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动受到限制,只能在对应级别允许的范围内活动举例intel x86 CPUintel x86 CPU有四种不同的执行级别有四种不同的执行级别0-30-3LinuxLinux只使用只使用0 0级和级和3 3级分别表示内核态和用户态级分别表示内核态和用户态19CPU对用户态/和心态划分的支持Linux简简介介cs寄存器最低两位表明当前代码的特权级CPUCPU每条指令的读取都是通过每条指令的读取都是通过cs:eipcs:eip这两个寄这两个寄存器存器 cscs:代码段选择寄存器:代码段选择寄存器 eipeip:偏移量寄存器:偏移量寄存器上述判断由硬件完成上述判断由硬件完成在Linux中,地址空间是一个显著的标志0 xc00000000 xc0000000以上地址空间:只能在内核态下访以上地址空间:只能在内核态下访问问0 x00000000 0 xbfffffff0 x00000000 0 xbfffffff的地址空间:两种状态的地址空间:两种状态下都可访问下都可访问 注意,这里的地址空间是逻辑地址而不是物理地址注意,这里的地址空间是逻辑地址而不是物理地址20用户态/和心态的区分方法Linux简简介介vvLinuxLinux是是单内核单内核、多模块多模块系统系统 LinuxLinux内核运行在单独的内核地址空间内核运行在单独的内核地址空间 所有操作系统功能作为一个模块所有操作系统功能作为一个模块实现实现在其内核中在其内核中 模块均运行在内核态,直接调用函数,无需消模块均运行在内核态,直接调用函数,无需消息传递息传递 具备模块化设计、抢占式内核具备模块化设计、抢占式内核(Linux 2.6(Linux 2.6支持,支持,Linux Linux 2.42.4用户级抢占用户级抢占)、支持内核线程及动态装载内核模块、支持内核线程及动态装载内核模块的能力的能力 与与UnixUnix主要区别主要区别 LinuxLinux汲取了微内核设计思想(基于模块定制内汲取了微内核设计思想(基于模块定制内核)核)UnixUnix也是单内核系统也是单内核系统 Windows NTWindows NT和和MachMach是是微内核微内核系统系统21Linux的内核特点Linux简简介介22Linux单内核结构用户态用户态标准函数库标准函数库系统调用系统调用(POSIX标准标准)接口接口模块模块内核内核(进程管理、存储进程管理、存储管理、文件管理、管理、文件管理、设备管理、网络设备管理、网络管理管理)设备设备驱动驱动计算机硬件计算机硬件核心态核心态单内核单内核模块模块接口接口驱动驱动接口接口Linux简简介介23Linux的内核版本Linux内核版本指由Linux开发小组(Linus Torvalds总协调)开发出系统内核的版本号 Linux内核采用双树系统一棵是稳定树,主要用于发行一棵是稳定树,主要用于发行另一棵是非稳定树(开发树),用于产品开发另一棵是非稳定树(开发树),用于产品开发和改进和改进 Linux内核版本号由3位数字组成 r.x.y第第1位数字位数字r为主版本号为主版本号 第第2位数字位数字x为说明版本类型的次版为说明版本类型的次版本号:本号:偶数表示产品化版本偶数表示产品化版本 奇数表示实验版本奇数表示实验版本 第第3位数字位数字y为修改号,为修改号,表示错误修补的次数表示错误修补的次数 Linux简简介介24主流的Linux发行版本Linux简简介介25Linux与Windows的区别文件系统LinuxLinux需要一个挂载需要一个挂载根目录根目录/的的extext分区分区和一个作和一个作为虚拟内存的为虚拟内存的swapswap分区分区LinuxLinux没有盘符,可通过设备名挂载,挂在信息没有盘符,可通过设备名挂载,挂在信息在在/dev/fstab/dev/fstab,如,如 mount-t ntfs/dev/sda1/mnt/win_cmount-t ntfs/dev/sda1/mnt/win_cLinux将所有设备都映射成/dev目录下的一个文件用户管理系统管理员是系统管理员是rootroot,使用,使用susu命令切换命令切换Linux简简介介26主要内容Linux简介Linux内核环境Linux编程环境Linux的系统初始化Linux的程序执行机制27Linux内核核心组成 进程调度程序:负责控制进程访问进程调度程序:负责控制进程访问CPUCPU 内核管理程序:支持虚拟内存及多进程安全共享主存系统内核管理程序:支持虚拟内存及多进程安全共享主存系统 虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口 网络接口:提供对多种组网标准和网络硬件的访问网络接口:提供对多种组网标准和网络硬件的访问 进程间通信:为进程之间的通信提供实现机制进程间通信:为进程之间的通信提供实现机制Linux内内核核环环境境28Linux内核源码的获取下载位置以以GNU zipGNU zip和和bzip2bzip2形式发布形式发布安装位置一般安装在一般安装在/usr/src/linux/usr/src/linux,不要将该源码树用于,不要将该源码树用于开发开发在编译自己编写的在编译自己编写的C C库所用的内核版本要链接到库所用的内核版本要链接到该树该树不要以不要以rootroot身份对内核进行修改,应先建立自己身份对内核进行修改,应先建立自己的主目录,仅以的主目录,仅以rootroot身份安装新内核身份安装新内核安装新内核应该保持安装新内核应该保持/usr/src/linux/usr/src/linux原封不动原封不动Linux内内核核环环境境29Linux核心源码结构Linux内内核核环环境境30Linux核心源码的组织 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目录存放存放VFSVFS和系统支持的各种文件系统源代码和系统支持的各种文件系统源代码每个子目录对应一个特定文件系统每个子目录对应一个特定文件系统/include目录存放重要的内核存放重要的内核.h.h头文件头文件为各种为各种CPUCPU专设一个子目录专设一个子目录通用子目录通用子目录include/linuxinclude/linux、include/netinclude/net/ipc目录存放处理进程间通信所需源代码存放处理进程间通信所需源代码31Linux核心源码的组织(续)Linux内内核核环环境境/drivers目录 存放所有设备驱动程序源代码存放所有设备驱动程序源代码/net子目录存放网络子系统,如各种网卡和网络规程驱动存放网络子系统,如各种网卡和网络规程驱动程序程序/security目录存放安全子系统代码存放安全子系统代码/sound目录存放语音子系统代码存放语音子系统代码32Linux核心源码的组织(续)Linux内内核核环环境境/init/init目录目录 存放内核引导和初始化代码存放内核引导和初始化代码 许多重要文件,如许多重要文件,如main.cmain.c、version.cversion.c就位于该目录就位于该目录下下/lib/lib目录目录 存放内核需要的通用工具性内核函数(如对出错信存放内核需要的通用工具性内核函数(如对出错信息的处理),它能够在引导时解压内核并装入主存息的处理),它能够在引导时解压内核并装入主存/scripts/scripts目录目录 存放编译内核所用脚本和用于系统配置的命令文件存放编译内核所用脚本和用于系统配置的命令文件/documentation/documentation目录目录 存放内核源代码文档存放内核源代码文档33Linux核心源码的组织(续)Linux内内核核环环境境采用模块化的内核配置系统内核模块(Loadable Kernel Module)的概念模块实际上是一种目标对象文件,没有链接,不模块实际上是一种目标对象文件,没有链接,不能独立运行能独立运行但是其代码可以在系统运行时链接到系统中作为但是其代码可以在系统运行时链接到系统中作为内核的一部分运行,或从内核中取下,从而可以内核的一部分运行,或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核)动态扩充内核的功能(不需要重新编译内核)这种目标代码通常由一组函数和数据结构组成这种目标代码通常由一组函数和数据结构组成34Linux内核的配置组成Linux内内核核环环境境v使得内核更加紧凑和灵活,可扩展 v修改模块时,不必全部重新编译整个内核系统如果需要使用新模块,只要编译相应的模块,系统如果需要使用新模块,只要编译相应的模块,然后将模块插入即可然后将模块插入即可v模块可以不依赖于某个固定的硬件平台v模块的目标代码一旦被链接到内核,它的作用域和静态链接的内核目标代码完全等价35内核模块的优点Linux内内核核环环境境并不是所有地方都使用内核模块设备驱动程序设备驱动程序文件系统驱动程序文件系统驱动程序系统调用系统调用 大部分系统调用属于基础内核(大部分系统调用属于基础内核(Basic kernelBasic kernel),也),也可以以内核模块方式增加新的系统调用或者覆盖现可以以内核模块方式增加新的系统调用或者覆盖现有基于内核模块方式实现的系统调用有基于内核模块方式实现的系统调用36内核模块的使用Linux内内核核环环境境程序代码:helloworld.c编译、安装方法 root#gcc-c helloworld.croot#gcc-c helloworld.c root#insmod helloworld.oroot#insmod helloworld.o root#lsmodroot#lsmod root#rmmod helloworldroot#rmmod helloworld37模块示例#defineMODULE#defineMODULE#include#includeintinit_module(void)intinit_module(void)printk(“HelloWorld!n”);printk(“HelloWorld!n”);return0;return0;voidcleanup_module(void)voidcleanup_module(void)printk(“Goodbye!n”);printk(“Goodbye!n”);Linux内内核核环环境境38内核模块与应用程序的差别C C 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或或modulemoduleuuYesYes选项表示把代码编译进选项表示把代码编译进主内核映象主内核映象,而不作为模块,而不作为模块uuModuleModule意味该配置项被选定,但编译时该功能的实现代码是意味该配置项被选定,但编译时该功能的实现代码是以以模块形式生成模块形式生成uu驱动程序驱动程序一般都用三选一形式一般都用三选一形式 字符串或整数字符串或整数uu不控制编译过程,只是指定内核源码可以访问的值,如定义不控制编译过程,只是指定内核源码可以访问的值,如定义静态变量静态变量uu一般以预处理宏的形式表示一般以预处理宏的形式表示39Linux内核编译时的模块选配参数Linux内内核核环环境境内核编译主要工具文件内核编译后,会在/boot目录生产以下文件vmlinuzvmlinuz文件文件initrd.imginitrd.img文件文件System.mapSystem.map文件文件40Linux内核编译的基本架构文件类型作用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文件都有代码项41Linux内核配置系统组成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主Makefile功能Linux内内核核环环境境准备阶段下载源码:下载源码:将源码解压到将源码解压到/usr/src/usr/src目录下目录下 tar xvjf tar xvjf linux-x.y.z.linux-x.y.z.tar.bz2tar.bz2 解压位置:目录下解压位置:目录下建立内核编译环境建立内核编译环境 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 scsi43Linux内核的编译、安装过程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 install44Linux内内核核环环境境配置启动文件将内核映像拷贝到合适位置,并按启动要求启将内核映像拷贝到合适位置,并按启动要求启动动 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.mapu系统正常启动时不会读这个符号表;主要是为了内核引导出错时便于调试如果是如果是LILOLILO启动方式,编辑启动方式,编辑/etc/lilo.conf/etc/lilo.conf45Linux内核的编译、安装过程(续)Linux内内核核环环境境lilo.conf修改方法image=/boot/vmlinux-2.4.7-10image=/boot/vmlinux-2.4.7-10/旧内核旧内核label=linuxlabel=linuxread-onlyread-onlyroot=/dev/hdalroot=/dev/hdalimage=/boot/zImage-x.y.z/image=/boot/zImage-x.y.z/新内核新内核label=newkernellabel=newkernelread-onlyread-onlyroot=/dev/hdalroot=/dev/hdal 注意:必须注意:必须运行运行lilolilo命令将激活新配置。如果是命令将激活新配置。如果是grubgrub,则不需要。,则不需要。46Linux内核的编译、安装过程(续)47Linux系统的文件系统结构/:文件系统结构的起始点:文件系统结构的起始点/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内存:=64MBCD/DVD-ROM:执行光盘安装网卡:网络安装需要支持网络启动的网卡分区与文件系统磁盘与分区文件与文件系统支持Ext2、Ext3、vFat、NTFS、HPFSLinux的分区命名a)IDE硬盘命名为hd,SCSI硬盘命名为sd;b)第一个磁盘命名为a,第二个磁盘命名为b,其余依此类推;c)磁盘上第一个主分区命名为1,第二个主分区命名为2,其余依此类推;d)磁盘上第一个逻辑分区命名为5,第二个逻辑分区命名为6,其余依此类推;例如:一台计算机中有一块例如:一台计算机中有一块IDE硬盘,分了三个硬盘,分了三个分区,两个主分区,一个逻辑分区,则这三个分分区,两个主分区,一个逻辑分区,则这三个分区的命名分别为什么?区的命名分别为什么?答:答:hda1、hda2、hda5。/binhome2home1bootvarwwwhtmlindex.htmldefault.cssLinux文件系统示例图文件系统示例图磁盘磁盘2磁盘磁盘1Linux的安装方式光盘或者USB设备安装硬盘安装网络安装安装过程略。双系统安装方法GRUB引导WindowsWindows引导LinuxGRUB引导多个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地址:。地址:。在命令行输入命令:或在命令行输入命令:或 注意:各参数必须用空格隔开。注意:各参数必须用空格隔开。(3)激活网络接口)激活网络接口eth0 在命令行输入命令:在命令行输入命令:ifconfig eth0 up或或 ifup eth0(4)关闭网络接口)关闭网络接口eth0 在命令行输入命令:在命令行输入命令:ifconfig eth0 down或或 ifdown eth0(5)将网络接口)将网络接口eth0设置为动态获取设置为动态获取IP地址地址 命令:命令:ifconfig eth0 dynamic(6)为系统添加缺省网关)为系统添加缺省网关 命令:命令:2.2 直接修改配置文件直接修改配置文件通过命令可以快捷地进行网络参数的配置,通过命令可以快捷地进行网络参数的配置,但系统重新启动后,所设置的网络参数将丢失。但系统重新启动后,所设置的网络参数将丢失。直接修改配置文件可以解决该问题。所有的配直接修改配置文件可以解决该问题。所有的配置文件都在置文件都在/etc目录下。以下是几个主要配置目录下。以下是几个主要配置文件。文件。(1)文件)文件/etc/sysconfig/network内容如下:内容如下:NETWORKING=yesHOSTNAME=localhost.localdomain说明说明 NETWORKING:定义在系统启动时是否启:定义在系统启动时是否启动网络,如果不希望启动则设定为动网络,如果不希望启动则设定为no。HOSTNAME:定义主机的名称。:定义