需要准备两台服务器,一台PXE服务器,另一台自动或手动安装一个最小化的Linux操作系统后关机,将系统盘装到PXE服务器
#sdc就是要用到的磁盘
[root@pxe ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 2G 0 part /boot
└─sda2 8:2 0 48G 0 part
├─root-lv_root 253:0 0 28G 0 lvm /
├─root-lv_var 253:1 0 10G 0 lvm /var
└─root-lv_home 253:3 0 10G 0 lvm /home
sdb 8:16 0 200G 0 disk
└─data-lv--data 253:2 0 200G 0 lvm /data
sdc 8:32 0 100G 0 disk
├─sdc1 8:33 0 2G 0 part
└─sdc2 8:34 0 98G 0 part
├─rescue-lv_root 253:4 0 58G 0 lvm
├─rescue-lv_var 253:5 0 20G 0 lvm
└─rescue-lv_home 253:6 0 20G 0 lvm
sr0 11:0 1 10.2G 0 rom /data/pxe/iso
手动将各个挂载点挂载到/mnt或其他目录中,需要将fstab文件内容注释,不然启动时会因为挂载点的问题起不来
[root@pxe ~]# mount /dev/rescue/lv_root /mnt
[root@pxe ~]# mount /dev/rescue/lv_var /mnt/var
[root@pxe ~]# mount /dev/rescue/lv_home /mnt/home
[root@pxe ~]# mount /dev/sdd1 /mnt/boot
[root@pxe ~]# vim /mnt/etc/fstab
[root@pxe /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar 6 14:27:01 2026
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
#/dev/mapper/rescue-lv_root / xfs defaults 0 0
#UUID=c21ca1a1-b734-4bba-8646-0b2c2e3aeeba /boot xfs defaults 0 0
#/dev/mapper/rescue-lv_home /home xfs defaults 0 0
#/dev/mapper/rescue-lv_var /var xfs defaults 0 0
[root@pxe ~]# touch /mnt/init
[root@pxe ~]#
需要手动创建一个init文件,空文件即可,然后执行命令将所有文件打包,生成一个img镜像,放到PXE目录下
[root@pxe ~]# cd /mnt
[root@pxe mnt]# ls
afs bin boot dev etc home init lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@pxe mnt]# find .|cpio -o -H newc |gzip > /var/lib/tftpboot/rocky9_re/rescue_test.img
2757933 blocks
[root@pxe mnt]# ll -h /var/lib/tftpboot/rocky9_re/rescue_test.img
-rw-r--r-- 1 root root 912M Mar 10 11:50 /var/lib/tftpboot/rocky9_re/rescue.img
[root@pxe mnt]#
如果没有init这个文件,在启动时会报错,如下

修改PXE配置文件,使用测试机进行PXE启动
[root@pxe mnt]# grep -3 label /var/lib/tftpboot/pxelinux.cfg/default
menu separator # insert an empty line
menu separator # insert an empty line
label linux
menu label rocky 9 Rescue
menu default
kernel vmlinuz
append initrd=rocky9_re/rescue.img rootfstype=tmpfs rootflags=size=2G
选择rescue启动

读取内核和img镜像文件

文件系统如下

此临时系统可以和正常系统一样,进行ssh远程连接,将原系统进行临时挂载和修复,因为系统是加载在内存中的,所以在这个状态下对这个临时系统的修改操作都不会影响下次使用,每次都是一个全新的环境
