一图流理解:Linux系统启动过程中都经历了什么?

将主要过程提取出来,接下来我们将按顺序分析每个条目

每一级引导都是查找并执行下一级动作
  • BIOS自检

检测硬件故障;选择磁盘驱动器

  • 读取MBR

主引导记录(Master Boot Record)

  • 读取GRUB菜单

选择启动哪个操作系统/内核

  • 启动内核

初始化设备

  • 运行 init

初始化操作系统

  • 运行其它程序
  • 启动完成

一.MBR

主引导记录,一般是磁盘的第一个扇区,编号0。

包含主引导程序(Bootloader)、 硬盘分区表 DPT 和硬盘有效标志(55AA)。

读取分区表,识别文件系统后,加载grub程序

通过dd,mount,救援模式备份/恢复磁盘分区表[1]

二.GRUB

配置文件 /boot/grub/grub.conf

此一步页面如下:

忘记root密码时,可以按 E 进入编辑模式,重置root密码[2]

三.内核-kernel

内核是操作系统对接硬件的第一层软件集合,主要负责存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用

查看内核命令:

cat /proc/version

uname -a

查看操作系统命令:

cat /etc/issue

cat /etc/redhat-release

lsb_release -a

四.init进程

init是内核启动的第一个用户级进程,顾名思义,该程序就是进行OS初始化操作

是所有进程的父进程[3]

第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个脚本的实际功能包括:

  1. 激活udev和selinux;
  2. 根据/etc/sysctl.conf文件,来设定内核参数;
  3. 设定系统时钟;
  4. 装载硬盘映射;
  5. 启用交换分区;
  6. 设置主机名;
  7. 根文件系统检测,并以读写方式重新挂载根文件系统;
  8. 激活RAID和LVM设备;
  9. 启用磁盘配额;
  10. 根据/etc/fstab,检查并挂载其他文件系统;
  11. 清理过期的锁和PID文件

五.运行级别-Runlevel

  runlevel,运行级别,不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下的脚本,Linux的启动级别分为以下几种

  0:关机模式

  1:单一用户模式(直接以管理员身份进入)

  2:多用户模式(无网络)

  3:多用户模式(命令行)

  4:保留

  5:多用户模式(图形界面)

  6:重启

修改linux运行级别步骤:

vim /etc/inittab;

修改 id:5:initdefault

表示当前系统默认运行级别是5

替换为其他,不能是0或6[4]

致谢:

本文内容细节来源于网络,经个人整理,感谢所有乐于分享技术经验的工程师们

参考

  1. ^https://zhidao.baidu.com/question/303958230570501884.html
  2. ^https://jingyan.baidu.com/article/a3aad71a18c2bcb1fb0096b8.html
  3. ^https://baike.baidu.com/item/%E7%88%B6%E8%BF%9B%E7%A8%8B/614062?fr=aladdin
  4. ^https://jingyan.baidu.com/article/e2284b2b3e6088e2e7118d77.html

linux c 读写mbr_Linux系统启动那点事相关推荐

  1. Kali linux学习入门-安装Kali Linux 后需要做的 20 件事

    安装Kali Linux 后需要做的 20 件事 [51CTO精选译文]我在本文中整理出了安装一份全新的Kali Linux后总是要做的若干件事情.由于我有多台笔记本电脑和工作站,所以尽量扩大下列操作 ...

  2. linux and windows 双系统启动(详细情况分类说明)

    author: luixiao1223 title: 'linux and windows 双系统启动(详细情况分类说明)' 双系统启动介绍 很多linux用户实际上是从windows用户转换而来的. ...

  3. 安装Linux后我做的几件事

    安装Linux后我都做了哪些事? Author:StruggleYang by:elementary OS/Atom 在使用了一段时间的Linux后,前前后后安装也有几十次,也犯过一些致命的错误,为了 ...

  4. linux i2c 读写函数,Linux下读写芯片的I2C寄存器

    要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...

  5. Linux uart寄存器读写,Linux下读写UART串口的代码

    Linux下读写UART串口的代码,从IBM Developer network上拿来的东西,操作比較的复杂,就直接跳过了,好在代码能用,记录一下- 两个实用的函数- /** *@brief 设置串口 ...

  6. Linux下读写芯片的I2C寄存器

    Linux下读写芯片的I2C寄存器 2012-01-10 11:40:18 标签:Linux 寄存器 驱动 读写 I2C 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本 ...

  7. Linux文件读写改权限详解

    Linux文件读写改权限详解 文件的rwx权限 [ r ] [ w ] [ x ] 该文件可读(read) 该文件可修改(write) 该文件可执行(execute) 注意:只有当该文件所在目录有写权 ...

  8. web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限

    一. 问题描述 背景描述: 0.saas-business-运营后台,website-网站页面. 1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该 ...

  9. 【Linux笔记(000) 】-- 系统启动过程

    索引: 目录索引 一.   启动流程 BIOS --> MBR(Boot Code) --> 引导程序(GRUB) --> 加载内核 --> 执行Init --> run ...

最新文章

  1. Android LayoutInflater原理分析,带你一步步深入了解View(一)
  2. Four ugliness
  3. HID接口设备-硬件要求
  4. 描述java源程序构成_Java第二章Java程序设计
  5. solr后台登录验证
  6. R循环有两个_R语言数据分析与挖掘(第九章):聚类分析(2)——层次聚类
  7. julia有 pytorch包吗_PyTorch 有哪些坑/bug?
  8. [转载] python将图片进行base64编码, 解码
  9. 加密、解密、openssl的基本应用以及CA的实现过程
  10. iStack详解(三)——iStack多主检测方式
  11. DB天气app冲刺第十一天
  12. C# 使用PrintDocument类打印标签
  13. 计算机c盘坏了,电脑c盘损坏,怎样修复?
  14. 22年春福师《数学分析选讲》在线作业二
  15. win10系统快速切换桌面的方法
  16. 图形API的简单了解
  17. python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)
  18. 跨源通信--postMessage用法
  19. visibilitychange关于浏览器选项卡切换事件
  20. QQ红包转账卡片代码 支持任意跳转

热门文章

  1. python函数传值还是地址_python中给函数传参是传值还是传引用
  2. 语言 高速公路超速处罚_880关注 拆除!高速公路不合理限速标志!
  3. java,如何处理大批量数据插入
  4. java学生考勤代码免费,基于jsp的学生考勤管理-JavaEE实现学生考勤管理 - java项目源码...
  5. 在Web应用程序中执行常见搜索场景的服务器端方法
  6. 使C#代码现代化——第三部分:值
  7. python自动化框架pytest接口关联串联_python(pytest)+allure+jenkins 实现接口自动化的思路...
  8. 阅读器java_纯Java文档阅读器
  9. python怎么创意出字符图形_创造课程系列:Python入门
  10. 关于junit测试类启动慢报错:failed to resolve org.junit.platform