详细讲解Linux启动流程及启动用到的配置文件及脚本

《一》:详解Linux启动流程及需要使用到的配置文件

POST加电自检–>BIOS(BootSequence)->MBR(bootloader)->Kernel->initrd->rootfs(/sbin/init)下面对每个启动流程做详细解释:

POST(加电自检) 计算机本身不执行任何程序,所以系统必须要完成自举的过程,在CPU的控制下,将RAM芯片中的某个程序映射到ROM地址空间,并执其中的指令完成系统硬件健康状况检查,例如存储设备、网卡、CPU、声卡等其他硬件设备是否完好。当检查完成后,所有硬件或基本硬件、核心硬件没有问题,则下一个启动流程->BIOS

BIOS(Boot Sequence) 按照BIOS所设定的系统启动流程,根据引导次序(Boot Sequence)自上而下的寻找对应存储设备上操作系统的MBR,如果MBR存在,则会读取MBR中的bootloader

MBR(bootloader) 会根据MBR所指引的活动分区上寻找系统分区中的 bootloader,bootloader称为是一段程序,占据446字节。在bootloader当中配置了所要引导操作系统的内核所在的位置,因此BIOS被载入内存以后,当它实现将控制权限转交给bootloader以后,bootloader接收整个系统的控制权限,而后根据用户的选择去读取相应操作系统中的内核,美国服务器,并将内核装载入内存的某个空间位置,解压缩,这时kernel就可以在内存中活动,服务器空间,并根据kernel本身功能在内存当中探索硬件并加载硬件驱动程序并完成内核初始化,bootloader会将控制权限转交给内核。

Kernel(初始化)我们知道kernel是完成探索硬件及加载硬件驱动程序,并以读写的方式挂载根文件系统。那么这里就出现一个比较诡异的问题,是什么问题呢? 我们又知道,要想访问真正的根文件系统(rootfs)的话,就必须加载根文件系统中的设备,这时根文件系统又没有挂载,要挂载根文件系统又得加载根文件系统中的驱动程序,哪怎么办呢?这是就用到了initrd文件了。在来说下kernel初始化所要工作的内容做下简单总结:探测硬件->加载驱动(initrd)->挂载根文件系统->rootfs(/sbin/init)

initrd功能介绍 其实说白了initrd就是一个虚拟的文件系统,里面有/、lib、bin、sbin、usr、proc、sys、var、dev、boot等一些目录,其实你会发现里面的目录有点像真的/对吧,所以我们称之为虚拟的根文件系统,作用就是将kernel和真的根文件系统建立关联关系,让kernel去initrd中加载根文件系统所需要的驱动程序,并以读写的方式挂载根文件系统,并让执行用户当中第一个进程init。

/sbin/init(/etc/inittab) /sbin/init启动会用到/etc/inittab所定义的条目,如:默认登陆级别id:3:initdefault:(这里就是默认启动3级别)下面就来说下/etc/inittab所工作那些内容:/etc/inittab默认运行级别0:halt1: single user mode(单用户维护模式)2:multi user mode, without NFS(不支持NFS功能)3: multi user mode, text mode(字符界面)4:reserved (系统保留)5: multi user mode, graphic mode (图形化界面)6: reboot (重启)系统初始化(/etc/rc.d/rc.sysinit)检测,并以读写方式挂载根文件系统设定主机名检测并挂载/etc/fstab中其它文件系统启动swap分区初始化外围硬件设备驱动根据/etc/sysctl.conf设定内核参数激活udev和selinux激活LVM和RAID设备清理过期锁文件和PID文件装载键映射–>键盘上每个键的功能运行指定级别的服务脚本/etc/rc.d/init.d//etc/rc.d/rc#.d rc0-rc6 K* ##只要是以K开头的文件均执行stop工作 S* ##只要是以S开头的文件均执行start工作 0-99 (执行次序,香港虚拟主机,数字越小越先被执行)init执行/etc/rc.d/rc.localinit执行中断机模拟程序mingetty来启动login进程,最后等待用户登录

吃水不忘挖井人。

详细讲解Linux启动流程及启动用到的配置文件及脚本

相关文章:

你感兴趣的文章:

标签云: