详细查看:https://www.cnblogs.com/linhaifeng/articles/13274099.html

一、Linux系统启动流程

理解Linux操作系统启动流程能有助于后期在企业中更好的维护Linux服务器能够快速定位系统问题。

Linux系统启动流程图:

Linux系统启动流程详细说明:

1、加载BIOS

当你打开计算机电源,计算机会首先加载基本输入输出系统(Basic Input Output System )BIOS系统。BIOS程序一般被存放在主板ROM(只读存储芯片)之中、即使在关机或掉电以后该程序也不会丢失。BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机就知道应该去读取哪个硬件设备了。

2、读取MBR

读取硬盘上磁道的第一个扇区被称为MBR,也就是Master Boot Record即主引导记录、它的大小是512字节 前446存放的就是grub程序的一部分、里面却存放了预启动信息、分区表信息。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了

3、GRUB引导

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。系统读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。

4、加载Kernel

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

5、设定Inittab运行等级

内核加载完毕,会启动Linux操作系统第一个守护进程init,然后通过该进程读取/etc/inittab文件,/etc/inittab文件的作用是设定Linux的运行等级,Linux常见运行级别如下:

•0:关机模式
•1:单用户模式
•2:无网络支持的多用户模式
•3:字符界面多用户模式
•4:保留,未使用模式
•5:图像界面多用户模式
•6:重新引导系统,重启模式

6、加载rc.sysinit

 # 读取完运行级别,Linux系统执行的第一个用户层文件/etc/rc.d/rc.sysinit,该文件功能包括:设定PATH运行变量、设定网络配置、启动swap分区、设定/proc、系统函数、配置Selinux等。

7、加载内核模块

# 读取/etc/modules.conf文件及/etc/modules.d目录下的文件来加载系统内核模块。该模块文件,可以后期添加或者修改及删除。

8、启动运行级别程序

根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中以S开头表示系统即将启动的程序,如果以K开头,则代表停止该服务。S和K后紧跟的数字为启动顺序编号。


9、读取rc.local文件

操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。

# rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里

10、执行/bin/login程序

执行/bin/login程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到Shell终端,如图3-7所示,输入用户名、密码即可登录Linux操作系统,至此Linux操作系统完整流程启动完毕。

# 此时系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

二、启动级别设置

# Linux启动级别有
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动# 设置启动级别为 3
Linux系统默认启动等级为5、可已使用init命令切换启动级别。
[root@steven ~]# init 3# 对于传统的设置方法
通过查看CentOS7的/etc/inittab文件。# 将系统修改为多用户命令行界面
systemctl set-default multi-user.target
# 将系统修改为图形界面
systemctl set-default graphical.target

三、单用户模式

1、开机时进入如下界面按下方向键盘阻止系统自动继续

2,按e键出现下面界面

3,按方向键定位到最后,找到“ro”这一行,ro的意思是read only将“ro”替换成 rw init=/sysroot/bin/sh

4、按Ctrl-x 进入单用户模式

5、执行chroot /sysroot。其中chroot命令用来切换系统,/sysroot/目录就是原始系统

4、修改root密码

​ 5、修改默认启动级别(开机进入命令行模式)

#设置成命令模式
systemctl set-default multi-user.target
init 3 # 切换到字符模式,有时只使用上面的语句没有效果按下Ctrl+D后,执行reboot

6,测试使用修改后密码登入成功。

四、grub加密

centos7.2 + 中引入了新的实用程序“ grub2-setpassword ”

1、 执行 grub2-setpassword 命令

# 进入系统命令行执行grub加密命令。
[root@steven ~]# grub2-setpassword
Enter password: [密码]
Confirm password: [密码]

2、删除–unrestricted 参数

# 为什么要删除这个参数?
因为如果现在直接重新启动系统。尝试修改引导条目、系统会要求提供凭据。
但是可以在没有凭据的情况下修改引导条目。
为了阻止未经授权的修改和未经授权的启动,需要对 /boot/grub2/grub.cfg文件进行更改。
打开文件并使用密码搜索需要保护的启动条目,它以menuentry开头。找到条目后,从中删除 --unrestricted 参数[root@web02 ~]# vim /boot/grub2/grub.cfg

3、重启验证 reboot

此时只有当输入正确的用户名和密码时,才能进入 grub 菜单或者修改引导条目

五、光盘修复模式

1、进入bios、从光盘启动 (重启进入bios界面按F2,手速要快不要哆嗦)

2、选择 Troubleshooting (选择故障排查)

3、此时就进入到了 Troubleshooting 故障排查界面

4,然后选择:Rescue a CentOS system (进入系统修复模式)

5,进入到Rescue模式 (成功进入系统修复模式页面)

6,选项意思:(进入系统修复模式的一些选项)

  1. continue
# 救援模式程序会自动查找系统中已有的文件系统,并可读写挂载到/mnt/sysimage目录下。
  1. Read-Only mount
 # 会以只读的方式挂载已有的文件系统。
  1. Skip to shell
# 手动挂载

4)Quit (Reboot)

# 退出重启

7, 选 1)Emter 回车

8,sh切换bash模式

chroot /mnt/sysimage/

9,修改root密码

passwd root

六、BIOS加密

1,设置BIOS加密

找到设置选项

2、直接回车会弹出让你设置密码的条框。

3、设置密码

4、按F10保存 [Enter]回车

2,再次进入bios验证

Linux系统启动流程相关推荐

  1. Linux 系统启动流程及其介绍

    熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程. 开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用 寻 ...

  2. Linux系统启动流程(4)制作自定义linux之一

    Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一 ...

  3. arm linux系统启动流程

    ===================================================== arm linux系统启动相关文章列表: arm linux系统启动流程 http://bl ...

  4. linux 系统重启过程,linux 系统启动流程

    linux系统启动流程可以简单总结为以下几步 1)开机BIOS自检 2)读取MBR,进行MBR引导 3)启动bootloader 4)加载内核kernel 5)启动init进程,依据inittab文件 ...

  5. linux 打开设备 流程,Linux系统启动流程

    1.linux系统启动流程 1.加载BIOS的硬件信息,获取第一个启动设备 Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分.负责完成对CPU.主板.内存.硬盘子系统.显示 ...

  6. Arm linux系统启动流程简介

    文章目录 介绍 一.Bootloader 1.总体流程 二.Linux内核 1.总体流程 2.具体流程 总结 介绍 Arm Linux 系统启动流程可分为四个部分: 1.引导加载程序(bootload ...

  7. linux系统启动流程详解

    系统启动流程(CentOS6) Post加电自检: 开机检查cpu.内存.磁盘等是否存在 Boot Sequence: BIOS:Basic Input and Output System 按照BIO ...

  8. 图解Linux系统启动流程

    废话不多说,先上图 说明1:上图是Linux系统启动时的详细流程,其中黑色部分为主流程分支,蓝色部分为详细流程分支,绿色部分是注释部分.大家可点击查看大图. 说明2:增加了kernel和initrd间 ...

  9. linux系统启动流程及常见问题的解决

    一.前言 计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一 ...

  10. ac3165 linux驱动_一文读懂Linux系统启动流程

    Linux启动管理 11.1 CentOS 6.x系统启动过程详解 CentOS 6.x系统启动过程发生了较大的变化,使用Upstart启动服务取代了原先的System V init启动服务.Upst ...

最新文章

  1. 人脸识别引擎SeetaFaceEngine简介及在windows7 vs2013下的编译
  2. 「MICCAI 2017」Reading Notes
  3. MogoDb的使用及配置
  4. Numpy.array矩阵百分制化(比例化)
  5. 用Python爬一爬那些年你硬盘存过的老师
  6. (转)WindowsPhone基础琐碎总结-----数据绑定(一)
  7. BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
  8. java定义一个course类,java集合,定义两个类,学生Student和课程Course,课程被学生选修,请在课程类中提供以下功能:...
  9. android实现截图功能吗,Android实现拍照截图功能
  10. keystroke java_Java KeyStroke.getCharacter方法代码示例
  11. cp命令强制覆盖方式实现
  12. 基于java+springboot+mybatis+laiyu实现学科竞赛管理系统《建议收藏》
  13. 对等局域网操作系统有几台服务器,局域网软件知识
  14. java+网络框架netty_GitHub - linyu19872008/getty-1: 一个完全基于java 实现的,长得有点像netty的aio网络框架...
  15. linux批量化删除以某某结尾命令
  16. 个人重装系统前备份___1000款最杰出的软件清单:
  17. 微信中打开app store连接
  18. 异常检测(2)—基于统计学的方法
  19. 程序员的希波克拉底誓言
  20. Excel用户打死想不到:表格能做APP,WPS用户:金山系出品就是牛

热门文章

  1. shell 脚本-while用法
  2. 工作效率的提升——如何高效沟通,有效降低沟通成本
  3. 贴片钽电容,P型 A型 B型 C型 D型 E型怎么区分?
  4. [项目管理] BOT运作模式
  5. java开发一年后学习计划
  6. ASO优化方法_获取ASO关键词指数接口
  7. VMware安装CentOS 7.0 Fail to start media check on /dev/sr0
  8. linux中测试环境的搭建
  9. DataV阿里云可视化(地图下钻、数据获取) - 文档篇
  10. 求两函数交点c语言,怎样求两个函数关系式的交点坐标