当前位置: 首页 > news >正文

[Linux] Linux交换空间管理 Linux系统启动原理

目录

Linux交换空间管理

计算机存储器的存储结构

计算机存储器的工作原理

Swap空间

创建交换空间

激活swap空间

取消激活swap空间

持久化激活swap空间

Linux系统启动原理

rucky8启动过程

系统target

系统启动级别

重置root密码

rd.break

/etc/fstab引起的系统启动问题

环境准备

故障1:挂载点不存在

环境准备

重启系统验证

故障2:设备名称写错或者找不到设备

环境准备

故障3:破坏文件系统

环境准备

重启系统验证

grub2配置

grub2菜单超时时间

kernel启动参数

grub2菜单加密

解密

*若超时时间为0,也没有root密码,也不显示启动过程,如何解密

故障1:grub引导程序故障

环境准备


Linux交换空间管理

计算机存储器的存储结构

  • CPU寄存器:用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息

  • CPU高速缓存,是一种容量小、速度快的高缓冲存储器,由SRAM组成,速度几乎与CPU一样快。

  • 主存储器,用来存放指令和数据,并能由CPU直接随机存取。速度比CPU高速缓存慢,但存储容器却大得多。

  • 主存储器的带宽计算公式:带宽=频率*位宽/8。

  • 辅助存储器,容量大,可持久化存储

计算机存储器的工作原理

Swap空间

功能1:当内存使用量超过定义的限制时,内核寻找已分配给进程但空闲的内存页,将该空闲的内存页写入到叫化浓煎,并向其它进程重新分配RAM页面。

功能2:如果某个程序需要访问磁盘上的页面,则内核会找到另一个空闲的内存页,将其写入磁盘,然后从交换区重新调用所需的页面。

功能3:如果某个程序需要访问数据,访问的数据存放在交换空间,则该程序直接从交换空间读取数据,而不需要从磁盘原始位置读取,进而提高速度。

创建交换空间

#使用parted创建所需大小的分区并将其文件系统类型设置为linux-swap
parted /dev/sdb mklabel gpt
parted /dev/sdb unit MiB mkpart data01 linux-swap 1 2049
parted /dev/sdb1 unit Mib print
#格式化swap空间
mkswap /dev/sdb1

激活swap空间

#激活swap空间
swapon /dev/sdb1
#查看
swapon -s

取消激活swap空间

swapoff /dev/sdb1
swapon -s

持久化激活swap空间

修改/etc/fstab文件

UUID=2bf4e179-3648-4412-9495-3b278df4acd6 none swap default 0 0

使用命令swapon -a激活/etc/fstab中所有交换设备。

使用命令swapoff -a取消/etc/fstab中所有交换设备激活。

Linux系统启动原理

rucky8启动过程

系统target

  • systemd使用类型为target的单元来分组不同单元,例如multi-user.target包涵chronyd.service、crond.service、firewalld.service等服务。

  • target还可以包涵其他target,例如graphical.target包涵multi-user.target,multi-user.target包涵basic.target,basic.target包涵sysinit.target。

#查看target之间依赖关系
systemctl list-dependencies graphical.target

#查看反向依赖
systemctl list-dependencies sshd.service --reverse

系统启动级别

重置root密码

rd.break

  • 重新启动系统

  • 按任意键(Enter除外)中断启动加载器倒计时

  • 选择要启动的内核(一般是第一个)

  • 定位到linux行,在最后添加rd.break

  • ctrl + x使用这些更改进行启动

  • 此时,系统会显示rootshell,且磁盘上的实际根文件系统以只读方式挂载在/sysroot。

  • 以读/写形式重新挂载/sysroot。

mount -o remount,rw /sysroot
  • 切换root位置,把/sysroot作为文件系统树的根
chroot /sysroot
  • 设置新密码
echo password | passwd --stdin root

/etc/fstab引起的系统启动问题

环境准备
#设置磁盘分区管理方案
[15:48:52 root@rocky8-znf ~]# parted /dev/sda mklabel msdos
信息: You may need to update /etc/fstab.
#创建分区
[15:50:02 root@rocky8-znf ~]# parted /dev/sda unit MiB mkpart primary 1 10241
信息: You may need to update /etc/fstab.
#格式化
[15:52:40 root@rocky8-znf ~]# mkfs.xfs -f /dev/sda1
meta-data=/dev/sda1              isize=512    agcount=4, agsize=655360 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#创建挂载点
[15:51:18 root@rocky8-znf ~]# mkdir /data09
#设置持久化挂载
[15:51:31 root@rocky8-znf ~]# echo '/dev/sda1 /data09 xfs defaults 0 0' >> /etc/fstab
[15:52:07 root@rocky8-znf ~]# systemctl daemon-reload
#挂载并验证
[15:53:51 root@rocky8-znf ~]# mount -a
[15:53:55 root@rocky8-znf ~]# df -h /data09
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        10G  104M  9.9G    2% /data09

故障1:挂载点不存在

环境准备
[15:54:05 root@rocky8-znf ~]# umount /data09
[15:57:54 root@rocky8-znf ~]# rmdir /data09
重启系统验证
[15:58:01 root@rocky8-znf ~]# reboot#可以正常进入系统,挂载点会被自动创建
[15:58:55 root@rocky8-znf ~]# df -h /data09

故障2:设备名称写错或者找不到设备

环境准备
vim /etc/fstab
#将sda1改为sda2

重启系统验证

  • 启动过程中找不到该设备。

  • 1分30秒超时后,进入emergency模式,进行修复。修改为正确的值或者注释该条目,确保系统正常启动。

  • 然后输入exit,继续启动。

故障3:破坏文件系统

环境准备
dd if=/dev/zero of=/dev/sda1 bs=1M count=1
重启系统验证
  • 系统启动过程中尝试修复文件系统,修复失败后提示进入emergency模式修复。

  • 进入emergency模式修复。

修复完成后输入exit即可正常启动系统

grub2配置

grub2菜单超时时间

vim /etc/default/grub
#修改GRUB_TIMEOUT=0#生效grub2.cfg配置文件
grub2-mkconfig -o /etc/grub2.cfg

kernel启动参数

vim /etc/default/grub
#修改GRUB_CMDLINE_LINUX,例如在最后添加参数console=ttySO,导致不显示启动过程

grub2菜单加密

#查看/etc/grub.d/01_users脚本
cat /etc/grub.d/01_users
#生成grub2密码
grub2-mkpasswd-pbkdf2Enter password:
Reenter password: 
PBKDF2 hash of your password is
grub.pbkdf2.sha512.10000.649DDB2FE50D7D3A0DF829A21887FFD9FB7CC14F0E750B
993CFB08B86D0E99AE33D7E121DEC82DD71FF69B2653D9446ED777ADAFB5DAE051685C7
B85C3A3A276.8DC92452B738F2007F7254BC884AF34B3C149E62D2054BB09DA970B931A
F329BE772648AA0FE15DC8196AED48545F5BF84AAF9EB989CCCD168604B8050988FF0#创建文件
vim /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.649DDB2FE50D7D3A0DF829A21887FFD9FB7CC14F0E750B
993CFB08B86D0E99AE33D7E121DEC82DD71FF69B2653D9446ED777ADAFB5DAE051685C7
B85C3A3A276.8DC92452B738F2007F7254BC884AF34B3C149E62D2054BB09DA970B931A
F329BE772648AA0FE15DC8196AED48545F5BF84AAF9EB989CCCD168604B8050988FF0#更新GRUB配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
#重启
reboot

启动菜单界面,按e编辑显示如下界面

解密

删除文件

rm -f /boot/grub2/user.cfg

重启

*若超时时间为0,也没有root密码,也不显示启动过程,如何解密

机器启动时改为使用光盘启动

选择Troubleshooting

选择这个

选择1,让它找到系统

回车,进入/mnt/sysroot

chroot /mnt/sysroot

查看根(root)是否为读写挂载(rw)

mount

是读写挂载就可以直接找到之前的密码文件,搞掉它就行

cd /boot/grub2/
ls
mv user.cfg user.cfg.aaa

或者进入grub2.cfg将密码相关代码注释掉,并修改超时时间

vim /etc/grub2.cfg
#输入/user 找到相关代码

保存退出,输入两次exit退出界面。

恢复正常

故障1:grub引导程序故障

环境准备
dd if=/dev/zero of=/dev/sda bs=1 count=446

解决过程:

开机时按esc,选择使用光盘启动

选择Troubleshooting

选择这个

按1,回车,之后确认系统启动分区所在磁盘

安装引导程序,输入exit两次重启系统:第一次exit,退出chroot环境;第二次exit,退出系统。

http://www.xdnf.cn/news/1310905.html

相关文章:

  • 8.16 pq
  • 从 Windows 到 Linux 服务器的全自动部署教程(免密登录 + 压缩 + 上传 + 启动)
  • 嵌入式硬件篇---运算放大器
  • 要想在Trae运行Java程序,该怎样配置Java环境?
  • TOGAF八步一法笔记2
  • TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的区别
  • RocketMq面试集合
  • 暴雨服务器:以定制化满足算力需求多样化
  • 小白挑战一周上架元服务——元服务开发06
  • 肖臻《区块链技术与应用》第20-22讲 - 以太坊难度调整、权益证明和智能合约
  • 415. 字符串相加
  • Java设计模式之《工厂模式》
  • 【Java web】HTTP 协议详解
  • HTTP 1.0, 2.0 和 3.0 有什么区别?
  • OpenAI TTS API + Web 前端 AudioContext 实战方案
  • (论文速读)ViDAR:视觉自动驾驶预训练框架
  • leetcode-139. 单词拆分-C
  • 中本聪思想与Web3的困境:从理论到现实的跨越
  • 从依赖到自研:一个客服系统NLP能力的跃迁之路
  • 昇腾AI自学Day2-- 深度学习基础工具与数学
  • Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
  • 异构数据库兼容力测评:KingbaseES 与 MySQL 的语法・功能・性能全场景验证解析
  • linux设备驱动之字符设备驱动
  • Python代码规范与静态检查(ruff/black/mypy + pyproject.toml + Makefile)自动化工具链介绍
  • 【LeetCode 热题 100】70. 爬楼梯——(解法二)自底向上
  • 在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
  • ISO27001 高阶架构 之 支持 -2
  • PHP域名授权系统网站源码/授权管理工单系统/精美UI/附教程
  • 广东省省考备考(第七十八天8.16)——资料分析、判断推理(强化训练)
  • Spring AMQP如何通过配置文件避免硬编码实现解耦