Linux系统启动原理

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式进阶——蜂鸣器

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 蜂鸣器原理图测试发声乐理知识乐理应用PWM测试发声PWM驱动封装 蜂鸣器 蜂鸣器是一种能够产生固定频率的声音的电子元件。它通常由…

MySQL数据库中的多表查询/连接查询操作

类型&#xff1a;内连接 &#xff0c;外连接{左外连接&#xff0c;右外连接} 之所以要使用连接查询的意义就是为了&#xff0c;借助数据库可以避免大量的数据重复。 进行连接查询的前提是要求多张表之间存在相关联的字段。 这里指的相关联的字段就是表与表之间存在着关系&am…

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数&#xff08;recursive&#xff09;&#xff0c;用于删除目录及其内容。如果不加这个参数&#xff0c;rm 命令无法删除非空目录。-f 是强制参数&#xff08;force&#xff09;&#xff0c;用于强制删除文件或目录&#xff0c;不会进行任何确认提示…

windows 搭建 go开发环境

go语言&#xff08;或 Golang&#xff09;是Google开发的开源编程语言&#xff0c;诞生于2006年1月2日下午15点4分5秒&#xff0c;于2009年11月开源&#xff0c;2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势&#xff0c;Go语言从底层原生支持并发&#xff0c;无须…

Android network — 进程指定网络发包

Android network — 进程指定网络发包 0. 前言1. 进程绑定网络1.1 App进程绑定网络1.2 Native进程绑定网络 2. 源码原理分析2.1 申请网络requestNetwork2.2 绑定网络 BindProcessToNetwork 3. 总结 0. 前言 在android 中&#xff0c;一个app使用网络&#xff0c;需要在manifest…

从零开始搭建Springboot项目脚手架4:保存操作日志

目的&#xff1a;通过AOP切面&#xff0c;统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面&#xff0c;把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…

【C/C++】Makefile文件的介绍与基本用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

烟囱ERP系统

一、烟囱系统定义 “烟囱式”系统&#xff0c;来自维基百科的解释是&#xff1a;一种不能与其他系统进行有效协调工作的信息系统&#xff0c;又称为孤岛系统。 二、烟囱系统的案例 比如&#xff1a;就像以下一样&#xff0c;各个系统之间是独立的&#xff0c;所有对接是通过…

揭秘Markdown:轻松掌握基础语法,让你的写作更高效、优雅!

文章目录 前言1.标题1.1 使用 和 - 标记一级和二级标题1.2 使用 # 号标记 2.段落格式2.1 字体2.2 分割线2.3 删除线2.4 下划线2.5 脚注 3.列表3.1 无序列表3.2 有序列表3.3 列表嵌套 4.区块4.1 区块中使用列表4.2 列表中使用区块 5.代码代码区块 6.链接7.图片8.表格9.高级技巧…

访问元组元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;如果想将元组的内容输出也比较简单&#xff0c;可以直接使用print()函数即可。例如&#xff0c;要想打印上面元组中的untitle…

嵌入式进阶——震动马达

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 原理图控制分析功能设计 原理图 控制分析 S8050 NPN三极管特性 NPN型三极管的工作原理是基于PN结和PNP型晶体管的工作原理。 当外…

【大数据面试题】32 Flink 怎么重复读 Kafka?

一步一个脚印&#xff0c;一天一道面试题 首先&#xff0c;为什么要读过的 Kafka 数据重写读一次呢&#xff1f;什么场景下要怎么做呢&#xff1f; 答&#xff1a;当任务失败&#xff0c;从检查点Checkpoint 开始重启时&#xff0c;检查点的数据是之前的了&#xff0c;就需要…

扩散模型学习1

DDPM 总体训练原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 讲得很好&#xff1a;每次都是输入t和noise-x的图像&#xff0c;预测noise之后得到和加入的noise比较&#xff1b…

【Spring】深入理解 Spring 上下文(Context)层次结构

前言 在使用 Spring 框架进行应用程序开发时&#xff0c;Spring 上下文&#xff08;Context&#xff09;是一个非常重要的概念。Spring 上下文提供了一个环境&#xff0c;用于管理应用程序中的对象&#xff08;通常称为 Bean&#xff09;及其之间的依赖关系。在复杂的应用程序…

Virtual Box安装Ubuntu及设置

Virtual Box安装Ubuntu及设置 本文包含以下内容&#xff1a; 使用Virtual Box安装Ubuntu Desktop。设置虚拟机中的Ubuntu&#xff0c;使之可访问互联网并可通过SSH访问。 Ubuntu Desktop下载 从官网下载&#xff0c;地址为&#xff1a;Download Ubuntu Desktop | Ubuntu U…

HTML.

HTML:超文本标记语言&#xff08;Hyper Text Markup Language&#xff09; 超文本&#xff1a;不同于普通文本&#xff0c;可以定义图片&#xff0c;音频&#xff0c;视频等内容 标记语言&#xff1a;由标签构成的语言 HTML标签都是预定义好的HTML代码直接在浏览器中运行&#…

B站大数据分享视频创作300天100+原创内容4000+粉

以今年五一作为一个里程碑参考点&#xff0c;给明年一个可以比较的数据。 我正经发力创作是2023.06.17 (前面几个视频是试水)&#xff0c;300天不到一年时间 创作了100原创数据相关视频&#xff0c;创作频率应该很高了&#xff0c;收获了下面几个数字&#xff0c;审视自身&…

Cadence OrCAD学习笔记(3)capture使用技巧_1

本期介绍capture的一些使用技巧。资料来源于小破站up主硬小二 1、导出像Visio规格的图纸 2、全局修改元件属性 然后保存、关闭即可。 3、导出BOM 4、导出网表 5、元件自动编号 6、capture软件和allegro关联 7、新建原理图symbol 以上为添加封装库的路径 如果要创建多部分的sy…

Pandas 多层索引中的索引和切片操作你学会了吗

1. Series的索引操作 对于Series来说&#xff0c;直接中括号[]与使用 .loc() 完全一样 显式索引 # 导包import numpy as npimport pandas as pd data np.random.randint(0,100,size6) index [ ["1班","1班","1班","2班","…

MySQL事务篇1:事物的四大特性(ACID)、三类数据读取问题与隔离级别

一、什么是事务&#xff1f; MySQL的事务&#xff08;Transaction&#xff09;是一组由数据库管理系统&#xff08;DBMS&#xff09;执行的一个或多个SQL语句的集合&#xff0c;这些SQL语句作为一个单独的工作单元执行。事务的主要目的是确保数据库的一致性和完整性&#xff0c…