• 第一步:加载BIOS
  1. 当你打开ia计算机的电源,计算机会首先加载计算机主板的BIOS信息,因为它包含了CPU的相关信息,设备启动顺序[安装系统的U盘启动顺序],内存信息,时钟信息,PnP特性等等, 以后计算机会按照顺序读取硬件设备了。
  • 第二步:读取MBR
  1. 众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
    系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
  • 第三步:Boot Loader
  1. Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
    Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
    我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
    系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
  • 第四步:加载内核
  1. 根据grub 设定的内核映像所在路径,系统读取内存影像,并进行解压缩操作,此时,屏幕一般会输出 “Uncompressing Linux " 的提示,当解压缩内核完成后,屏幕输出”ok , botting the kernel " ,也就是内核加载完毕的意思,系统将解压好的内核放置到内存之中,并调用start_kernel()函数 来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立,至此,Linux内核已经初始化完毕了,基于Linux 的程序 应该可以正常运行了。
  • 第五步:用户层init依据inittab文件来设定运行等级
  1. 内核被加载后,第一个运行的程序是/sbin/init ,该文件会读取/etc/inittab 文件,并根据次文件进行初始化的工作。/etc/inittab文件就死设定linux的运行等级,其设定形式如下:
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

  0 :关机

1 :单用户

2 :无网络支持的多用户模式

3 :用网络支持的多用户模式

4  :保留,暂未使用

等等

不同的linux 发行版本,对于启动的控制不一样

  • 第六步 :
  1. 设定了运行等级之后,Linux执行的地一个用户层文件就是 /etc/rc.d/rc.sysinit脚本程序,里面会进行设定 PATH,设定网络配置[/etc/sysconfig/network],启动swap分区,设定/proc等等
  • 第七步:启动内核模块
  1. 具体是根据/etc/modules.conf文件或者/etc/modules.d目录下的文件来装载内核模块。
  • 第八步:执行不同的运行级别的脚本程序
  1. 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
  • 第九步: 执行/etc/rc.d/rc.local
  1. 你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don’t
    # want to do the full Sys V style init stuff.
    rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
  • 第十步:执行/bin/login程序,进入登录状态
  1. 就是linux的登录界面,等待用户输入用户名和密码了。
  • 备注:以上可以参照centos7以上的版本,相关的文件都比较容易查看的。
  • 文章参考地址:http://m.blog.chinaunix.net/uid-26495963-id-3066282.html?winzoom=1.375

转载于:https://www.cnblogs.com/bing-yu12/p/7619869.html

Linux 系统的启动顺序相关推荐

  1. linux fedora35设置双系统开机启动顺序

    linux fedora35设置双系统开机启动顺序

  2. Windows+Linux双系统修改启动顺序

    Windows+Linux双系统修改启动顺序 分析启动顺序 windows与linux双系统下,如果先安装的是windows再安装redhat,则开机默认启动redhat. 启动顺序修改方法一 在BI ...

  3. 详解linux系统的启动过程及系统初始化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chrinux.blog.51cto.com/6466723/1192004 一. ...

  4. Linux系统的启动过程

    下面是整个Linux系统的启动过程: Linux Boot Step Start BIOS ​ ​ grub/lilo ​ ​ Kernel boot ​ ​ init rc.sysinit ​ ​ ...

  5. Linux用户管理(五)Linux系统的启动

    Linux系统的启动 一.启动步骤和GRUB 1.Linux启动过程分析                                                              (1 ...

  6. 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt

    [9构建嵌入式linux系统项目-启动脚本的编写 启动脚本 教学回顾 shell语法 管道.重定向 变量 结构性语句 教学内容 启动脚本的写法 教学要求 熟悉掌握启动脚本的写法 shell 函数 在s ...

  7. linux启动过程剖析,分析Linux系统的启动过程

    导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...

  8. Linux系统的启动过程(转)

    下面是整个Linux系统的启动过程:   Linux Boot Step Start BIOS grub/lilo Kernel boot init rc.sysinit rc mingetty lo ...

  9. linux 修改hba参数,更改Raid卡和HBA卡在linux下的启动顺序

    更改Raid卡和HBA卡在linux下的启动顺序 发布时间:2006-01-11 10:13:07来源:红联作者:新新 当server安装好RHEL3系统以后,如果又添加了HBA卡,准备连接光纤存储的 ...

最新文章

  1. SQL2000中默认sa帐号改名和删除的最安全方法
  2. python从入门到精通书-清华大学出版社-图书详情-《Python从入门到精通》
  3. android 事件管理器,Android输入管理InputManager之读一次事件的流程
  4. 阿里云服务器win2003系统配置IIS+php+mysql+phpmyadmin+zend 500
  5. app内嵌h5页面在ios手机端滑动卡顿的解决方法
  6. SuperRuntimeLibrary.TextVoice 发布,支持文本到语音 文本到.wav
  7. 排序----在线性时间内排序
  8. Android入门学习3
  9. javascript AOP实现
  10. Android 应用资源(一)
  11. 非线性微分方程线性化
  12. 计算机专业的英语六级很难过,英语六级多少分算过 通过率高吗
  13. 小能在线客服开发文档
  14. 如何从头开始建设小区宽带
  15. Android studio实现多个按钮跳转多个页面
  16. 联想G40-70固态安装教程(实际操作经验)
  17. 实现 酷狗音乐 歌词播放效果
  18. 域名过期会怎么样?域名可以永久持有吗?
  19. 2017全国电赛综合测评四分频电路(一片D触发器74LS74的两种方法,有图有真相,实测波形图)
  20. 2019年浙江大学计算机九推

热门文章

  1. php odbc 分页,用php实现odbc数据分页显示一例_php技巧
  2. Maven基础了解及配置信息
  3. PAT_B_1007_Java(20分)
  4. python csv数据处理_Python数据处理(1) —CSV文件数据处理
  5. oracle client 11.2.0.3 32位,oracle client 32位/64位下载(Oracl数据库)
  6. 图神经网络(一)图信号处理与图卷积神经网络(2)图信号与图的拉普拉斯矩阵
  7. django 轮播图上传_django之动态轮播图技术的实现
  8. 【sklearn学习】模型网格化调参
  9. C语言指定编译对齐方式
  10. PHY管理接口(MDIO)