4-3 Linux启动流程

news2024/9/24 5:25:35

文章目录

  • 前言
  • 经典启动流程
    • 1 按下电源
    • 2 开机自检(BIOS)
    • 3 MBR引导
    • 4 GRUB菜单
    • 5 加载内核
    • 6 运行init进程
    • 7 读取/etc/inittab
    • 8 读取/etc/rc.sysinit初始化系统
    • 9 运行/etc/rc.d/rcN.d/脚本
    • 10 /etc/rc.local
    • 11 登录页面login
  • centos7与centos6

前言

Linux系统的启动过程并不是大家想象中的那么简单,其过程可以分为多个阶段:

通电 –> BIOS –> 主引导记录(MBR)–> grub引导 –> 加载内核 –> init进程 –> 读取/etc/inittab(运行级别)–> /etc/init.d –> 用户登录 –> Login shell



经典启动流程

以centos6为例,具体启动过程如下图所示:

在这里插入图片描述

1 按下电源

这是第一步。默认情况下,也只需这一步,服务器会按照预定程序完成后续开机工作。

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。


2 开机自检(BIOS)

通电后,服务器开机自检,包括硬盘内存等硬件设备。最后按照BIOS中设置的启动设备(通常是硬盘)来启动。

UEFI是新的主板引导模式,被看做是BIOS的继任者。


3 MBR引导

众所周知,硬盘上第 0 磁道第一个扇区被称为 MBR,也就是 Master Boot Record,即主引导记录,它的大小是 512 字节,存放了预启动信息、分区表信息。

系统找到 BIOS 所指定的硬盘的 MBR 后,就会将其复制到 0x7c00 地址所在的物理内存中。其实被复制到物理内存的内容就是 “引导加载器(Boot Loader)”,而具体到服务器,那就是下一步的grub了。

GPT是另一种分区表(数据存储结构),比MBR能保存更多分区等。注意,主板引导与磁盘分区表必须一致:

BIOS -> MBR
UEFI -> GPT


4 GRUB菜单

grub是一个小程序,负责引导加载系统。开机时会显示普通模式(默认)和rescue救援模式。通俗讲,有双系统时选择进入windows还是linux。

grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。


5 加载内核

grub选择操作系统后,os接管硬件,便加载 /boot 目录下的内核文件到内存里。boot目录内核文件包括:

$ ls /boot  
config-3.2.0-3-amd64
config-3.2.0-4-amd64
grub
initrd.img-3.2.0-3-amd64
initrd.img-3.2.0-4-amd64
System.map-3.2.0-3-amd64
System.map-3.2.0-4-amd64
vmlinuz-3.2.0-3-amd64
vmlinuz-3.2.0-4-amd64

6 运行init进程

init进程是系统所有进程的起点,它的进程号是1。init进程是所有进程的发起者和控制者,即所有其它进程的父进程,所以永远不会被终止。

如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们的父进程。


7 读取/etc/inittab

init的第二大作用,就是读取/etc/inittab,使得在进入某个特定的运行级别(Runlevel)时启动相应的程序。

Linux系统有7个运行级别(runlevel):

  1. 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  2. 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  3. 运行级别2:多用户状态(没有NFS)
  4. 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
  5. 运行级别4:系统未使用,保留
  6. 运行级别5:X11控制台,登录后进入图形GUI模式
  7. 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

8 读取/etc/rc.sysinit初始化系统

rc.sysinit是每一个运行级别都要首先运行的重要脚本,根据该脚本文件执行相应的系统初始化。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块,设置键盘、字体, 装载模块,设置网络等等以及其它一些需要优先执行任务。


9 运行/etc/rc.d/rcN.d/脚本

当运行级别为5,则系统会加载位置/etc/rc.d/rc5.d目录里的所有开机脚本。以此类推,不同运行级别运行不同目录的脚本。

/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。


10 /etc/rc.local

执行用户自定义的开机启动程序,/etc/rc.local是一个shell脚本文件,将其赋予可执行文件,才能发挥作用。

zookeeper注册中心服务器开机自启动:

echo '/apps/zookeeper/bin/zkServer.sh start' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local

11 登录页面login

系统运行mingetty程序显示登录页面,再执行/bin/login程序,用户输入账号密码信息将作为参数传给login程序来验证身份。

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。

对于运行级别为3的命令行方式用户来说,显示的是字符登录界面。当然,两种运行级别都可以通过ssh进行远程登录。



centos7与centos6

centos7与centos6启动略有不同,最大区别为centos7的系统第一个进程pid1为systemd程序,而centos6是init程序。

正如经典启动流程所示,从运行init进程往后红色部分为cento6特有。往前开机顺序是相似的。

两者开机启动流程的具体过程如下图:

在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防静电监控仪可以检测现场设备是否和实际大地接触

随着电子产品集成化度越来越高,对于电子产品装配来说,静电的危害严重影响到产品的质量、成品率和可靠性, 必须对用于电子产品装配的净化间进行系统防静电措施,将生产过程中的静电危害程度降至最低。近年来电子企业对ESD的危害的深入认识&…

代码随想录刷题-数组-二分查找

文章目录写在前面原理习题题目1思路和代码题目-2写在前面 这个专栏是记录我刷代码随想录过程中的随想和总结。每一小节都是根据自己的理解撰写的,文章比较短,主要是为了记录和督促自己。刷完一章后,我会再单独整理一篇文章来总结和分享。 本…

【JVM 由浅入深】JVM入门

JVM入门1. 概述 今天我们对JVM 进行入门讲解,让我们了解下什么是JVM,是专门为Java服务的一款产品吗??? 好了废话不多说了,让我们开始吧 2. 详解 2.1 Java 是跨平台的 为什么是Java是跨平台的呢&#xff0c…

LeetCode 路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

oneblog_justauth_三方登录配置【Github】

文章目录oneblog添加第三方平台github中创建三方应用完善信息登录oneblog添加第三方平台 1.oneblog管理端,点击左侧菜单 网站管理——>社会化登录配置管理 ,添加一个社会化登录 2.编辑信息如下,选择github平台后复制redirectUri,然后去github获取cl…

Arduino添加ESP32开发板

【2023年3月4日】 最近要在新电脑上安装Arduino,需要进行一些配置,正好记录一下! Arduino2.0.1 下的开发板添加操作。 ESP32开发板GitHub链接: GitHub - espressif/arduino-esp32: Arduino core for the ESP32Arduino core for…

ICASSP2023|达摩院语音实验室入选论文全况速览

近日,语音技术领域国际会议ICASSP公布了本届论文审稿结果,阿里巴巴达摩院语音实验室有14篇论文被大会收录。本次被接收的论文研究方向涵盖语音识别、语音唤醒、语音增强、说话人日志、语义理解、多模态预训练等。 01 TOLD: A Novel Two-Stage Overlap-…

实验楼项目

创建虚拟环境命令:python -m venv venv 项目整体分为六个个模块:用户信息相关模块、机构相关模块、课程相关模块、用户操作相关模块,评论区模块 搜索模块。 # 项目功能概括: 1、首先具有完整的用户登录,邮箱注册以及…

JDBC的实现(IDEA版)

前期准备 开发环境: IDEA 2021.1.3 JAVA 1.8 MYSQL 8.0.32 msql用户名:root 密码:123 下载MySQL JDBC 驱动 前往MySQL官网下载对应版本的MySQL Connector/J驱动 (下载地址:https://dev.mysql.com/downloads/connector/j/&#xff…

基于rootfs构建Docker镜像

1. 背景 在实际工作中,由于系统本身版本过低,在接受新项目时出现系统版本过低而无法开始工作的问题。 为了解决该问题,使用Docker构建基于ubuntu-18.04的Docker镜像,以解决版本兼容问题。 2. 构建rootfs 2.1. 下载ubuntu-18.0…

HCIA复习1

HCIA复习 抽象语言---->编码 编码---->二进制 二进制--->电信号 处理电信号 OSI参考模型----OSI/RM 应用层 表示层 会话层 传输层 端口号:0-65535;1-1023是注明端口 网络层 IP地址 数据链路层 物理层 ARP协议 正向ARP---通过IP地址获取目的MAC地…

云服务器Ubuntu(无桌面)安装远程桌面

如果主机上安装的ubuntu是桌面版,打开桌面共享即可使用Windows的远程桌面进行链接。详细参考ubuntu20.10中设置桌面共享的三种方式(任选其一) 的第一部分。 本文主要说明如何在Ubuntu云服务器上安装远程桌面。 一、安装桌面环境 在 Ubuntu 源仓库有很多桌面环境供…

路由协议(OSPF、ISIS、BGP)实验配置

目录 OSPF基础实验 建立OSPF邻居 配置虚连接 配置接口的网络类型 配置特殊区域 配置路由选路 配置路由过滤 ISIS基础实验配置 配置ISIS邻居建立 配置认证 配置路由扩散 配置路由过滤 配置定时器 BGP基础实验配置 建立BGP对等体 建立IBGP对等体 建立EBGP对等体…

自动驾驶规划控制软硬一体化控制器解决方案(一)

随着社会的进步,汽车工业和电子科技发展迅速,车载电子器件的数量越来越多,汽车 电子的平台集成度越来越高,两者的融合正在革新着人们的驾乘体验。本文基于 x86 SoC 进 行系统设计,实现高效的汽车智能驾驶舱技术和高级驾…

ASGARD:单细胞导向的药物发现

异质性,或更具体地说,病变组织中的不同的细胞群,是许多复杂疾病治疗失败的主要原因(如癌症、阿尔茨海默症、中风和COVID-19等),也是精准医疗成功的主要障碍。近年来,单细胞技术,特别…

【项目精选】基于Java的模拟写字板的设计与实现(视频+论文+源码)

点击下载源码 此系统是使用Java语言实现简易写字板程序,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,全选,撤销等多种基本…

电子技术——晶体管尺寸

电子技术——晶体管尺寸 在本节我们介绍关于IC设计的一个重要的参数晶体管尺寸(例如长度和长宽比)。我们首先考虑MOS反相器。 反相器尺寸 为了说明 (W/L)(W/L)(W/L) 的尺寸大小以及 (W/L)p(W/L)_p(W/L)p​ 和 (W/L)n(W/L)_n(W/L)n​ 的比例问题对于MO…

CENTO OS上的网络安全工具(十八)ClickHouse及编程环境部署

这篇其实去年就写好了,孰知就在12月31日那一天打进决赛圈,一躺,二过年,三休假,四加班,居然到了三个月以后,才有机会将它发出来…… 一年也就四个季度不是,实在是光阴荏苒&#xff0c…

代码随想录|day6|哈希表篇-- 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

总链接https://docs.qq.com/doc/DUEtFSGdreWRuR2p4?u329948d2f0044f34b7cbe72503f0b572 242.有效的字母异位词 链接:代码随想录 class Solution { public:bool isAnagram(string s, string t) {//两种做法,一种是int f[26]的数组,一种是map /*第一种&a…

历史大讲堂:这是真·图形化 苹果系统历史回顾(上)

众所周知,米国有个非常牛掰的公司叫苹果,想必大家对这个logo不陌生吧。 目前已发布的苹果产品有iPhone、iPad、iPod等等,简直花样繁多,而且各种功能很好用,我的手机就是一部苹果iPhone X。 等一下,似乎扯远…