[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,退出系统。