linux开机启动流程

Oops:

    1、此流程图包含开机到登录shell的相对完整流程。

    2、在每个阶段解释的过程中会受到硬件、系统版本等的不同会有区别。

    3、难免会有差错,望指出。

    4、谢谢。^_^



第一部分:POST(Power On Self Test)

         各硬件状态检测,如果硬件有问题,将"不能"继续下一步操作,这时候只有我们自己观察错误提示以及通过声音来辨别大概硬件的故障!不同硬件的故障发出的声音也不尽一致,大概可以使用以下方法来判断:

        长声不断:内存故障

        持续短音:电源或者显卡故障

        当硬件检测都通过时候,这时候该BIOS出马了。


第二部分:BIOS(Basic Input Output System)

        这个阶段可以查看计算机当前整体硬件信息状态以及设置硬件日期时间、是否开启虚拟化、设备引导顺序、关闭和启用设备、安全等信息。当然这些需要CMOS电池供电。还记得BIOS密码吗? 主机上有多个硬盘,U盘,光盘等设备,应该从哪里引导? 进去调节调节。当然主板上的BIOS有几种,配置方法也有点区别,大体上分:Award BIOS、AMI BIOS、Phoenix BIOS。这两部分基本都是"写死"了,我们能做的不是很多。


第三部分:Boot Loader(MBR)

    MBR:Master Boot Record,位于磁盘0柱面0磁头1扇区,容量大小512字节,其中446字节为mbr程序,64字节为DPT(磁盘分区表),2个字节55AA。Linux(CentOS6)使用grub引导程序,根据grub.conf配置文件的设定,加载相应的内核以及initramfs文件。grub运行用户自己指定root、init级别等设置。


第四部分:Kernel

    加载内核/boot/vmlinuz-Version-Release.el6.arch,在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程,这就要借助ramdisk,ramdisk里面保存了启动所必须的用户程序和驱动程序。CentOS 5使用initrd程序,CentOS 6以后使用initramfs。内核初始化结束,进行根切换,运行第一个进程。

第五部分:init

    Linux运行的第一个进程,init会根据用户的配置选择相应的启动级别进行系统的进一步初始化。通过/etc/inittab来获取运行级别,调用第一个初始化脚本rc.sysinit。


第六部分:rc.sysinit

    检测SELinux状态、设置主机名、激活SWAP、设置内核参数、激活RAID、读写方式重新挂载根文件系统、更新磁盘配额等都有此脚本完成,更多详细情况可以grep ‘^#‘ /etc/rc.d/rc.sysinit。


第七部分:rc#.d

    根据用户指定的运行级别运行/etc/rc.d/rc#.d/下面以S开头的脚本。最后执行/etc/rc.d/rc.local脚本中的指令。

第八部分:mingetty

    系统会默认开启多个终端程序,并且这些终端程序都具有respawn特性。

第九部分:shell环境初始化

    如果用户是非登录shell,那么上一步就已经结束,如果用户具有登录权限,在验证通过之后,系统会会对环境进行初始化工作。分别依次调用的脚本为/etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。