您的位置:首页 > 运维架构 > Linux

Linux启动过程分析

2011-08-10 18:53 232 查看
linux系统开就流程


cpu加电自检:power on system test(POST

按照BIOS中的boot sequence读取磁盘MBR

BIOS中的信息存储在主板的CMOS存储芯片中,系统加电后会读取其中各项数据,包括系统启动后加载硬盘的顺序。

加载硬盘MBR中的boot loader

磁盘的每个扇区为512字节,每个磁盘的第一个扇区为磁盘的MBR,MBR中前446字节记录的是bootloader,bootloader中安装的是grub的stage1,用于指向grub主程序咋磁盘中的位置。开机加电之后,BIOS按照boot sequence找到对应磁盘,然后搜索该磁盘的MBR。

找到位于基本磁盘分区的grub程序,即进入stage2阶段,按照grub.conf配置文件对kernel以及initrd进行引导加载。

initrd解压后在内存中启动引导根目录所在的磁盘进行只读挂载

内核在grub的引导下解压载入内存,内核随即进行硬件探测、驱动程序初始化,然后引导initrd解压载入,initrd其实就是一个小型的linux系统它的作用是将在lvm或raid上根文件系统进行只读性挂载。

运行/sbin/init对系统进行初始化

根文件系统挂载之后,运行/sbin/init程序进行初始化。初始化过程按照其对应配置文件/etc/inittab进行。

/etc/inittab中的配置信息:

格式:

id:runlevel:action:process

id:标示符

runlevel:运行级别

action:对应运行级别所进行的操作

process:执行的命令

action的分类详解:

respawn:表示init程序对此process进行监控,即使此进程被终止也立即被启动;

wait:表示init进程只调用一次此process,并等待其结束后再进行下一步操作;

initdefault:表示系统运行后默认进入的运行级别;由于进入某个级别会默认开始执行对应级别的各种进程,故此处不定义process,如果此条记录不存在,在系统启动时会提示用户键入运行级别;

sysinit:系统启动时准备运行的命令,此命令直接指向系统启动后运行的第一个初始化脚本/etc/rc.d/rc.sysinint;

powerfail:表示当电源被切断后(有ups时)运行后面的process;

powerokwait:当电源监测发现电源恢复则执行后面的process;

ctrlaltdel:控制这三个组合键的功能;

rc.sysinit脚本实现功能介绍:

在init确定默认级别后即运行此初始化脚本,它的作用主要有以下几条:

n 激活udev和selinux;

n 通过读取/etc/sysctl.conf设置内核参数

n 设置系统时间

n 加载键盘映射

n 启用swap分区

n 设置主机名

n 检查根文件系统,并以读写方式重新挂载根文件系统

n 激活LVM和RAID设备

n 启动磁盘限额

n 挂载其他文件系统

n 清理过期文件锁和PID文件

/etc/rc.d/rc.sysinit这个脚本运行完毕,继续按照/etc/inittab中继续开启对应运行级别中的服务,这些服务有inittab中:


l0:0:wait:/etc/rc.d/rc 0




l1:1:wait:/etc/rc.d/rc 1




l2:2:wait:/etc/rc.d/rc 2




l3:3:wait:/etc/rc.d/rc 3




l4:4:wait:/etc/rc.d/rc 4




l5:5:wait:/etc/rc.d/rc 5




l6:6:wait:/etc/rc.d/rc 6

来定义,对应的rc0~6目录中是各需要开启服务的链接文件,S开头表示开启,K开头表示关闭。

所有服务开启之后,将执行respawn控制的进程:开启控制台。

开启对应运行级别的控制台,并始终监控控制台进程,一旦关闭将立即被开启。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  启动 linux 职场 休闲