linux启动流程

Linux组成

Linux: kernel+rootfs
kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能
rootfs:程序和glibc
库:函数集合, function, 调用接口(头文件负责描述)
程序:二进制执行文件

CentOS6启动流程

post加电自检

这个过程是开机后,BIOS或UEFI进行硬件检查的阶段

MBR引导

自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接去找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去哪里找系统grub引导。此阶段属于grub的第一阶段。grub还有1.5阶段和2阶段

前446字节 bootloader
中间64字节 分区表
最后2字节 55AA

GRUB引导

grub第1.5和2阶段,信息默认存放在扇区中,如果使用grub-install生成的2阶段的文件是存放在/boot分区中的。 
为了加载内核系统,不得不加载/boot分区,而加载/boot分区,需要有/boot分区的驱动,/boot分区驱动是放在/boot分区中

stage1.5:
mbr之后的扇区,识别stage2所在的分区上的文件系统

stage2:
开机启动的时候看到的Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件

 操作系统引导菜单

    windows:msconfig

    linux:GRUB

    注意:windows和linux双系统的时候,默认GRUB来引导

kernel
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init


---------------------

 

启动流程
/sbin/init CentOS6之前
运行级别:为系统运行或维护等目的而设定;0-6:7个级别
0:关机
1:单用户模式(root自动登录), single, 维护模式
2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启
默认级别:3, 5
切换级别:init #
查看级别:runlevel ; who -r

init初始化
init读取其初始化文件:/etc/inittab
初始运行级别(RUN LEVEL)
系统初始化脚本
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
在运行级别5初始化X

系统初始化脚本功能:/etc/rc.d/rc.sysinit
  1、设置主机名
  2、设置欢迎信息
  3、激活udev和selinux
  4、挂载/etc/fstab文件中定义的所有文件系统
  5、检测根文件系统,并以读写方式重新挂载根文件系统
  6、设置系统时钟
  7、根据/etc/sysctl.conf文件来设置内核参数
  8、激活lvm以及软raid设备
  9、激活swap设备
  10、加载额外设备的驱动程序
  11、清理操作

设置服务在不同系统运行级别下的启动和关闭:
  chkconfig命令:管控/etc/init.d/每个服务脚本在各级别下的启动或关闭状态
  查看:chkconfig --list [name]
    chkconfig --list 查看全部服务在各级别下的状态
    chkconfig --list Name 查看指定服务在各级别下的状态

删除:
chkconfig --del name

启动流程总结
  /sbin/init(/etc/inittab)设置默认运行级别
  运行系统初始化脚本/etc/rc.d/rc.sysinit,完成系统的初始化
  运行/etc/rc.d/rc#.d/目录下面的脚本(实际是连接到/etc/rc.d/init.d/目录下的脚本)关闭对应级别下的需要停止的服务,启动对应级别下需要开启的服务;
  设置登录终端

----------------------------------------------------------------------------------------------------------------------------------------

CentOS7启动流程Systemd概述

UEFi或BIOS初始化,运行POST开机自检
选择启动设备
引导装载程序, centos7是grub2
加载装载程序的配置文件:
/etc/grub.d/
/etc/default/grub
/boot/grub2/grub.cfg
加载initramfs驱动模块
加载内核选项
内核初始化,centos7使用systemd代替init
执行initrd.target所有单元,包括挂载/etc/fstab
从initramfs根文件系统切换到磁盘根目录
systemd执行默认target配置,配置文件/etc/systemd/system/default.target

CentOS 7 引导顺序
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务

内核出错的显示

进入救援模式,修复内核

在救援模式了切入/

 

posted @ 2019-06-30 15:20  凤溪潇潇  阅读(138)  评论(0编辑  收藏  举报