描述linux开机到登陆界面的启动过程详解(共8页)_第1页
描述linux开机到登陆界面的启动过程详解(共8页)_第2页
描述linux开机到登陆界面的启动过程详解(共8页)_第3页
描述linux开机到登陆界面的启动过程详解(共8页)_第4页
描述linux开机到登陆界面的启动过程详解(共8页)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上简要描述linux系统从开机到登陆界面的启动过程(面试用)简述:1.开机BIOS自检2.MBR引导3.grub引导菜单4.加载内核kernel5.启动init进程6.读取inittab文件,执行rc.sysinit,rc等脚本7.启动mingetty,进入系统登陆界面来个简图:超详细描述linux系统从开机到登陆界面的启动过程对于linux系统的初学者来说,理解并掌握linux系统启动流程能够使你够深入的理解linux系统,还可以通过系统的启动过程来分析问题解决问题。Linux系统的启动流程 关于linux系统的启动流程可以分为以下步骤:POST(加电自检)加载BIO

2、S(Basic Input/Outpu System)确定启动设备(Boot sequence)、加载Boot Loader加载内核(kernel)初始化initrd运行/sbin/init初始化系统打印用户登录提示符下面让我们逐步剖析说明系统启动过程: 1、POST开机自检 linux开机加电后,系统开始开机自检,该过程主要对计算机各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等,如果出现致命故障则停机,并且由于初始化过程还没完成,所以不会出现任何提示信号;如果出现一般故障则会发出声音等提示信号,等待故障清除;若未出现故障,加电自检完成。 2、开机自检完成,查找可启动设备,加

3、载主引导目录(MBR) 开机自检完成后,CPU首先读取位于CMOS中的BIOS程序,按照BIOS中设定的启动次序(Boot Sequence)逐一查找可启动设备,找到可启动的设备后,去该设备的第一个扇区 中读取MBR,那么MBR是什么哪?它又有什么作用哪? MBR存在于可启动磁盘的0磁道0扇区,占用512字节,它主要用来告诉计算机从选定的可启动设备的哪个分区来加载引导加载程序(Boot loader),MBR中存在如下内容: (1) Boot Loader 占用446字节,存储有操作系统(OS)相关信息,如操作系统名称,操作系统内核位置等,它的主要功能是加载内核到内存中运行。 (2) Part

4、ition Table 分区表,占用64字节,每个主分区占用16字节(这就是为啥一块硬盘只能有4个主分区啦_) (3)分区表有效性标记占用2字节 CPU将MBR读取至内存,运行GRUB(Boot Loader常用的有GRUB和LILO两种,现在常用的是GRUB),GRUB会把内核加载到内存去执行。由上图可以看出,内核文件存在于/boot目录下,但是在GRUB加载内核时,连/还没有被加载,它是怎么在磁盘上找到内核的哪?我们来查看一下GRUB的配置文件可以找到答案。在/boot/grub/grub.conf中可以看到 root (hd0,0)这一行实际上是指定了/目录的所在的位置,但这个根并不是真

5、正的根,而是/所在的位置,可以理解成/boot是处在(hd0,0)/boot,而这里的(hd0,0)指的是第一个磁盘的第一个分区,GRUB不是通过文件系统来访问内核的,以因为此时内核还没有启动,不存在文件系统,而是直接访问 第一个磁盘的第一个分区(通过MBR中的分区表来识别分区),而识别MBR中的分区的文件系统,则是由GRUB通过加载自身携带的系统文件来实现的,这些文件在/boot/grub目录中大家可以看到,红色标出的地方就是GRUB可以识别的文件系统的类型了。事实上,总结一下,grub启动过程可以分为两个步骤:第1阶段 BIOS加载MBR中的GRUB(GRUB第一阶段的文件),而GRUB只

6、有446字节,无法实现太多功能,所以利用该阶段的文件去加载1.5阶段的文件(/boot/grub/下的文件)第1.5阶段 用来加载识别文件系统的文件,识别完系统后才可以找到/boot目录。第2阶段 寻找内核并加载到内存中。下图是GRUB启动过程中所用的的文件3、加载内核,初始化initrd GRUB把内核加载到内存后展开并运行,此时GRUB的任务已经完成,接下来内核将会接管并完成 探测硬件加载驱动挂载根文件系统切换至根文件系统(rootfs)运行/sbin/init完成系统初始化。但是,问题来了,要访问根文件系统必须要加载根文件系统所在的设备,而这时根文件系统又没有挂载,要挂载根文件系统有需要

7、根文件系统的驱动程序,这是一个典型的先有鸡先有蛋的问题啊!为解决这个问题,GRUB在加载内核同时,也把initrd加载到内存中并运行,那么initr又起到了什么作用哪? initrd展开后的文件linux中/下的文件 我们可以看到,其实initrd文件其实是一个虚拟的根文件系统,里面有bin、lib、lib64、sys、var、etc、sysroot、dev、proc、tmp等根目录,它的功能就是讲内核与真正的根建立联系,内核通过它加载根文件系统的驱动程序,然后以读写方式挂载根文件系统,至此,内核加载完成。4、运行/sbin/init,进行系统初始化内核并加载进内存运行并以读写方式挂载完根文件

8、系统后,执行第一个用户进程init,init首先运行/etc/init/rcS.conf脚本,如下图可以看到,init进程通过执行/etc/rc.d/rcS.conf首先调用了/etc/rc.d/rc.sysinit,对系统做初始化设置,我们来看看这个脚本都是做了些什么哪?事实上init执行/etc/rc.d/rc.sysinit的初始化将会做很多设置: 1、获得网络环境 2、挂载设备 3、开机启动画面Plymouth(取替了过往的 RHGB) 4、判断是否启用SELinux 5、显示于开机过程中的欢迎画面 6、初始化硬件 7、用户自定义模块的加载 8、配置内核的参数 9、设置主机名 10、同

9、步存储器 11、设备映射器及相关的初始化 12、初始化软件磁盘阵列(RAID) 13、初始化 LVM 的文件系统功能 14、检验磁盘文件系统(fsck) 15、设置磁盘配额(quota) 16、重新以可读写模式挂载系统磁盘 17、更新quota(非必要) 18、启动系统虚拟随机数生成器 19、配置机器(非必要) 20、清除开机过程当中的临时文件 21、创建ICE目录 22、启动交换分区(swap) 23、将开机信息写入/var/log/dmesg文件中 init执行完/etc/rc.d/rc.sysinit后,将会执行/etc/inittab来设定系统运行的默认级别:如上图,linux中共有0-6七个运行级别,而我自己系统的默认运行级别是3. 设定完系统默认运行级别以后,接着调用/etc/rc.d/rc脚本,这个脚本接收默认运行级别参数后,依脚本设置启用或停止/etc/rc.d/rc0-6.d/中相应的程序,如下图,看一下我系统运行默认级别(级别)3下的内容吧如图示,/etc/rc.d/rc0-6.d/下的文件在系统初始化阶段,以S开头的将被启动,以K开头的将被关闭,文件名K/S 后面的的数字代表优先级,数字越小优先级越高,优先执行。最后,将执行/etc/rc.d/rc.local脚本,可以根据自己的需求将一些执行命令或者脚本写到其中,当开机时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论