LINUX基础培训之开机启动过程

前言、本章学习目标 

  1. 掌握系统启动、引导过程 ·
  2. 了解grub.conf的参数设置 ·
  3. 熟悉系统运行级别 ·
  4. 了解加载内核过程

一、LINUX启动引导过程

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

1.开机自检

服务器主机开机以后,将根据主板BIOS中的设置对CPU 、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制剖权,大多时候会移交给本机硬盘。

2.MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)。

3.GRUB菜单

对于Linux操作系统来说,GRUB是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载 Linux内核文件,然后将系统控制权转交给内核。需要注意的是,Centos 7 采用的是 GRUB2启动引导器。

4.加载内核

将内核与镜像加载到内存中

5.init初始化

开启pid=1的进程,进程就是init加载的程序是systemd

二、主引导目录(MBR)

  MBR 也就是主引导记录,位于硬盘的 0 磁道、0 柱面、1 扇区中,主要记录了启动引导程序和磁盘的分区表,最主要的功能就是存储启动引导程序;主要有以下作用:

1.加载操作系统的内核

  这是启动引导程序最主要的功能。 拥有一个可以让用户选择的菜单,来选择到底启动哪个系统。大家如果在服务器上安装过双 Windows 系统,就应该见过类似的选择菜单,不过这个选择菜单是由 Windows 的启动引导程序提供的,而不是 GRUB。

2.调用其他的启动引导程序

  这是多系统启动的关键。不过需要注意的是,Windows 的启动引导程序不能调用 Linux 的启动引导程序,所以我们一般建议先安装 Windows,后安装 Linux,是为了将 Linux 的启动引导程序安装到 MBR 中,覆盖 Windows 的启动引导程序。

三、开始引导过程(GRUB)

1、定义

GNU GRUB(简称“GRUB”)是GRand Unified Bootloader的缩写,是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。它是一个多重操作系统启动管理器,用来引导不同系统,如windows,linux。

2、引导过程

MBR是磁盘的第一个扇区,大小不能超过512KB,所以引导程序只能分成两步来执行:

1.引导加载程序的最小主程序(必须安装在MBR中),并没有安装加载程序的相关设置文件。 2.引导加载程序的所有设置文件和相关参数,一般在/boot下。 即加载引导程序可以安装在MBR中或超级块中,但是Windows系统则默认强制会同时安装在MBR和超级块中,所以在安装多重系统时,先装Windows再装Linux。

3、超级块

文件系统中第一个块被称为超级块。这个块存放文件系统本身的结构信息。比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。

/sbin/grub-install 命令可用来修复MBR的损坏。

四、内核加载

GRUB 加载了内核之后,内核首先会再进行二次系统的自检,而不一定使用 BIOS 检测的硬件信息。 Linux 的内核存在 /boot 目录中,分别是:

config  #内核的配置文件,内核编译时选择的功能与模块

efi        #可扩展固件接口,为英特尔为全新PC固件的体系结构、接口和服务提出的建议标准

grub    #启动引导程GTUB的数据目录

initramfe.img#虚拟文件系统(CentOS 6.x 中用initramfs替代了initrd,但功能是一样的)

symvers.gz  #模块符号信息

System.map #内核功能和内存地址的对应列表

vmlinuz  #用于启动的Linux内核。这个文件是一个压缩的内核镜像

如下图所示,一台启动系统/boot目录下所有文件内容

五、init初始化

在内核加载完毕,并完成硬件检测与驱动程序加载后,此时主机硬件已经准备完毕,内核会主动呼叫第一个进程,也就是 /sbin/init,此配置文件最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动等。

1、系统运行级别

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

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

2、服务开机自启动方式 

LINUX设置服务开机自启动有三种方式:

方式一:把服务启动命令添加到/etc/rc.local中

例如添加一个redis服务启动脚本:

注意:添加完需要对rc.local赋权执行权限

chmod +x /etc/rc.local

方式二:在/etc/init.d目录中直接添加启动脚本

/etc/rc.d/init.d(链接到/etc/init.d)下有很多的文件,每个文件都是可以看到内容的,都是一些shell脚本或者系统服务文件。Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。



注意:同样添加完后务必设置文件的可执行权限 chmod +x filename

方式三:将服务制作到LINUX系统服务中,并设置成开机启动

redhat7以上可以用systemd来管理服务,具体操作如下:

以nginx服务为例,添加nginx.service文件到/etc/sysntemd/system目录下,写入服务启动配置内容

然后设置服务的开机自启动

systemctl enable nginx

systemctl start  nginx

六、本章实验

1、单用户模式中修改root密码

实验操作步骤:

重启操作系统,进入到内核引导界面时,按以下步骤操作
(1)按e编辑grub菜单 
(2)选择linux16那行,追加rd.break 
(3)ctrl+x引导 
(4)#mount  -o  remount,rw  /sysroot 
(5)#chroot  /sysroot 
(6)#passwd  root 
(7)#touch  /.autorelabel 
(8)#exit
(9)#exit


2、模拟grub引导故障修复

实验操作步骤:

先模拟/boot/grub2/grub.cfg破坏(删除里面文件内容)
然后按以下步骤恢复:
(1)虚拟机挂载光盘镜像
(2)BIOS从光盘启动
(3)进入急救模式,加载光盘镜像,切换到系统根环境
          sh-4.2# chroot /mnt/ sys image
(4)重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
          bash-4.2# grub2-install /dev/ sda
(5)重新构建GRUB菜单的配置文件
          bash-4.2# grub2-mkconfig -0 /boot/grub2/grub.cfg
          退出chroot环境,并重启
          bash-4.2# exit
          sh-4.2# reboot

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

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

相关文章

Spring Beans的魔法门:解密多种配置方式【beans 四】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Spring Beans的魔法门:解密多种配置方式【beans 四】 前言XML配置方式1. 声明和配置Bean:2. 构造函数注入:3. 导入其他配置文件: java注解方式1. 使用Co…

算法训练营Day35

#Java #动态规划 开源学习资料 Feeling and experiences: 不同路径:力扣题目链接 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右…

MyBatisPlus学习三:Service接口、代码生成器

学习教程 黑马程序员最新MybatisPlus全套视频教程,4小时快速精通mybatis-plus框架 Service接口 简介 在MyBatis-Plus框架中,Service接口的作用是为实体类提供一系列的通用CRUD(增删改查)操作方法。通常情况下,Servi…

PyTorch 入门学习数据操作之创建

简介 在深度学习中,我们通常会频繁地对数据进行操作;要操作一般就需要先创建。 官方介绍 The torch package contains data structures for multi-dimensional tensors and defines mathematical operations over these tensors. Additionally, it pr…

SpringMVC通用后台管理系统源码

整体的SSM后台管理框架功能已经初具雏形,前端界面风格采用了结构简单、 性能优良、页面美观大的Layui页面展示框架 数据库支持了SQLserver,只需修改配置文件即可实现数据库之间的转换。 系统工具中加入了定时任务管理和cron生成器,轻松实现系统调度问…

【源码解析】Apache RocketMQ发送消息源码

send message源码解析 引入 send message方法作为我们经常使用的方法,平时我们很难去关注他底层到底做了什么。大部分人只知道通过send message方法可以将消息发送到broker,然后供消费者进行消费。其实不然,消息从客户端发送到broker&#x…

ssm基于vue.js的购物商场的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装购物商场软件来发挥其高效地信息处理的作用,可以…

cissp 第10章 : 物理安全要求

10.1 站点与设施设计的安全原则 物理控制是安全防护的第一条防线,而人员是最后一道防线。 10.1.1 安全设施计划 安全设施计划通过关键路径分析完成。 关键路径分析用于找出关键应用、流程、运营以及所有必要支撑元索间的关系。 技术融合指的是各种技术、解决方案…

性能优化-OpenMP基础教程(三)

本文主要介绍OpenMP并行编程的环境变量和实战、主要对比理解嵌套并行的效果。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 &…

书生·浦语大模型全链路开源体系 学习笔记 第一课

背景 大模型是发展人工通用人工智能的一个重要途径,能够解决多种任务和多种模态,展示了一个更面向更高阶的智能的潜在途径。大模型的发展历程是从专用模型到通用模型的过程,从语音识别、图像识别、人脸识别等专用模型,到通用的大…

Java8内置四大核心函数式接口

先来看几个例子,主要练习策略模式: 用策略模式的做法 定义个接口 其实像这样的接口并不需要我们自己创建 java8推出的Lambda表达式主要就是为了简化开发,而Lambda表达式 的应用主要是针对与函数式接口,自然也推出了对应的一些接口 /*** Java8 内置的四大核心函数式接口** C…

【C++】STL 算法 ③ ( 函数对象中存储状态 | 函数对象作为参数传递时值传递问题 | for_each 算法的 函数对象 参数是值传递 )

文章目录 一、函数对象中存储状态1、函数对象中存储状态简介2、示例分析 二、函数对象作为参数传递时值传递问题1、for_each 算法的 函数对象 参数是值传递2、代码示例 - for_each 函数的 函数对象 参数在外部不保留状态3、代码示例 - for_each 函数的 函数对象 返回值 一、函数…

权威认可!甄知科技猪齿鱼产品荣获信创产品评估证书

近日,依据《信息技术应用创新产品评估规范 第1部分:应用软件》(T/SSIA 2001-2022),经过严格评估,甄知科技旗下自主研发的猪齿鱼数智化开发管理平台 V2.0.0,通过信创测试认证,获得上海…

差分约束算法

差分约束 差分约束系统包含 m m m个涉及 n n n个变量的差额限制条件,这些差额限制条件每个都是形式为 x i − x j ≤ b ∈ [ 1 , m ] x_i-x_j\leq b_{\in[1,m]} xi​−xj​≤b∈[1,m]​的简单线性不等式。 通常我们要求解出一组可行解。 最短路差分约束 如果我们…

ubuntu 22 virt-manger(kvm)安装winxp; ubuntu22体验 firebird3.0

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 : 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

稿件代写3个不可或缺的步骤让你事半功倍-华媒舍

作为一个需求频繁的作者,你可能会面临大量的稿件代写任务。但是,你是否曾经为提高文章质量而苦恼过?是否希望在有限的时间内完成更多的代写任务?本篇文章将向你介绍三个不可或缺的稿件代写步骤,帮助你事半功倍&#xf…

Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

Redis的慢查询 许多存储系统(例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似…

Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据

太长不看版: Hub 上有不少数据集没有语言元数据,我们用机器学习来检测其语言,并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据。 Hugging Face Hub 已成为社区共享机器学习模型、数据集以及应用的存储库。随着 Hub 上的数据集越来越多&…

[概率论]四小时不挂猴博士

贝叶斯公式是什么 贝叶斯公式是概率论中的一个重要定理,用于计算在已知一些先验信息的情况下,更新对事件发生概率的估计。贝叶斯公式的表达式如下: P(A|B) P(B|A) * P(A) / P(B) 其中,P(A|B)表示在事件B发生的条件下事件A发生的概…

基于sumo实现交通灯控制算法的模板

基于sumo实现交通灯控制算法的模板 目录 在windows安装run hello world networkroutesviewsettings & configurationsimulation 交通灯控制系统 介绍文件生成器类(FileGenerator)道路网络(Network)辅助函数生成道路网络&am…