陈佳浩
陈佳浩
Published on 2026-03-10 / 2 Visits
0
0

如何为PXE准备一个rescue镜像

需要准备两台服务器,一台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远程连接,将原系统进行临时挂载和修复,因为系统是加载在内存中的,所以在这个状态下对这个临时系统的修改操作都不会影响下次使用,每次都是一个全新的环境


Comment