Linux系统启动原理

news2024/11/18 23:26:06

Linux系统启动原理及故障排除

Centos6系统启动过程

在这里插入图片描述

修改系统启动级别

vim /etc/inittab

Centos7启动流程

加载BIOS信息,进行硬件检测
根据BIOS设定读取设备中的MBR,加载Boot loader
加载内核,内核初始化以后以模块的形式动态加载硬件
并且加载initramfs虚拟文件系统,然后将虚拟文件系统加载到内存中
调用initrd.target 挂载/etc/fstab中文件系统
切换回硬盘真实目录,然后启动第一个进程systemd

在这里插入图片描述

运行级别切换

#在centos6、7切换界面
init 3  切换字符界面
init 5  切换图形界面
#属于centos7切换字符界面
systemctl isolate multi-user.target
systemctl isolate runlevel3.target

#切换图形页面
systemctl isolate grpahical.target

#centos设置系统默认启动级别
systemctl set-default graphical.target

ll /etc/systemd/system/default.target
grub2
[root@localhost ~]# vim /etc/default/grub 
GRUB_TIMEOUT=5   #开机时grub默认5秒后启动
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=1    #0代表第一个内核,1代表第二个
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

查看操作系统内核

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

故障排除

1.加密grub防止过单用户系统修改root密码

生成MD5密码

[root@localhost ~]# grub2-mkpasswd-pbkdf2 
输入口令:123456
Reenter password: 123456 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.45259E0BC9FC9D0F16C89B0014D74C7275D3423E4832F1BFE0FE0D6E6521037F986A4E9D12809D939838DB374FA2C60BEA92BD9569038E1344D025903EA33A23.CF7713EC8EF3D4A47A378D304C917B2BD4E01173EC6560BC448B7A4669D98502820D9C311484877A65428848D5A46BF57561BAA3484471F1204AD7EF056F12C7

将刚好生成MD5密码复制此文件下面

[root@localhost ~]# vim /etc/grub.d/00_header 
cat << EOF
set superusers='rs'
password_pbkdf2 rs grub.pbkdf2.sha512.10000.45259E0BC9FC9D0F16C89B0014D74C7275D3423E4832F1BFE0FE0D6E6521037F986A4E9D12809D939838DB374FA2C60BEA92BD9569038E1344D025903EA33A23.CF7713EC8EF3D4A47A378D304C917B2BD4E01173EC6560BC448B7A4669D98502820D9C311484877A65428848D5A46BF57561BAA3484471F1204AD7EF056F12C7
EOF

重新加载配置文件

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 

重启验证

在这里插入图片描述

输入“e”之后,输入用户和密码

就能看到grub菜单,就证明加密成功

2.当MBR引导记录损坏后-重装grub进行修复

  1. 先破坏硬盘的前446字节

    [root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
    记录了446+0 的读入
    记录了446+0 的写出
    446字节(446 B)已复制,0.00182828 秒,244 kB/秒
    
  2. 将centos7系统光盘装载到虚拟机光驱上,修改BISO引导顺序,让光盘启动

    在这里插入图片描述

    进入启动的页面

    在这里插入图片描述

    选择第三项进入故障排除页面后,点击第二项

    在这里插入图片描述

    #进入如下模式,选择1,会进入一个shell模式,进行系统修复
    mount
    chroot /mnt/sysimage
    grub2-install /dev/sda
    exit
    reboot
    

3.在centos7下误删grub文件进行修复

  1. 误删grub2

    [root@localhost ~]# rm -rf /boot/grub2
    
  2. 重启计算机

    [root@localhost ~]# reboot
    

    在这里插入图片描述

    再次重启系统,按ESC,进入光盘救援模式,进入光盘救援使用live cd 进入救援模式后

    #切换根目录
    chroot /mnt/sysimage
    #执行命令
    grub2-install /dev/sda
    grub2-mkconfig -o /boot/grub2/grub.cfg
    exit
    reboot
    

4.密码找回

​ 1.首先重启系统

在这里插入图片描述

进入启动界面内按“e”进入编辑模式

​ 2.进入编辑模式进行编辑

在这里插入图片描述

找到“Linux16”开头的行,在Linux的行尾空格后添加“rd.break”

添加,完成之后,按ctrl+x即可

在这里插入图片描述

查看下挂载信息

mount | grep “centos-root”
#查看过后发现不具备rw读写权限

重新挂载,拥有读写权限

mount -o remount,rw /dev/mapper/centos-root /sysroot/

切换根目录

chroot /sysroot/

使用passwd命令修改root密码

passwd root

修改完密码之后,创建.autorelabel隐藏文件

#因为rd.break环境下SELinux是不生效的。
#在不生效的情况下修改用户的密码,也就是修改/etc/shadow文件。
#所以密码文件的安全上下文会被取消
#如果没有让系统在启动时自动恢复SElinux的安全上下文,系统会报错无法登录
#所以在根目录下创建隐藏文件.autorelabel会让系统在重启时以SELinux默认类型重新写入SELinux安全上下文
touch /.autorelabel

或者是

vim /etc/selinux/config 
修改成:SELINUX=disabled

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

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

相关文章

死锁及线程与队列之间的等待关系

死锁及线程与队列之间的等待关系 死锁及线程与队列之间的等待关系案例一案例二案例三案例四案例五 结语 死锁及线程与队列之间的等待关系 我想要补充一下我之前GCD学习中没能理解清楚的死锁及线程与队列之间的等待关系&#xff0c;因为在看锁的博客时&#xff0c;有人给出了一…

如何在 Elasticsearch 中选择精确 kNN 搜索和近似 kNN 搜索

作者&#xff1a;来自 Elastic Carlos Delgado kNN 是什么&#xff1f; 语义搜索&#xff08;semantic search&#xff09;是相关性排名的强大工具。 它使你不仅可以使用关键字&#xff0c;还可以考虑文档和查询的实际含义。 语义搜索基于向量搜索&#xff08;vector search&…

Gradient-checkpointing的原理

原文&#xff1a; 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时&#xff0c;隔几层就保留一层activation数据&#xff0c;其余层的activation都释放掉&#xff1b; 反向传播时&#xff0c;从最近的checkpoint去重新跑forward&…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目&#xff0c;使用IDEA打开hmall项目&#xff0c;查看项目结构如图&#xff1a; 我们要部署的就是其中的hm-service&#xff0c;其中的配置文件采用…

前 9 名最佳视频转换器软件完全免费

前 9 名免费视频转换器是什么&#xff1f;在此视频转换器评论中&#xff0c;我们收集了一些有用的提示并列出了顶级免费视频转换器软件&#xff0c;并找出适合所有级别&#xff08;从初学者到专家&#xff09;的最佳免费视频转换器。 顶级视频转换器列表 在这一部分中&#xf…

go 爬虫之 colly 简单示例

1. 背景 colly 是 Go 实现的比较有名的一款爬虫框架&#xff0c;而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速&#xff0c;设计非常优雅&#xff0c;并且分布式的支持也非常简单&#xff0c;易于扩展。 2. 官方文档 https://go-col…

【简单易用,新人友好】一个轻量级生物信息学流程框架,从此解决99%的生物信息学流程搭建问题...

生物信息学数据分析流程的搭建是一项繁重而复杂的工作。随着行业的发展&#xff0c;各种生信流程框架层出不穷&#xff0c;比如有: NextflowSnakemakeCWLWDL 各种标准&#xff0c;各种规则&#xff0c;令人眼花缭乱。选择太多&#xff0c;往往令人无所适从。特别是新进入行业的…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript

由Anaconda创建的PyScript是一项实验性的但很有前途的新技术&#xff0c;它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly&#xff0c;这是许多言语&#xff08;如C、C和Rust&#xff09;能够编译的高速运转时…

springboot项目,@Test写法 @Before @After

某文件示例 package cn.xxx.crm.boss;import cn.xxxx.crm.manager.mq.rabbit.AliyunCredentialsProvider; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; im…

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer&#xff0c;大家肯定耳朵都听起茧了。但是它的来由&#xff1f;&#xff0c;怎么能用好&#xff1f;很多人可能并不觉得并不是一个问题&#xff0c;或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚&#xff08;因为觉得没必要深…

x264 码率控制中实现 VBV 算法源码分析

关于 VBV 的解释与原理可以参考x264 码率控制 VBV 原理。 x264中 VBV 算法执行的流程 vbv 参数配置相关函数 x264_param_default函数 功能:编码参数默认设置,关于 vbv的参数的默认设置;函数内vbv相关代码:/* ... */ //代码有删减 param->rc.i_vbv_max_bitrate = 0; par…

《软件方法(下)》8.3.4.3 关于“整体-部分”结构

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.2 关联的进一步细分 是否进一步细分各种关联&#xff0c;各种面向对象方法学观点不同。有的认为关联就是关联&#xff0c;…

mvc的常见注解

问文心一言的&#xff0c;记录一下。 PathVariable 路径变量注解 PathVariable 是 Spring MVC 提供的一个注解&#xff0c;它用于从 URI 模板变量中绑定值到控制器方法的参数上。当你在 RequestMapping、GetMapping、PostMapping、PutMapping、DeleteMapping 等注解的 URL 路…

maven默认src下的xml,properties文件不打包到classes文件夹下

一、第一种是建立src/main/resources文件夹&#xff0c;将xml&#xff0c;properties等资源文件放置到这个目录中。maven工具默认在编译的时候&#xff0c;会将resources文件夹中的资源文件一块打包进classes目录中。 这时候注意把resources设置成resource目录&#xff0c;已经…

操作系统 c语言模仿 动态分区存储管理方式的主存分配回收

1&#xff0e;实验目的 深入了解动态分区存储管理方式的主存分配回收的实现。 2&#xff0e;实验预备知识 存储管理中动态分区的管理方式。 3&#xff0e;实验内容 编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括&#xff1a;首先确定主存空间分配表&…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

地下城游戏(leetcode)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 地下城游戏https://leetcode.cn/problems/dungeon-game/description/ 图解分析&#xff1a; 代码 class Solution { public:int calculateMinimumHP(vector<vector<int>>& vv) {int row vv.size(), col …

【云原生】Kubernetes基础命令合集

目录 引言 一、命令概述 &#xff08;一&#xff09;命令分类 &#xff08;二&#xff09;基本语法 二、查看基本信息 &#xff08;一&#xff09;环境指令 1.查看版本信息 2.查看资源对象简写 3.添加补全信息 4.查看日志 5.查看集群信息 &#xff08;二&#xff0…

5月26号总结

目录 刷题记录(Codeforces Round 947 &#xff08;Div. 1 Div. 2&#xff09;前三题) 1.A. Bazoka and Mochas Array 2.B. 378QAQ and Mochas Array 3.C. Chamo and Mochas Array 刷题记录(Codeforces Round 947 &#xff08;Div. 1 Div. 2&#xff09;前三题) 1.A. Bazok…