首页 > 代码库 > Linux 初始化及系统启动过程
Linux 初始化及系统启动过程
从按下电源键到进入系统的时间里,系统发生了哪些事情?经历了怎样的一个过程?是如何进入到登陆界面的?下面是整理的一个简单Linux启动过程。
1、服务器硬件要完整,CPU、内存、硬盘、主板等硬件缺一不可,并且接通电源,然后按下开机键,CPU开始自检所连接的硬件,比如鼠标键盘、显示器、内存、USB设备、硬盘等硬件,如果再自检过程中出现错误,会发出滴滴的声音提示,假如自检没有问题,则会按照BIOS设置的启动顺序,选择从光盘或光驱启动
2、假如从硬盘启动,会读取硬盘的0磁道的0扇区,供512个字节,称为MBR(Master Boot Record),即硬盘主引导记录,MBR又按如下字节分类:
前446字节:Bootloader;给出启动菜单,负责系统引导,
64:分区表:识别系统分区,每个分区16字节
2:标记是否活动分区,是一种特殊标记
3、交予grub引导加载分区上的内核,但是内核是存放于硬盘之上,所以Bootloader还要想办法识别文件系统的类型,不然如果不识别硬盘分区类型则无法加载内核,首先将内核从硬盘读取带内存,Bootloader不能识别RAID分区,因此linux 内核不能存放于RAID、LVM等高级分区,因此可以将内核文件和驱动程序存放于一个基本分区,将根分区存放于LVM等高级分区,将内核解压
内核:vmlinux,压缩存放,有两段代码组成,前部分代码是非压缩的,负责解压后面压缩的内核。
驱动:initramfs,保存基本驱动文件,内核初始化是从其加载驱动。
4、内核自解压到内存后,Bootloader的使命结束,启动交予内核识别硬件,
内核要识别根分区,依靠加载initramfs,内核把他当做硬盘使用,通过initramfs的程序完成根切换,切换到真正的根,并完成硬件探测,产生临时硬件目录,/proc
5、硬件探测结束后启动/sbin/init,init读取/etc/rc.d/rc.sysinit脚本,依靠此脚本完成系统初始化的很多工作
系统初始化脚本:/etc/rc.d/rc.sysinit
显示欢迎信息
设置主机名
激活SElinux和Udev
激活swap
挂载/etc/fstab定义的文件系统
检测文件系统并对其以读写方式重新挂载
设置系统时钟
装在键盘映射
根据/etc/sysctl.conf设置内核参数
激活软RAID和LV
6、init加载/etc/inittab,确认系统启动级别,并完成/etc/rc.d/rcX.d/目录下的环境初始化。
/etc/inittab中定义的操作:
设置默认运行级别
指定系统运行的初始脚本,挂载设备,初始化外部设备驱动等待!
启动指定级别下要启动的服务,并关闭要关闭的服务
定义crtlAltDel组合的动作
初始化字符终端
启动图形终端
7./etc/rcX.d/中的脚本按事先设定的服务优先级依次启动
通过chkconfig 设置在某个级别(通常最多的是3和5)下面的启动和关闭的服务,都是在这个时候完成的。
8.执行/etc/rc.d/rc.local里面定义的命令
9.最后用户登录界面
本文出自 “Linux” 博客,转载请与作者联系!
Linux 初始化及系统启动过程