linux启动流程
Posted fengxixiaoxiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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需要的服务
内核出错的显示
进入救援模式,修复内核
在救援模式了切入/
以上是关于linux启动流程的主要内容,如果未能解决你的问题,请参考以下文章