linux c 读写mbr_Linux系统启动那点事

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

fdccd165a2ae949ffaede1e1b87d2446.png

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

5c026ae0abc0a58305454fd87c724365.png
每一级引导都是查找并执行下一级动作
  • BIOS自检
检测硬件故障;选择磁盘驱动器
  • 读取MBR
主引导记录(Master Boot Record)
  • 读取GRUB菜单
选择启动哪个操作系统/内核
  • 启动内核
初始化设备
  • 运行 init
初始化操作系统
  • 运行其它程序
  • 启动完成

一.MBR

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

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

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

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

二.GRUB

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

3204ca4f9d41db5fa1b892cdb76b1160.png

此一步页面如下:

aeea6ee4b98d89f8434abb713912544f.png

忘记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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值