首页 > 代码库 > 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 初始化及系统启动过程