版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 Linux系统启动过程,Linux系统的启动分5个阶段,每个阶段都完成不同的启动任务。本章以Linux和x86平台为例,剖析从打开计算机电源到计算机屏幕出现登录欢迎界面的整个Linux启动过程,并重点介绍启动中涉及的主要配置文件以及管理工具。,学习大纲,Linux系启动流程 BIOS初始化 启动引导工具 Linux内核 初始化内存镜像盘(initrd) 核心初始化 系统初始化文件(inittab) 系统运行级别(runlevel) 系统初始化脚本(rc.sysinit) 运行级别服务目录 用户自定义启动脚本文件,Linux系统启动过程,由于在Linux系统的启动过程中会出现非常多的提示
2、信息,而且很多启动信息都是在屏幕上一闪而过,所以对于很多Linux系统的初学者来说,可能会觉得Linux的启动过程非常神秘和复杂。其实Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段。,1BIOS加电自检 2加载主引导加载程序(MBR) 3加载次引导加载程序(GRUB) 4Linux内核映像 5init进程,1 Linux系统启动过程简介,2 BIOS加电自检post,检测外围设备 检测启动设备(硬盘、光盘、网络) 如果是硬盘启动则读取与执行启动设备的第一个扇区,2、BIOS初始化,硬件时钟和软件时钟设置,3 引导加载程序,GRUB是Linux默认的引导加载程序,其引
3、导过程又可以分为启动主引导加载程序和启动次引导加载程序两个阶段。本节将介绍GRUB在这两个阶段中的启动过程,以及介绍GRUB配置文件/boot/grub/grub.conf中的各种选项的使用。,3.1 引导加载程序的启动,Linux默认安装的引导加载程序是GRUB,是目前最常用的Linux引导加载程序。其引导过程分为两个阶段,第一阶段是保存在MBR中的主引导加载程序的加载。MBR中的主引导加载程序是一个512字节大小的映像,其中包含有机器的二进制代码和一个小分区表。主引导加载程序的任务就是查找并加载保存在硬盘分区上的次引导加载程序,它通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备
4、读入内存中并运行,进入引导加载程序的第二阶段。,3.1.1 启动流程,次引导加载程序也被称为内核加载程序,这个阶段的任务是加载Linux内核。一旦次引导加载程序被加载到内存中后,便会显示GRUB的图形界面,在该界面中用户可以通过上下方向键选择需要加载的操作系统以及它们的内核。,3.1 引导加载程序的启动,GRUB,GRUB的配置文件为 /boot/grub/grub.conf #ls l /etc/grub.conf 这个文件为一个软链接文件,指向/boot/grub/grub.conf,5.3.2 GRUB配置,GRUB的配置主要通过修改/boot/grub/目录下的grub.conf文件来
5、完成,用户可以通过VI或者在图形界面中使用文件编辑工具打开该文件进行编辑。 #vi /etc/grub.conf 1default选项:定义缺省启动系统 2timeout选项:定义缺省等待时间 3splashimage选项:定义GRUB界的图片 4hiddenmenu选项:隐藏菜单 5title选项:定义菜单单向ing称 6root (hdx,y):设置grub所在分区 7kernel选项:定义内核文件所在位置 8. initrd选项:定义文件加载镜像文件,grub.conf的范例: timeout=10#等待10秒自动进入默认操作系统 splashimage=(hd0,0)/grub/spl
6、ash.xpm.gz#grub启动背景画面 default=0#默认进入第一个标题 title Red Hat Linux (2.4.20-18)#Red Hat Linux标题 root (hd0,0)#根文件系统位置 kernel /vmlinuz-2.4.20-18 ro root=LABEL=/ #核心位置与核心加载参数 initrd /initrd-2.4.20-18.img#启动initrd ram盘 title windows#另一个操作系统的标题 rootnoverify (hd0,1)#操作系统存放在hd0,1上,不要在grub里mount chainloader +1#从h
7、d0,1的第一个扇面启动,如果硬盘上的MBR被更动过,可以用 /sbin/grub-install /dev/hda | sda来重安装grub。,4 liunx内核,内核工作流程 内核安装包 vmlinuz-x.x.x,4.1 内核映像,Linux内核获得控制权后,将会按以下步骤继续引导系统。 (1)内核映像首先会检测系统中的硬件设备,包括内存、CPU、硬盘等,对这些设备进行初始化并配置。 (2)内核映像是经过压缩的,接下来它要对自身进行解压,同时加载必要的设备驱动。,(3)初始化与文件系统相关的虚拟设备,如LVM或者软件RAID等。 (4)装载根文件系统(/),把根文件系统挂载到根目录下。
8、 (5)完成引导后,Linux内核会在其进程空间内加载init程序,并把控制器交给init进程,由init进程继续完成接下来的系统引导工作。,4.2 内核核心版本命名规则,主版本号、次版本号、补丁级数 linux附加参数:发布号 显示当前系统的内核信息(#uname r) Ls l /boot/vmlinuz 2,4.3、vmlinuz-x.x.x,系统引导内核文件(vmlinuz) 是可引导的、压缩的内核。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。 vmlinuz是可执行的Linux内核,它的解压程序也在内核当中 。 内核文件存放 在/boot目录中。 www.
9、,内核映像,5 init进程,init进程是Linux系统所有进程的起点,内核在完成内核引导后,便会加载init进程,其进程号是恒定为1。init进程启动后,会初始化操作系统,并启动特定的运行级别(Runlevel)下的自动运行程序。 同时,向PID为0的内核调度器(kernel)获得CPU时间。,5.1 init进程简介,内核映像在完成引导后,便会启动init进程。init进程对应的执行文件为/sbin/init,它是系统中所有进程的发起者和控制者,所有的进程都是由它所衍生。如果init进程出现问题,系统中的其他进程也会随之而受影响。 1作为所有进程的父进程参照对象 2运
10、行不同级别的程序,内核进程init 查看 #ps -ls | more,inittab,Vi /etc/inittab,5.2 init进程的引导过程,当init进程获得控制权后,它首先会执行/etc/rc.d/rc.sysinit脚本,根据脚本中的代码配置环境变量、配置网络、启用Swap、检查并挂载文件系统、执行其他系统初始化所必须的步骤等。,6 重启和关闭系统,Linux下常用的关机/重启命令有shutdown、root、halt以及init,它们都可以达到重启系统的目的,但每个命令的过程过程都有所不同。在本节的内容中将会介绍这些命令的使用方法,以及它们之间的区别,希望读者经过本节的学习后
11、可以灵活使用这些命令,完成系统的关机和重启。,6.1 shudown命令:关闭或重启系统,使用shutdown命令可以安全地重启或关闭系统。当用户执行shutdown命令后,系统会通知所有已经登录的用户系统将要关闭,然后拒绝任何新的用户登录,同时向系统中进程发送SIGTERM信号,这样就可以让应用程序有足够的时间提交数据。启动或关闭系统是通过向init进程发送信号,要求它改变运行级别来实行的。其中,级别0被用来关闭系统,级别6为重启系统,级别1为单用户模式。shutdown命令的格式如下: shutdown -t sec -arkhncfFHP time warning-message,5.6
12、.2 halt命令:关闭系统,halt是关闭系统的快捷命令。执行halt命令其实是相当于执行带“-h”选项的shutdown命令。halt命令的格式如下所示。 halt -n -w -d -f -i -p -h,5.6.3 reboot命令:重启系统,reboot是重启系统的快捷命令。执行该命令,相当于执行带“-r”选项的shutdown命令。该命令的格式如下: reboot -n -w -d -f -i -p -h,5.6.4 init命令:改变运行级别,Linux系统共有7个不同的运行级别:0、1、2、3、4、5、6,使用init命令,可以改变系统当前的运行级别。其命令格式如下: init
13、 -a -s -b -z xxx 0123456Ss ,7.2、系统运行级别(runlevel),init定义了06这7个运行级别。 0 关机 1 单用户模式(文本模式) 2 多用户模式但不支持NFS(文本模式) 3 多用户(文本模式) 4 暂无定义 5 多用户图形界面模式 6 重启计算机 运行级别可以被指定于: 系统启动时作为核心加载参数被指定 未被指定的情况下,系统启动时从/etc/inittab中读取 在系统运行中,root用户键入init 0-6来切换模式。,8、系统初始化脚本,/etc/rc.d/rc.sysinit是系统启动用的脚本 从/etc/sysctl.conf中读取核心参数
14、 设置系统时钟 载入keymap 激活swap分区 设置主机名 检查根文件系统并挂载 加载Raid设备 激活磁盘限额 检查并挂载其他文件系统 清除失效锁及PID文件,9、运行级别服务目录,每一个运行级别都对应一个目录 /etc/rc.d/rcX.d 目录内存放的,即当前运行级别需要开启的服务脚本 对应/etc/rc.d/init.d/目录下的链接 链接文件开头是S,表示启动;开头是K,则表示关闭。 切换运行级别,即运行这个目录里所有的脚本 用户可以通过ntsysv调整当前运行级别的开关服务,或用chkconfig,调整某一运行级别下的开关服务。,10、用户自定义启动脚本文件,/etc/rc.d
15、/rc.local文件是在系统启动最后一个被读取的用户自定义启动脚本文件。 一般系统用户将针对此台计算机的开机定制设置写入其中,而非/etc/rc.d/rc.sysinit。,5.6.5 通过图形界面关闭系统,要注销当前用户,可以在系统面板上选择【系统】|【注销】命令,打开如图5.12所示的对话框。单击【注销】按钮,系统将注销当前的登录用户,并退出到用户登录界面。如果要关闭该对话框并返回桌面,可单击【取消】按钮。如果用户不单击任何按钮,系统将会在60秒后自动注销当前的登录用户。,5.7 系统启动时常见的问题处理,Linux救援模式是解决系统无法正常引导的最有效的解决方法,用户应该要熟练掌握进入
16、Linux救援模式的方法。对于安装了多系统的环境,经常会由于重装Windows或者重新进行分区,导致GRUB被覆盖或者无法引导Linux,本节也会对这些问题给出具体的解决方法。,7.1 进入Linux救援模式,当因为某些原因导致无法通过正常引导进入系统(例如GRUB损坏或者误删除了某些重要的系统配置文件)或需要进行某些特殊的系统维护任务(例如忘记了root用户的口令需要进行重置)时,就需要使用Linux救援模式。 分析:进入单用户模式(类似于windows的安全模式)重新设置root密码 开机进入GRUB界面,按e进入编辑行模式,选择kernel行,再次按e键,在新的界面最后一行输入空格1(注意是one)或s,然后回车,则可进入单用户模式。 Passwd root就可以修改密码了。,5.7.2 GRUB被Windows覆盖,当安装双系统环境时,如果先安装Linux,再安装Windows;或者已经安装好双系统环境后,对Windows进行了重装,那么保存在MBR中的GRUB就会被Windows系统的引导装载程序NTLDR所覆盖,导致Linux系统无法引导。 这时候可以通过以下步骤恢复GRUB。 (1)使用5.7.1节中所介绍的方法进入Linux救援模式,并执行“chroot /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论