按下电源按钮的直到欢迎页出来之后,linux总共做的事可以分为五步来完成。
1、POST: BIOS加电自检(未来可能会被EFI代替BIOS)
加电自检,检测硬件设备。然后按照cmos上面的顺序来搜索处在活动状态下的可以引导的设备。可以是光驱、软盘、USB等I/O设备。
2、 加载主引导加载程序(MBR):
主引导程序是一个512字节的映像。包含一点机器码还有一个小的分区。
主引导程序的任务就是查找并且加载处在硬盘分区上的次引导程序(GRUB)。通过分区表查找活动分区,并将处在活动分区的次引导加载程序读取到内存里面运行。
3、 加载次引导记载程序(GRUB:GRand Unified Bootloader)
次引导加载程序主要就是加载linux内核。
上一阶段结束之后次引导加载程序就会在内存里面跑起来。就会出现GRUB图形界面,让用户选择加载什么样的内核。
4、 linux内核映像:
用户选择要加载的内核之后,次引导加载程序(GRUB)就会根据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取Linux内核映像,然后把内核映像加载到内存中并把控制权交给Linux内核。
linux内核获得控制权之后开始干自己的事
检测硬件
解压缩自己并安装必要驱动
初始化与文件系统相关的虚拟设备,LVM或RAID
装载根文件系统rootfs,挂在根目录下面
完成之后,linux在进程空间里面加载init程序,下面轮到init干活
init进程
5、init进程
是所有进程的发起者和控制者,所有的进程都由此衍生。init进程获得控制权之后,它会执行/etc/rc.d/rc.sysinit脚本,根据里面的代码设置环境变量、网络、启动swap、检查并挂载文件系统、执行其他初始化工作。
至此,linux启动完成。
C5:init的工作流程
Kernel ---> /sbin/init 使用配置文件/etc/inittab开始以下工作
1,设定系统默认运行级别
设定运行级别:0-67个级别
0:关机
1:single user mode--->s|S进入
2:multi user mode,不支持NFS功能
3:完全多用户模式,字符界面,文本接口
4:未使用,预留级别
5:完全多用户模式,图形界面
6:重启
2,进一步初始化系统
/etc/rc.d/rc.sysinit
3,启动指定的默认级别的默认为启动的服务,停止指定的级别下默认为关闭的服务
/etc/rc.d/rc#.d (#是级别号)
K##:停止的服务
S##:启动的服务
##:01-99,数字越小,优先启动或关闭级别高
4,定义一些组合键的功能,通常是Ctrl+Alt+Delete
5,初始化字符终端
6,如果有需要,启动图形终端
脚本如果期望能够被chkconfig命令使用,要在脚本中添加如下行
#chkconfig: - 85 15
-:当此脚本由chkconfig控制时,默认哪些级别就是开启的
85:启动优先级
15:关闭优先级
chkconfig --add 服务脚本名 添加某服务脚本到开机级别
chkconfig --del
chkconfig --level # on|off
默认级别为2345
/etc/rc.d/rc.local --->/etc/rc.local(脚本,通常为系统启动完成的最后运行的一个脚本)
C6:init
由/etc/init/*.conf 一类的配置文件定义init的初始化工作
/etc/rc.d/rc.sysinit:系统初始化脚本:
设定主机名:读取/etc/sysconfig/network文件中的HOSTNAME参数,并以之设定主机名
打印文本欢迎信息
激活SELinux和udev
挂在/etc/fstab文件中定义的其他文件系统
激活swap
检测根文件系统,并以读写方式重新挂载
设置系统时钟
根据/etc/sysctl.conf设置内核参数
激活LVM和RAID设备
加载额外设备的驱动程序
清理操作
初始化流程:
POST---->
(BIOS)boot sequence ---->
MBR(bootloader)---->
kernel + ramdisk (5:initrd;6:initramfs) ---->
mount roofs(ro) ---->
/sbin/init(/etc/init/*.conf)设定默认运行级别--->
使用/etc/rc.d/rc.sysinit初始化系统--->分别启动或关闭指定服务--->
定义Ctrl+Alt+Delete组合键功能--->
启动字符终端--->启动图形终端
配置文件:
C6:upstart,/etc/inittab + /etc/init/*.conf
C7:systemd, /usr/lib/systemd
(PS:ramdisk:类似于winPE,算是一个独立的系统,有根/有/boot,/bin,/sbin,...)
关机习惯与办法
1,关机前检查当前登录用户,确保所有用户任务都已完毕或保存
who
2,查看网络联机状态,显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
netstat
4,确认无误后,可以保存一下数据,同步写入磁盘,然后就可正常关机了
sync
来源: http://www.bubuko.com/infodetail-1958030.html