Liunx服务器加电后的开机过程如下:
第一步、加载BIOS
硬件自检》启动权交给相应硬件(一般都是磁盘) ;硬件自检过程,会读取硬件信息,BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等
第二步、读取MBR
硬盘第0磁道第一个扇区被称为MBR(主引导记录),大小512字节(前446为引导信息,后64为分区信息,最后两个为标志位)
第三步、grub引导菜单
通过grub菜单,加载内核
grub菜单,其实就是通过读取MBR,复制到物理内存中的Boot Loader
第四步、加载内核(kernel)
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作;
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备;
加载内核后,启动init进程(系统的第一个进程,进程号为0)
第五步、设定运行等级(/etc/inittab)
启动init进程后,读取/etc/inittab文件 ,并依据此文件来进行初始化工作,设定Linux的运行级别;
Linux系统有7个运行级别(runlevel)
0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
2:多用户状态(没有NFS)
3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
4:系统未使用,保留
5:X11控制台,登陆后进入图形GUI模式【需要安装了图形界面软件才可以使用】
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
第六步、执行rc.sysinit进行系统初始化
设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
第七步、启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
第八步、执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
第九步、执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
第十步、执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的界面