Linux启动过程分析
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-03-30
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控制的进程:开启控制台. 开启对应运行级别的控制台,并始终监控控制台进程,一旦关闭将立即被开启. 本文出自 “ 远 飏 ” 博客,请务必保留此出处http://evolution.blog.51cto.com/3343305/636156 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Linux启动过程分析的所有评论