了解Linux系统的启动过程有助于我们深入理解Linux系统运行原理,下面我们将介绍一些系统启动过程中一些重要的细节。在这里,我们将Linux系统启动过程分成7个步骤介绍,这个过程如下图所示。

1.启动BIOS,开机自检

打开电源,主板会启动保存在ROM(Read Only Memory)中的BIOS(Basic Input Output System),BIOS会对计算机硬件进行加电自检,检测各个部件的是否能健康运行。只有在硬件健康运行的条件下,才能继续运行操作系统。加电自检英文称为"Power On Self Test",简称"POST"。

2.读取MBR,引导系统

BIOS确定硬件能正常运行之后,要按一定顺序加载设备。一般情况下,第一个加载的就是计算机的主硬盘(如果是光盘/U盘启动安装系统,需要在BIOS中设置设备Boot的顺序,将DVD/U盘设置为第一个加载的设备)。BIOS默认从主硬盘的第0柱面,第0磁道,第一扇区读取主引导记录,即MBR(Main Boot Record)。现在的固态硬盘和操作系统会使用比较新的GPT(GUID Partition Table)技术来代替MBR,但仍兼容MBR。固态硬盘的LBA(Logical Block Address)0用来存储MBR,LBA1用来存储GPT头,LBA2-LBA33用来存储分区表项。MBR占用512字节(Byte),其中引导程序占用446字节,磁盘分区表DPT占用64字节,最后两个字节是MBR的结束位。一般情况下,MBR中的446字节存放的是引导程序存储地址,因为Linux的引导程序Grub很大(如果是GPT硬盘,要使用UEFI来引导操作系统,主硬盘中会有一个单独的EFI分区保存引导程序或其执行脚本)。

3.Grub加载内核和系统初始化配置

在MBR或者EFI分区中找到Grub的地址或文件后,启动Grub,Grub就会根据配置文件kernel镜像,并运行内核加载后的第一个程序/sbin/init,这个程序会根据/etc/inittab来进行初始化工作,在这个文件中配置了系统的runLevel,例如该文件中"id:3:initdefault"的意思是系统运行级别为3。

Linux默认有7个运行级别,从运行级0到运行级6,其含义分别如下:

运行级0:关机。

运行级1:单用户模式,系统出现问题时可使用这种模式进入系统维护,典型的使用场景是在忘记root密码时可进入此模式修改root密码。

运行级2:多用户模式,但没有网络连接。

运行级3:完全多用户模式,Linux服务器最常见的运行级。

运行级4:保留未使用。

运行级5:窗口模式,支持多用户,支持网路。

运行级6:重启。

4.系统环境初始化

Linux将根据/etc/inittab中定义的系统初始化配置"si:sysinit:/etc/rc.d/rc.sysinit"执行/etc/rc.d/sysinit脚本,该脚本将会设置系统变量、网络配置、并启动swap,设定/proc、加载用户自定义模块,加载内核设置等。

5.根据运行级别来加载系统服务

根据第三步读到的runlevel值来启动对应的服务,如果值为3,就会运行/etc/rc3.d/下所有的脚本,如果值为5,就会运行/etc/rc5.d/下所有的脚本,以此类推。

6.运行/etc/rc.local

运行/etc/rc.local脚本文件。(设置一些软件开机启动可以将启动脚本写在此文件中)

7.生成终端

生成终端,登录系统。

linux efi 启动原理,Linux系统启动过程相关推荐

  1. linux efi 启动原理,Linux(RHEL6)启动过程详解

    Linux(RHEL6)启动过程详解 Linux(红帽RHEL6)启动过程详解: RHEL的一个重要和强大的方面是它是开源的,并且系统的启动过程是用户可配置的.用户可以自由的配置启动过程的许多方面,包 ...

  2. linux efi启动,在linux环境中利用efibootmgr管理efi启动项

    UEFI用来替代传统BIOS引导操作系统,学会修改UEFI启动项也变得十分重要,UEFI全称为:"统一的可扩展固件接口"(Unified Extensible Firmware I ...

  3. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  4. 从linux内核启动,学习Linux内核启动过程:从start_kernel到init

    一.实验步骤: 1:运行menuos: a)cd LinuxKernel/ b)qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd root ...

  5. efi启动修复linux引导文件夹,一次修复linux的efi引导的集中方法总结记录

    起因:EFI分区被删除导致引导问题. 症状: 通过安装其它系统的方式.正好想试试其它的linux发行版,就在另一个分区装了deepin,完成后硬盘没有发现UEFI引导:然后又尝试装了openSUSE, ...

  6. linux初始化启动文件,Linux 的初始化与启动过程

    我们运行程序只需要点击应用程序的图标就可以了,但在这之前,我们必须启动我们的系统.在一切之前,我们必须有某些程序去引导我们系统的内核,这些程序就是内核引导程序了,例如LILO.GRUB.U-Boot. ...

  7. linux内核bios,BIOS的启动原理——Linux内核设计学习笔记

    RAM:随机存取存储器,常见的内存条就是一类RAM,其特点是加电状态下可任意读.写,断电后信息消失. 在RAM中什么程序也没有的时候,谁来完成加载软盘中操作系统的任务呢? 答案是:BIOS. BIOS ...

  8. 低温linux内核启动readl,Linux内核启动流程分析(一)

    很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) 1.依据arch/ar ...

  9. linux开机启动故障,Linux启动系统及故障排除

    一:Linux的启动过程: 开机加电自检->MBR引导(boot loader占446字节,分区列表64字节,magic占2字节)-->grub菜单(MBR是grub的第一个字段,第二个字 ...

最新文章

  1. GitHub接连封杀开源项目惹众怒,CEO亲自道歉
  2. 一个用JAVA实现的线段树类--泛型 重构.
  3. RecyclerView的那点事儿
  4. win10大文件无法移动到U盘
  5. Lightbox 效果
  6. vue 3.x 中使用ele-image时相对路径的图片加载失败
  7. 解决VC不包含stdint.h头文件问题
  8. C#显示当前日期时间
  9. 学习chirp信号笔记
  10. 关于初级java程序员面试题总结(每月更新中)
  11. 西威变频器 服务器显示,西威变频器故障查询及操作方法;
  12. pkg学习--使用pkg打包应用
  13. 如何将HL7转换为XML
  14. Fabric-02Peer、Orderer以及CA
  15. 阿里云服务器学生应该怎么购买教程以及将远程主机配置成服务器教程
  16. 网易的换邮箱手机号流程
  17. windows10录屏怎么压缩?几个步骤轻松掌握
  18. 数据存储(1):从数据存储看人类文明-数据存储器发展历程
  19. 谷歌浏览器控制台如何切换中英文
  20. python学习(6)—— python-tools

热门文章

  1. 使用element-tiptap后报错Duplicate use of selection JSON ID cell解决方法
  2. 420个生活小窍门小常识
  3. WPF中如何将List<string>数据绑定到DataGrid控件中
  4. 在谈“细节决定成败”
  5. 鼠标无法唤醒计算机怎么办,win10鼠标无法唤醒睡眠电脑是怎么回事
  6. 创建授权文件(Provisioning Profiles ---- PP文件)
  7. 百度API调用失败解决方法
  8. 目前流行的22款网店系统
  9. [bzoj2534]Uva10829L-gap字符串
  10. Android App开发入门 使用Android Studio 2.X开发环境 第2版pdf