BIOS :
首先启动过程最先执行的程序BIOS(基本的输入输出系统)。BIOS都会初始化硬件,包括检测硬盘驱动器,USB磁盘,CD-ROM,网卡以及任何其他可以从中启动的硬件,然后BIOS会根据所配置的启动设备顺序一步步检查,直到找到可以从中成功启动的设备。对于linux服务器而言,这个过程意味着读取MBR(主引导记录,即硬盘的前512字节)载入并执行MBR中的启动代码,由此开始启动流程。
BIOS将硬件初始化完毕,找到第一个可以启动的设备之后,启动载入程序将接管下面的工作。在一般linux服务器上,这个启动载入程序可能是GRUB,GRUB通常是系统从硬盘启动时需要用到的启动载入程序,当系统从USB,CD-ROM或者网络启动的时候,分别会使用syslinux,isolinux或pxelinux作为相应的启动载入程序。它们的功能都是载入各种软件并读取配置文件,从配置文件中能够得知启动什么操作系统,在哪里找到对应操作系统的内核以及当系统启动时应用什么样的配置。
GRUB:
当GRUB被载入后,会在MBR中执行一小部分代码(称之为第一阶段)。因为MBR中仅容纳446字节的启动代码(其余部分用来保存分区表信息),这些代码仅仅够定位到其他代码,然后执行这些代码。GRUB代码的下一阶段可以让它访问linux文件系统,读取并载入配置文件,由此找到应该启动哪个操作系统和这些操作系统在硬盘的位置,以及应当传入哪些参数。对于linux来说,这可能包含硬盘上许多不同的内核版本以及能帮助解决问题的特殊恢复模式。通常配置文件中也会描述可以用来查看并修改启动选项的各种菜单。
GRUB允许查看和修改指定的启动时间设置,一旦GRUB选定了特定的内核,就直接导入RAM中执行,同时传入启动时配置的所有参数,通常GRUB会随着内核载入初始RAM磁盘。
/SBIN/INIT:
/sbin/init 程序是系统中所有程序的父进程。这个进程的PID总是1,它负责启动组成linux操作系统的其他进程。那些使用过一段时间linux操作系统的用户知道,ubuntu服务器上init程序与大家之前习惯的init程序不同。他们在如何初始化UNIX操作系统方面有些不同标准,但是绝大多数传统linux发行版本都使用著名的System V init 模型.
传统的Sytem v init:
在init程序中,init进程会读取/ETC/INITTAB的配置文件,通过它查看默认运行等级。
运行级别0:停止的体统状态。当你进入运行级别0时,系统就会终止所有的运行进程,卸载所有的文件系统并断电
运行级别6:重启机器
运行级别1:单用户模式。仅有单个用户可以登录到系统中的状态。sudo init 1 即更改为单用户模式。
运行级别2~5:让你创建进入服务器的不同模式。redhat为图形界面设计一个运行级别5.非redhat运行级别3
/etc/init.d 该文件夹中包含所有服务在各个运行级别中的全部启动脚本