第02章系统的启动与关闭优秀课件.ppt
第02章系统的启动与关闭第1页,本讲稿共89页21 引导盘的创建与使用引导盘的创建与使用通常Linux系统在正常安装后操作系统的引导记录boot被安装在磁盘的MBR上,使用LILO(Linux LOader)或GRUB(GRand Unified Bootloader)从硬盘启动,并不需要从软盘启动;但是在某些情况下就需要一张引导盘来引导系统启动:硬盘上的引导记录被其他操作系统覆盖例如、由于先安装Linux而后安装其他操作系统,覆盖了硬盘上的MBR,造成Linux无法从硬盘启动。用户使用不当或误操作例如、用户的非正常关机、随意按复位键等造成系统无法启动时,与急救盘配合使用以恢复系统。用户没有安装引导装载程序例如、用户安装Linux系统时没有在MBR上安装LILO或GRUB,如图2-1所示;这样就只能从软盘启动Linux系统。第2页,本讲稿共89页图 2-1选择引导程序第3页,本讲稿共89页用户忘记了登录口令例如、忘记了root用户的口令,则可以用引导软盘启动系统进入单用户模式(但为超级用户权限),从而修改口令。因此、为了你的系统安全一定要妥善保管好这张启动软盘!这里要说明的是引导盘和启动盘是两个不同的概念,引导盘只是引导系统启动、它本身只有系统引导程序而没有文件系统,所以引导过程中会查找根文件系统等,也就是说用户必须在计算机系统上已经安装了Linux;而启动盘除了系统引导程序外还包含部分文件系统、设备驱动程序等,可以实现系统的引导、基本输入/输出设备驱动程序和文件系统的加载而进入用户登录界面。从严格意义上来说启动盘应该称为系统盘更为合理。第4页,本讲稿共89页211 引导盘的创建创建引导软盘既可以在安装过程中完成,也可以在安装后登录系统再用命令行或图形化方式完成。2111 在安装中制作在图形方式安装Red Hat Linux的过程中会出现如图2-2所示的画面,图中“是,我想创建引导盘(Y)”是默认的选项,因此只要向软驱插入一张格式化过的空白盘、然后单击“下一步(N)”按钮即可。注意:这种方式制作的引导盘在Linux系统内核升级后要用下面介绍的方式重新制作,否则系统无法引导!第5页,本讲稿共89页图 2-2创建引导盘第6页,本讲稿共89页2112 在安装后制作如果在安装后制作引导盘,则既可以在命令行方式下也可以在图形界面方式下来制作。在图形方式下制作引导盘方便、直观,但也许是出于系统安全的考虑,Linux操作系统的默认图形界面(GNOME)下并没有创建引导盘的应用软件,如果要用图形方式,则要以KDE会话方式登录系统。在安装后制作引导盘,既可以做引导软盘也可以做成引导U盘。第7页,本讲稿共89页21121 创建引导软盘方法一 命令行方式Red Hat Linux不同版本制作的引导盘所包含的文件可能是不同的,在Linux9.0(发行套件版本号)下引导盘包含:boot.msg、initrd.img、ldlinux.sys、syslinux.cfg、vmlinuz 文件。这些文件并不是直接复制到软盘完成的,而是用 mkbootdisk 命令来建立的。系统启动后在终端上执行:mkbootdisk-device/dev/fd0 内核版本号其中,命令选项“-device/dev/fd0”是系统默认的,为第一个软盘驱动器(即Windows系统下的A驱)所以可以省略。参数“内核版本号”是当前安装的Linux系统内核版本号,在系统安装后为/lib/modules 目录下的一个子目录名。该子目录名是随着Linux操作系统内核的版本差异而不同;例如:Red Hat Linux9.0的内核版本2.4.20-8等等。第8页,本讲稿共89页由于每次都要查看内核版本号比较麻烦。可以使用Linux的命令组合来自动检测系统内核的版本号问题。现在可以执行:mkbootdisk-device/dev/fd0 uname r如果出现类似如下的信息,则表示创建引导盘成功。读入了 20+0 个块输出了 20+0 个块uname 是Linux系统的一个命令,其功能是显示系统信息;-r参数是显示操作系统内核的发行编号(release)。这个命令组合使用中一定要特别注意uname r是被反向单引号()括起来的,而不是被单引号()括起来的!在这个命令组合中uname r命令首先被执行,并返回当前Linux操作系统的内核发行版本号;接着以该版本号为参数执行 mkbootdisk 命令。第9页,本讲稿共89页方法二 图形化方式在系统登录界面上单击“会话”选项,然后再选择“KDE”单选钮,单击确定后登录系统。进入“开始”、“系统工具”、“更多系统工具”菜单栏即可找到创建引导盘的应用软件菜单项“Creat a boot disk”,如图2-3所示。第10页,本讲稿共89页 图2-3 KDE下创建引导盘用鼠标左键单击“Creat a boot disk”,运行该系统应用软件。打开的窗口如图2-4所示。第11页,本讲稿共89页图2-4建立引导盘程序窗口第12页,本讲稿共89页 从图2-4窗口的下拉列表框中可以选择在哪个驱动器上创建引导盘,所创建引导盘的内核版本号;一般这两项用默认的即可。把格式化过的空白软磁盘插入驱动器,单击“OK”按钮;Linux系统就开始创建引导盘了。创建过程如图2-5所示。第13页,本讲稿共89页图2-5引导盘创建过程第14页,本讲稿共89页21122 创建引导U盘现代计算机已经能很好地支持U盘,可以方便地实现从U盘启动,而且U盘的价格不断下降、容量不断增加,所以U盘的使用越来越广泛;由于有些计算机已经不再配置软驱,所以从U盘引导Linux操作系统可能成为以后的必然趋势。目前,在Red Hat Linux9.0下制作引导U盘还没有图形化的应用软件,因此只能通过命令方式,其命令与制作引导软盘的命令相同,只是设备不同而已。首先、把U盘格式化,这可以在Windows操作系统下也可以在Linux操作系统下来完成。如果U盘容量较大,可以用第三方软件先进行分区,Linux引导盘的容量只要1.44MB就够了。接着、插入U盘,在Linux终端提示符下输入命令:#fdisk l以检查Linux系统是否已经识别出所插入的U盘,有些带MP3的U盘在Linux系统下可能无法识别。例如、可能的显示如下:第15页,本讲稿共89页Disk/dev/sda:8589 MB,8589934592 bytes255 heads,63 sectors/track,1044 cylindersUnits=cylinders of 16065*512=8225280 bytes Device Boot Start End Blocks Id System/dev/sda1 *1 196 1574338+7 HPFS/NTFS/dev/sda2 197 936 5944050 83 Linux/dev/sda3 937 1002 530145 82 Linux swap/dev/sda4 1003 1044 337365 83 LinuxDisk/dev/sdb:32 MB,32768000 bytes2 heads,32 sectors/track,1000 cylindersUnits=cylinders of 64*512=32768 bytes Device Boot Start End Blocks Id System/dev/sdb1 *1 999 31952 4 FAT16 提示符,如图2-7所示。第24页,本讲稿共89页 图2-7 GRUB的命令行方式在该提示符下按TAB键即可列出所有可以使用的命令,任何时刻要退出命令行方式,只要按ESC键即可。第25页,本讲稿共89页222 多配置系统引导的实现在安装Linux时,如果计算机上已经安装有其他的操作系统如Windows等,则Linux能识别出它们(默认显示为DOS)并要求用户选择用哪一种操作系统作为默认引导的操作系统。用户选择并单击“编辑”按钮修改DOS为Windows或其他名称即可。如果用户先安装Linux后安装其他操作系统,则后装的操作系统引导程序会覆盖MBR中的Linux引导程序,造成Linux无法从硬盘启动。这时就要用引导软盘启动系统,重新配置LILO或GRUB。第26页,本讲稿共89页2221 LILO 的配置如果硬盘上的LILO无法引导,则用引导软盘或U盘启动并登录Linux系统后,用编辑软件,如vi在/etc目录下编辑lilo.conf配置文件(参见文件示例)并保存,在超级用户提示符(#)下输入:lilo v 则重新安装LILO。这里lilo是/sbin目录下的系统应用程序(命令)、而LILO是引导装载程序,两者不是同一个概念。这种用法的前提是你在安装Linux时安装过LILO。如果未安装lilo程序则挂载第一张安装盘,命令为:#mount/mnt/cdrom进入目录/mnt/cdrom/redhat/RPMS,找到软件包lilo-21.4.4.22.i386.rpm后,使用命令:#rpm-ivh lilo-21.4.4-22.i386.rpm安装。安装时,程序包的名称要完整。第27页,本讲稿共89页当lilo命令执行时会从/etc/lilo.conf 配置文件中读取信息,并写入到MBR中;-v是开关参数,作用是显示命令的执行过程,可以省略。lilo 命令的开关参数很多,使用也很灵活;具体应用时可用man lilo命令请求在线帮助的支持。lilo.conf文件中的全局配置参数作用是告诉内核怎么进行工作的,其主要的参数和功能说明如表2-1所示。第28页,本讲稿共89页全局参数全局参数参数功能参数功能说说明明boot=告诉 LILO 在哪里安装引导加载程序。boot-device可以是:MBR:第一个硬盘的主引导区,对应于/dev/hda、/dev/sda等。root:linux根分区的超级块(Super block),对应/dev/hda1、/dev/hda2 等。floppy:LILO安装在软盘上,对应于/dev/fd0。不指定时,lilo缺省安装在根分区超级块上。map=map-file指向引导期间 LILO 内部使用的映射文件。没有本项时缺省使用/boot/map,每次改动LILO都应产生一个新的与之相关map文件。linear生成线性扇区地址来代替扇区/磁头/柱面地址,有些SCSI设备需要该参数。install=boot-sector指定使用的启动文件,该文件将会被看作引导扇区记录,若未设置install选项,则将boot/boot.b作为默认缺省值使用。message=message-file用于指定一个包含注释信息的文件,该文件将在系统打印出字符串“LILO”之前显示。如果在LILO启动时想获取较多的信息,可以编辑一个文件,再使用该命令就可以了。prompt给出“boot:”提示,强制LILO等待用户的键盘输入,按下回车键则立即引导默认的操作系统,而按下Tab键则显示可供选择的操作系统。不设置该参数时,LILO不给出“boot:”提示而直接引导默认操作系统timeout=number设置等待键盘输入的时长,每个单位是1/10秒。超时系统将自动引导缺省的操作系统。如果不设置本参数,缺省的超时时间长度为无穷大。password=选项指定了修改引导方式所使用的口令,但该口令没有用 MD5 加密,而是以明文保存在lilo.conf文件中。default告诉 LILO 默认使用哪个映像进行引导第29页,本讲稿共89页lilo.conf文件中的引导映像参数作用是告诉系统引导所用的内核文件及位置。其主要的参数和功能说明如表2-2所示。引引导导映像参数映像参数参数功能参数功能说说明明image=pathname指定内核的路径和名称label=name标识当前操作系统,即操作系统名称。initrd=.img文件.img文件是root目录中默认initrd映像的名称。read-only通知LILO以只读方式装载根文件系统。append=string传递一个特殊硬件的参数串string给linux系统的核心。other=pathname设置包含非linux操作系统,如DOS、SCOUNIX、Windows等操作系统引导映像的文件或设备。optional用于启动的引导映像不存在时,该参数使lilo忽略它。第30页,本讲稿共89页为了对lilo.conf文件有整体的认识,以下提供一个完整lilo.conf文件,可以对照表2-1、2-2来加以理解。#lilo.conf 文件示例文件示例prompttimeout=50default=linuxboot=/dev/hdamap=/boot/mapinstall=/boot/boot.bmessage=/boot/messagelinearimage=/boot/vmlinuz-2.4.20-8label=linuxinitrd=/boot/initrd-2.4.20-8.imgread-onlyappend=root=LABEL=/#根据卷标找到根设备根据卷标找到根设备other=/dev/hda1optionallabel=Win2000第31页,本讲稿共89页2222 GRUB 的配置如果使用GRUB程序且硬盘上的GRUB无法引导,则用引导软盘或U盘启动并登录Linux系统后,用编辑软件,如vi在/boot/grub目录下编辑grub.conf配置文件(参见文件示例)并保存,在超级用户提示符(#)下输入:grub-install/dev/had如果命令执行后的显示信息如下:Installation finished.No error reported.This is the contents of the device map/boot/grub/device.map.Check if this is correct or not.If any of the lines is incorrect,fix it and re-run the script grub-install.#this device map was generated by anaconda(fd0)/dev/fd0(hd0)/dev/had第32页,本讲稿共89页如果没有错误报告,表示GRUB安装成功;如果重新启动后还是不能成功引导系统,则再检查、修改grub.conf配置文件并再运行grub-install命令。该命令把GRUB引导程序写到硬盘的主引导记录(MBR)上。这里hda(或hd0)表示第一个IDE硬盘,具体应用中要根据Linux安装所在的硬盘来定。如果未安装grub程序则挂载第一张安装盘,方法同前。执行命令:#rpm-ipm grub-0.93-4.i386.rpmgrub.conf文件中的配置参数作用是告诉内核如何进行工作,引导所用的内核文件及位置等,其主要的参数和功能说明如表2-3所示。第33页,本讲稿共89页配置参数配置参数参数功能参数功能说说明明default=数值该选项通知GRUB在选择超时之后默认使用哪个映像进行引导。这一选项与grub.conf文件中的某个映像相关联。0表示指定了第一个,1表示指定了第二个,依次类推。如果没有在配置文件指定此选项,那么它将引导文件中指定的第一个映像。timeout=数值是在自动引导默认的操作系统(在本例中是RedHatLinux)之前引导提示信息会等待多少秒。数值以100ms为单位;如数值为50,即为5秒。splashimage=路径文件名GRUBGUI背景的图片所在的位置。password选项指定了使用MD5加密的口令,用于限制访问GRUB的交互式命令选项,这个口令与登录系统的根口令是两个不同的概念。这不会阻止用户选择引导已经定义的OS;可以为每一个-title设置密码。为了生成一个md5口令,请运行GRUB所附带的grub-md5-crypt工具(以root身份)。它将提示输入一个希望加密的口令。然后输出使用MD5加密的口令。将这个口令拷贝到grub.conf中password-md5之后,但是要在同一行上。通常这个口令可以设置为root口令,因为无论如何也只有root才可以读取grub.conf文件。title表示在运行期间能够从用户菜单界面引导的具体操作系统的名称。与LILO不同,在这个名称中可以有空格。root告诉GRUBLinux文件系统的实际位置。GRUB引用介质的方式与LILO不同。在LILO配置文件中,/dev/hda1是第一块硬盘中的第一个分区。Grub将此硬盘引用为(hd0,1),即第一块硬盘的第一个分区。kernelvmlinuz-X.X.XX-XX是root目录中默认引导映像的名称。X.X.X.X-XX为内核的版本号和补丁的版本号。root=LABEL=/表示根据卷标找到根设备vga=0 x0317,设置帧缓冲模式下,需要指定显示模式。0 x0317分辨率为1024X768,该值可以根据自己显卡的情况设置。initrdinitrd-X.X.XX-XX.img是root目录中默认initrd映像的名称。rootnoverify告诉GRUB不要尝试去改变操作系统的root。这样,当文件系统不被GRUB所支持时,不会出现引导错误。chainloader+1告诉GRUB使用一个链式加载程序来加载这个操作系统,加载Windows等其他操作系统时需要这个选项。第34页,本讲稿共89页在grub.conf 文件中可以使用的参数有很多,表2-3 中所列举的参数只是其中经常用到的。如果需要了解有关 grub.conf 文件中其他参数的资料,请参考man grub.conf。为了对grub.conf文件有整体的认识,以下提供一个完整grub.conf文件,可以对照表2-3来加以理解。与LILO的配置文件不同,grub.conf 配置文件会在操作系统引导时被读取,当它被修改后不必去更新MBR。第35页,本讲稿共89页#grub.conf 文件示例文件示例default=1timeout=50splashimage=(hd0,3)/boot/grub/splash.xpm.gzpassword-md5$1$QlD4ph15$I1lsXzzPlurWRF4gJeyMf0title Red Hat Linux(2.4.20-8)root(hd0,3)kernel/boot/vmlinuz-2.4.20-8 ro root=LABEL=/initrd/boot/initrd-2.4.20-8.imgtitle WinXP SP2rootnoverify(hd0,0)chainloader+1title Red Hat Linux(2.4.20-8,FrameBuffer)root(hd0,3)kernel/boot/vmlinuz-2.4.20-8-FB ro root=LABEL=/vga=0 x0317initrd/boot/initrd-2.4.20-8.img第36页,本讲稿共89页以上只是对GRUB和LILO的使用和配置做了简要的介绍,希望读者可以对这两种引导装载程序有一定的了解,要熟练地掌握它还需要经过大量、反复地练习。第37页,本讲稿共89页2223 LILO与GRUB的转换如果Linux系统原来使用GRUB启动,现在想要更改为LILO启动,只要使用以下命令:#cp/etc/lilo.conf.anaconda/etc/lilo.conf 复制配置文件#lilo 使配置文件生效如果原来使用LILO启动,现在想要改为GRUB启动,只要使用以下命令:#grub-install/dev/hda注意:命令参数/dev/hda为第一个hde硬盘,使用时要根据自己计算机上的硬盘类型以及Linux系统所安装的位置来定。第38页,本讲稿共89页这里再次提醒读者,用LILO引导系统时,引导口令是以明文的形式保存在lilo.conf配置文件中的,这对系统安全是非常不利的;建议还是用GRUB引导为好。如果一定要用,则至少要检查lilo.conf文件的读/写权限是否只对超级用户开放,如果不是,一定要修改该文件权限,以保证只有超级用户可以读和写。修改命令为:#chmod 600/etc/lilo.conf也可以在图形方式下,在/etc目录找到该文件,鼠标移动到该文件上单击右键,在弹出的菜单上选择“属性”菜单项,单击鼠标左键,然后选择“权限”选项卡来设置。第39页,本讲稿共89页2224 Linux与引导装载程序的卸载如果Linux系统安装后不想再用时可以卸载,但没有专门的卸载程序。一般在卸载Linux系统后还要卸载掉LILO或GRUB引导装载程序,以恢复计算机系统中其他操作系统的正常引导。22241 卸载Linux一般可以用MS-DOS的分区软件fdisk删除对应的Linux分区(ext2或ext3文件系统)和Linux的交换分区(swap),这个软件让用户以交互方式选择分区号并删除分区;或者用Windows2000/XP的安装盘在安装过程中删除未知的分区(windows无法识别Linux的分区,所以显示为未知分区)后再退出安装;或者更为直观、安全的方法是用第三方软件,如pqmagic(魔术分区)来删除。删除时一定要看清楚选中分区的文件系统,不要误删除计算机上的其他操作系统。第40页,本讲稿共89页22242 卸载LILO如果先卸载Linux系统后卸载LILO,则用MS-DOS的启动盘或带有fdisk(这个是MS-DOS下的分区软件与Linux下的fdisk是两个不同的分区软件)等工具软件的windows安装光盘启动计算机;在命令行方式下输入:fdisk/mbr即可清除掉MBR中的LILO引导装载程序,重新启动计算机后就可以正常地启动其他操作系统了。如果是先卸载LILO后卸载Linux,则可以在linux的终端下输入:#lilo u或-U参数-u为删除LILO,但是lilo会检查时间戳,如果当初记录的时间戳与/boot/boot.0800文件的记录不符,则拒绝删除。参数-U也为删除LILO,但是lilo不会检查时间戳。如果用户在用LILO之前配置、使用过GRUB并在/boot/grub目录还有grub.conf文件,则在LILO删除后自动使用GRUB作为引导程序装载器。只要还没有卸载掉硬盘上的Linux,任何时候想要恢复LILO引导,只要用引导盘启动Linux系统后运行lilo命令即可。第41页,本讲稿共89页22243 卸载GRUBGRUB与LILO不同,它没有专门的卸载命令和参数,因此要卸载它只能用fdisk软件的fdisk/mbr命令。同样、只要还没有卸载掉硬盘上的Linux,任何时候想要恢复GRUB引导,只要用引导盘启动Linux系统后运行grub-install/dev/hda命令即可。当然、也可以用GRUB交互命令来恢复,不过这种方法比较麻烦,且要对grub交互命令很熟悉;有关这些内容请参阅man grub。第42页,本讲稿共89页23 系统运行级与运行级的切换Linux系统与其他操作系统不同,它设有运行级别。该运行级指定操作系统所处的状态。Linux系统在任何时候都运行于某个运行级上,且在不同的运行级上运行的程序和服务都不同,所要完成的工作和所要达到的目的也都不同。Linux(Red Hat 9.0)设置了7个不同的运行级,系统可以在这些运行级别之间进行切换,以完成不同的工作。第43页,本讲稿共89页231 系统运行级运行级0:关闭计算机。运行级1:单用户模式运行级2:多用户模式(不带网络文件系统NFS支持功能)运行级3:带有网络文件系统NFS支持的多用户模式运行级4:系统保留备用运行级5:用于自动启动 XFree86 系统(图形方式)运行级6:重新启动。还有两种特殊的运行级(运行级a、b、c和运行级Q),但是没有使用。第44页,本讲稿共89页对于运行级0是为关闭计算机系统而设的,这时系统中所有已开启的服务都要停止、处于运行状态的进程都要转变为终止状态、系统收回所分配的资源,并关闭系统电源。当我们使用关机shutdown h 命令时,系统转入该运行级。对于运行级1是为进入单用户模式维护计算机系统而设的,在该运行级上可以运行一些不适合在多用户、多任务模式下运行的命令,如磁盘编辑等;这时系统只开启很少的服务,如keytable服务。第45页,本讲稿共89页对于运行级2、3、5都是多用户模式,只是运行级2、3为字符终端方式,但运行级2不带网络文件系统(NFS)支持而运行级3有带NFS;运行级5为图形方式,它使普通用户操作更为简单、方便。对于运行级6是为重启计算机系统而设的,这时系统中所有已开启的服务都要停止、处于运行状态的进程都要转变为终止状态、系统收回所分配的资源,并重新启动计算机系统。当我们使用 shutdown r 或reboot命令时,系统转入该运行级。第46页,本讲稿共89页232 运行级的查看系统运行级的查看可以使用执行命令方式和查看配置文件两种方式。执行命令方式:用runlevel命令可以查看以前和当前系统的运行级。其命令格式为runlevel,它查看/etc/run/utmp 文件,并在标准输出设备上输出以前和当前运行级情况。如输出为 N 5 表示以前运行级未知,当前运行级为5级。如果系统是从某个运行级切换到另一个运行级,例如、从运行级3切换到运行级5,则用runlevel命令查看时显示为3 5;表示以前运行级为3,当前运行级为5。第47页,本讲稿共89页查看配置文件方式:查看配置文件方式只能查看系统当前的运行级,系统的配置文件是/etc/inittab。该文件为文本文件格式,用任意一个文本编辑器都可以打开。在打开的文件中可以看到一行:id:5:initdefault:这行中的5表示当前缺省的系统运行级为5。第48页,本讲稿共89页233 运行级的切换系统运行级的切换也可以使用执行命令方式和修改配置文件两种方式。执行命令方式:Linux 系统在运行中随时可以根据需要切换它的运行级,切换命令有两个。命令格式:命令一 init 0123456Ss命令二 telinit 0123456sSQqabcUu参数说明:0-6:切换到指定的运行级a、b、c:对于那些在/etc/inittab文件中指定的可以在a、b、c运行级中运行的过程进行处理。S或s:切换到单用户模式 Q或q:重新检查/etc/inittab文件 U或u:使init重新执行一遍,保留当前状态,不重新检查/etc/inittab文件。第49页,本讲稿共89页由于运行级切换时系统要安装或卸载部分文件系统、关闭和开启部分服务、分配其他资源,因此、运行级的切换需要花费一定的时间。每次切换运行级后,系统又会重新回到用户登录的界面,要求用户重新登录。修改配置文件方式修改配置文件方式实际上就是直接把/etc/inittab文件中的缺省运行级修改到要设置的运行级上并保存,但这种方式需要重新启动系统才能使运行级切换生效。因此、在实际使用中用执行命令方式切换运行级更为方便。为了更好地了解系统运行级的概念,可以做以下运行级切换实验。在以图形方式登录Linux系统后,打开一个终端并运行init 2命令。显示结果如图2-8所示:第50页,本讲稿共89页图2-8运行级的切换第51页,本讲稿共89页可以看到当运行级从5切换到2时,系统重新初始化、停止了atd、xinetd、NFS等服务,并重新启动pcmcia、spamd等服务。这是因为运行级2是没有NFS的,所以系统停止了与网络有关并提供相应服务的守护进程。读者可以继续进行从该运行级到其他运行级切换的实验,可以看到有不同的服务被停止和启动。234系统运行级的服务不同的运行级下启动的服务是不同的,用户可以在字符或图形模式下查看Linux系统已经启动和关闭了哪些服务;也可以在字符或图形模式下修改安装中的默认设置,以开启或关闭自己需要的服务;例如、telnet、tftp等。第52页,本讲稿共89页2341 服务的查看系统运行级服务的查看可以使用命令方式或图形方式。命令方式:在字符模式下可以用chkconfig命令来查看哪些服务开启、哪些服务关闭。查看命令为:chkconfig list显示结果可能如下:microcode_ctl 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭kudzu 0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭syslog 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭netfs 0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭基于 xinetd 的服务:chargen-udp:关闭rsync:关闭chargen:关闭daytime-udp:关闭第53页,本讲稿共89页显示的结果从前到后分为两个部分:第一部分为独立的守护进程,第二部分为基于 xinetd 的服务;显示的结果从左到右分为:服务名称、运行级、状态。图形方式依次单击“红帽子(系统状态栏上的图标)”、“系统设置”、“服务器设置”、“服务”就可启动服务设置程序。该程序的运行界面如图2-9所示。第54页,本讲稿共89页图2-9图形方式服务查看(设置)第55页,本讲稿共89页图上多选框中打勾的为已开启的服务、未打勾的都是未开启的服务。通过移动滚动条即可直观地查看。独立运行的守护进程由init脚本文件负责管理,所有独立运行守护进程的脚本文件都放在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进程,包括:syslog和cron等等。独立运行的守护进程采用的是Unix传统的C/S访问模式。服务器在一个特定的端口上进行监听(listen)并等待客户端发出的联接请求。如果客户端提出一个连接请求,守护进程就创建(fork)一个子服务器进程以响应这个连接请求,而主服务器则继续监听,以等待其他客户端的请求。第56页,本讲稿共89页在Linux系统下的许多服务都是以独立运行的守护进程形式存在的,如route、nfs、gated、smb、tftp等等。这些服务由/etc/rc.d目录下所对应的运行级别目录rcx.d(x表示0-6运行级的数字)当中的符号链接文件启动。从独立运行的守护进程的概念可以看出,对于系统所要启动的每一种服务,都必须运行一个监听某个端口请求连接的守护进程,这意味着资源严重的浪费。为了解决这个问题,Linux 引进了“网络守护进程服务程序”的概念。Redhat Linux 9.0使用的网络守护进程是xinted(eXtended InterNET daemon)。xinted模式也称 Internet SuperServer(超级服务器)。xinetd 能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的守护进程。第57页,本讲稿共89页如果系统不想要每一个网络服务进程都监听其服务端口,则只要运行单个xinetd就可以同时监听所有服务端口,这样可以降低了系统开销,提高系统资源的利用率。但是对于访问量大、经常出现并发访问的服务,xinetd 要频繁启动对应的网络服务进程,反而会导致系统性能下降。一般来说系统负载高的服务如:sendmail、httpd等服务是以独立运行的守护进程形式启动的;而其他服务类型都可以使用xinetd超级服务器来管理。第58页,本讲稿共89页2342 服务的功能在Red Hat Linux9.0的/etc/rc.d/rcx.d目录中,有许多以“K”或“S”开头的符号链接文件,这些链接文件指向/etc/rc.d/init.d目录中的脚本文件。以K开头的文件表示在运行级切换时要终止某个服务、以S开头的文件表示在运行级切换时要启动某个服务。以下列出的是这些文件所启动服务的功能:K05innd:启动Usenet新闻服务器守护进程。K05saslauthd:使用SASL的认证守护进程。K09privoxy:启动WEB代理进程,该进程有高级过滤功能;可以保护私密、过滤网页内容、管理cockies和屏蔽广告。S99local:当所有的初始化脚本程序执行完后才执行它。也可以把自己编写的初始化程序放在这里。S99mdmonitor:用于RAID(磁盘阵列)软件的监视与管理。第59页,本讲稿共89页2343 服务的设置系统运行级服务的设置可以使用命令方式或图形方式。命令方式:在字符模式下可以用命令来设置开启或关闭服务。设置命令为:ntsysv设置界面如图2-10所示。第60页,本讲稿共89页图2-10启动服务第61页,本讲稿共89页用光标键或鼠标移动滚动条到想要设置的服务项目上,按空格键或用鼠标单击选项框,选中后有*表示、若不需要该服务,则再按空格键或用鼠标单击选项框。也可以运行setup命令、再选择“System services”菜单项回车来设置。图形方式:与服务查看的图形方式相同。依次单击“红帽子”、“系统设置”、“服务器设置”、“服务”就可启动服务设置程序。运行界面如图2-9所示(服务查看、设置)。通过鼠标单击和移动滚动条即可直观地设置服务的开启和关闭。第62页,本讲稿共89页24 系统启动与引导过程Linux系统的启动与引导过程分为两个阶段,第一个阶段是在单用户、实模式下的系统自举阶段;第二个阶段是Linux内核加载进内存并运行后进入多用户、保护模式。第63页,本讲稿共89页241系统的引导步骤接通计算机电源并加载其操作系统的过程称为启动与引导。系统的启动与引导过程分为几个步骤完成BIOS 自检MBR 中的 LILO 或 GRUB 启动Linux 操作系统内核运行init 进程的运行用户登录硬盘的第0磁道的第1个扇区称为 MBR。它的大小是 512 字节,其中分为两个部分:第一部分为 Pre-Boot 区,占 446 字节。第二部分为 Partition Table 占 66 字节。Pre-Boot区相当于一个小程序,它的作用之一就是判断哪个Partition Table(分区表)被标志成Active 状态,然后去读那个Partition的Boot(引导)区,并运行该Boot区中的程序代码。第64页,本讲稿共89页242 BIOS 自检对于80 x86 系列的计算机在系统加电后,CS(Code Segment)寄存器中的各位全部被置1,而IP(Instruction Pointer)寄存器中的各位全部被置 0,即CS=FFFFH,而IP=0000H,此时CPU就根据CS和IP的值,到地址FFFF0H(CS寄存器内容左移4位与IP寄存器内容相加)去执行那个地方所存储的指令。地址FFFF0H 已经到了基本内存的顶端,一般在FFFF0H地址单元内会存放一个JMP指令,以跳转到比较低的地址。接着,ROM BIOS就会作一些基本的检查操作,如内存检验、键盘检查等,然后在UMB(Upper Memory Block)中扫描,看是否有合法的ROM存在(比如 SCSI 卡上的 ROM),假如存在,就到 ROM 里去执行这些固化的指令,执行完成后再继续运行,最后 BIOS 自检完毕,读取硬盘中的第0个磁道的第1个扇区中(MBR主引导区记录)的指令,并将控制权交给主引导区记录中的 Pre-Boot区中的指令。第65页,本讲稿共89页243 MBR中LILO或GRUB的启动在安装 Linux 时,安装软件会提示你选择今后所用的引导程序装载器是LILO还是 GRUB,早期的Linux多用LILO,现在多用GRUB。如果LILO或GRUB安装在主引导区的记录中,那么Pre-Boot区中的指令就是LILO或 GRUB启动指令。无论是LILO还是GRUB都将完成用户信息的显示、操作系统的选择、命令行参数的传递,然后加载对应的操作系统的内核映像文件,如vmlinuz,最后将控制权交给加载入内存的操作系统内核映像。有关LILO和GRUB启动与引导的问题在本章第二节已经有详细的说明。第66页,本讲稿共89页24