利用PXE批量进入救援模式修复多台主机的boot分区

2023-05-16

利用PXE自动化安装centos7

前言

  PXE的功能及原理。大概解释一下意思就是:

  1. 启动计算机的时候如果没有插入U盘以及光驱等介质的话,boot启动项是有一个从PXE启动的选项,如果都没有则会从pxe启动。
  2. PXE上的DHCP客户端会向DHCP服务器,申请IP地址,DHCP服务器分配一个IP址地给它,同时DHCP服务器还会告诉客户端配置文件名称以及TFTP服务器的地址,让PXE客户端去下载。
  3. 配置文件(一般是pxelinux.0)告诉PXE客户端系统的安装启动项是在pxelinux.cfg目录下面的default这个文件里。

环境准备

  这里我提前安装了一台centos7,来当服务器。

服务器需要安装:

dhcp服务:用来给刚开机的客户端分配ip地址以及告知配置文件和tftp服务器的IP地址。
tftp服务:用来给客户端提供所需配置文件的下载路径。
httpd/vsftpd服务:两者选一即可,用来让客户端下载镜像。
xinetd服务:用来接管tftp服务,来做一些策略。
syslinux: 需要从这里来拷贝pxelinux.0等文件。
总之一条命令:

[root@localhost tftpboot]# yum install dhcpd tftp-server httpd syslinux xinetd -y

#其中httpd可换成vsftpd,我这里就用httpd做了,就不安装vsftpd了

服务器需要的配置:

  1. 关闭防火墙
关闭防火墙
      systemctl stop firewalld.service     
      #关闭防火墙
      systemctl disable firewalld.service  
      #取消防火墙开机自启动
      setenforce 0     
      #临时关闭防火墙
      getenforce       
      #获取防火墙状态
      把/etc/selinux/config 里的SELINUX=enforcing 改成 SELINUX=disabled 
      #来永久关闭selinux
      #centos 7 现在使用firewalld.service代替iptables,并且使用systemctl来管理比较方便#

  1. 配置静态ip
    因为dhcp服务器需要,所以需要把服务器更改成静态ip
    [root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens37
      TYPE="Ethernet"
      PROXY_METHOD="none"
      BROWSER_ONLY="no"
      BOOTPROTO="static"
      DEFROUTE="yes"
      IPV4_FAILURE_FATAL="no"
      IPADDR=192.168.2.1
      NETMASK=255.255.255.0
      NAME="ens37"
      DEVICE="ens37"
      ONBOOT="yes"
    #我这里是第二块网卡。
    #然后ifdown ens37;ifup ens37  来使网卡生效。
    #通过ip a来查看是否成功
  1. 配置dhcp服务
    [root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

    #把dhcp 样例文件拷贝到文件夹里做修改,核心内容如下:
    subnet 192.168.2.0 netmask 255.255.255.0 {
     range 192.168.2.10 192.168.2.100;
     option routers 192.168.2.1;
     option subnet-mask 255.255.255.0;
     default-lease-time 600;
     max-lease-time 7200;
     next-server 192.168.2.1;    #告诉客户端pxelinux.0从哪里下载
     filename "pxelinux.0";      #告诉客户端有个配置文件可以下载
     #然后重启服务systemctl restart dhcpd
     #开机自启动服务 systemctl enable dhcpd(后面不再一一重复)
}
  1. 挂载镜像
    mount /dev/sr0 /mnt
    mkdir /var/www/html/rhel7.2  
    cp -a /mnt /var/www/html/rhel7.2  
    # 把光盘文件拷贝到http服务目录,方便客户端下载
  1. 配置tftp目录和服务
  1)首先配置一下tftp的文件目录
    mkdir /tftpboot
    mkdir /tftpboot/pxelinux.cfg
    cp /usr/share/syslinux/pxelinux.0 /tftpboot/
    cp /usr/share/syslinux/chain.c32 /tftpboot/
    cp /usr/share/syslinux/mboot.c32 /tftpboot/
    cp /usr/share/syslinux/memdisk /tftpboot/
    cp /usr/share/syslinux/menu.c32 /tftpboot/
    cp /var/www/html/media/images/pxeboot/vmlinuz /tftpboot/
    cp /var/www/html/media/images/pxeboot/initrd.img /tftpboot/
    cp /var/www/html/media/isolinux/isolinux.cfg  /tftpboot/pxelinux.cfg/default
    最后文件的目录结构是
    /tftpboot/
    ├── chain.c32
    ├── initrd.img
    ├── mboot.c32
    ├── memdisk
    ├── menu.c32
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vmlinuz
  2)配置tftp服务使用xinetd托管,更改内容我用#号注释
    vi /etc/xinetd.d/tftp 内容如下
      service tftp
      {
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot #更改tftp目录
        disable                 = no   #启动服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
      }
    然后 systemctl stop tftp.socket  关闭tftp
    使用xinetd打开tftp  systemctl restart xinetd.service
  1. 配置tftp目录里pxelinux.cfg/default的文件内容
[root@localhost ~]# vi //tftpboot/pxelinux.cfg/default
default menu.c32     
#首先这里需要改成menu.c32 从isolinux拷贝的文件配置默认是vesamenu.c32
timeout 100
prompt 0
menu title PXE MENU

label rescue
  menu rescue red hat 
  kernel vmlinuz
  append initrd=initrd.img repo=http://192.168.2.1/rhel7.2 rescue quiet
  # 这里需要写http里的.cfg 的路径,可以自己检查是否能打开
  1. 编译安装squashfs
    从网站https://sourceforge.net/projects/squashfs/files/squashfs/ 下载 squashfs4.3.tar.gz

    [root@localhost youyou]# tar xvf squashfs4.3.tar.gz
    [root@localhost youyou]# cd squashfs4.3/squashfs-tools/
    [root@localhost squashfs-tools]# vi Makefile 
    # 修改Makefile 去掉 XZ_SUPPORT 1 这一行首的 # 号
    [root@localhost squashfs-tools]# make && make install 
    
  2. 修改救援模式使用的镜像文件

    [root@localhost youyou]# cp /var/www/html/rhel7.2/LiveOS/squashfs.img /var/www/html/rhel7.2/LiveOS/squashfs.img.bak
    # 把好的镜像备份一份,防止修改错误
    [root@localhost LiveOS]# unsquashfs squashfs.img
    [root@localhost LiveOS]# mkdir test
    [root@localhost LiveOS]# mount squashfs-root/LiveOS/rootfs.img test
    [root@localhost LiveOS]# chmod +x test/etc/rc.d
    [root@localhost LiveOS]# chmod +x test/etc/rc.d/rc.local
    [root@localhost LiveOS]# vi test/etc/init.d/a.sh
    #!/bin/bash
    reboot
    [root@localhost LiveOS]# chmod +x test/etc/init.d/a.sh
    [root@localhost LiveOS]# vi test/etc/rc.d/rc.local
    #!/bin/bash
    vgchange -a y
    mkdir -p /youyou/boot
    mount /dev/mapper/rhel-root /youyou
    mount /dev/sda1 /youyou/boot
    mount -o bind /dev /youyou/dev
    mount -o bind /proc /youyou/proc
    mount -o bind /run /youyou/run
    mount -o bind /sys /youyou/sys
    sshpass
    tar xvf
    sshpass
    chroot /youyou/ grub2-mkconfig -o /boot/grub2/grub.cfg
    touch /youyou/.autorelabel
    reboot
    [root@localhost LiveOS]# vi test/usr/lib/systemd/system/test.service
    [Unit]
    Description=jioaben
    After=rc-local.service
    [Service]
    Type=forking
    User=root
    ExecStart=/etc/init.d/a.sh
    [Install]
    WantedBy=rescue.target
    [root@localhost LiveOS]# vi test/usr/lib/systemd/system/rc-local.service
    ##This file is part of systemd.
    #systemd is free software; you can redistribute it and/or modify it
    #under the terms of the GNU Lesser General Public License as published by
    #the Free Software Foundation; either version 2.1 of the License, or
    #(at your option) any later version.
    #This unit gets pulled automatically into multi-user.target by
    #systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
    [Unit]
    Description=/etc/rc.d/rc.local Compatibility
    ConditionFileIsExecutable=/etc/rc.d/rc.local
    After=network.target
    [Service]
    Type=forking
    ExecStart=/etc/rc.d/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes
    [Install]
    WantedBy=rescue.target
    [root@localhost LiveOS]# cd test/usr/lib/systemd/system/rescue.target.wants/
    [root@localhost rescue.target.wants]#ln -sv ../test.service test.service
    [root@localhost rescue.target.wants]#ln -sv ../rc-local.service rc-local.service
    [root@localhost rescue.target.wants]# cd /var/www/html/rh7.2/LiveOS
    [root@localhost LiveOS]# umount test
    [root@localhost LiveOS]# mksquashfs squashfs-root squashfs.img -comp xz
    
    
  3. 注意事项
    编译安装squashfs,需要安装xz-devel,ziib-devel

    打包进sshpass ssh -o StrictHostKeyChecking 选项可以免秘钥

    touch .autolabel文件 在修改boot后,需要在原系统的目录的根目录,创建这个文件,否则用户无法登录

    注意system启动顺序,通过systemd-analyze plot > boot.svg 查看启动顺序
    开机自动运行就是把服务放在 wants里面的超链接,就行了

    chroot /youyou ls chroot 可以单次切根,并在切过的目录执行一个命令

    挂载激活lvm 注意原来的系统时放在lvm上,还是放在磁盘上的

    mount -o bind 绑定切根之前的mout 切根之前需要绑定目录,否则会提示无法找到dev设备

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用PXE批量进入救援模式修复多台主机的boot分区 的相关文章

  • 这才是企业级的oss-spring-boot-starter

    本文主要讲解企业级OSS对象存储服务Spring Boot Starter制作 xff0c 开箱即用 xff0c 为项目进行赋能 基于AmazonS3协议 xff0c 适配市面上的对象存储服务如 xff1a 阿里云OSS 腾讯COS 七牛云
  • 在spring boot中使用configuration注解无法注入bean

    1 在spring boot和spring中bean注入的方式 xff0c 基于Java类配置的 xff0c 即通过configuration注解注入 xff0c 其中遇到发现在springboot中 xff0c 无法自动注入 xff0c
  • Spring Boot||项目创建及报错解决

    背景 最近要实现一个网站 xff0c 计划后端基于spring boot来实现 所以在完成前端页面和相关数据库设计和实现后 xff0c 便安装了sts spring tool suite 由于是新手 xff0c 在用sts进行spring
  • 【项目实战】spring boot中使用webSocket

    spring boot中使用webSocket 文章目录 spring boot中使用webSocket引入依赖支持配置类接口类前端连接方式前端信息发送方式 引入依赖 需要在基础的spring boot web项目项目中添加下面一个依赖 x
  • spring boot自动打开浏览器和配置打开首页

    目录 前言 一 配置自动打开浏览器 在启动器同级目录下创建config文件夹来放启动配置类 下面是application properties的配置 二 配置默认首页 总结 前言 如何配置自动打开浏览器 和默认页面设置 一 配置自动打开浏览
  • Spring Boot 传参方式

    最近在搞Spring Boot的项目 xff0c 把传参方式总结一下 网上也参考一些文章 xff0c 总结的很不错 xff0c 这里借鉴一下 注解 64 RequestParam 这个注解用来绑定单个请求数据 xff0c 既可以是url中的
  • Spring boot + Spring Security + Thymeleaf 认证失败返回错误信息

    Spring boot 43 Spring Security 43 Thymeleaf 认证失败返回错误信息 Spring boot以其众多友谊的特性 xff0c 如零配置 微服务等 xff0c 吸引了很多的粉丝 而其与Spring Sec
  • spring boot里@Value和@bean执行顺序问题

    spring boot里 64 Value和 64 bean执行顺序问题 文章目录 spring boot里 64 Value和 64 bean执行顺序问题 前言情况一 xff1a 不同文件下情况二 xff1a 同一文件下使用Environ
  • spring Boot + Jpa(Hibernate) 架构基本配置

    1 基于springboot 1 4 0 RELEASE版本测试 2 springBoot Hibernate Druid Mysql servlet jsp 不废话 直接上代码 一 maven的pom文件
  • 优化pxe网启动时tftp的传输速度 --- 针对pxelinux和bootmgr

    作为一名IT人士 一般的计算机维护当然不好意思找别人 于是自己用pxelinux搭了个网络启动环境 可以启动各种WinPE 以供折腾电脑系统 刷新固件的需要 只是一般的网络启动都是基于tftp协议的 传输文件那叫一个慢 启动时光是加载映像文
  • Linux PXE详解

    今天我们继续给大家介绍Linux相关内容 本文主要内容是PXE系统的部署 并且通过实战 完成PXE环境的实战部署 由于PXE环境牵扯到的服务众多 因此 您需要了解FTP DHCP等服务的原理 安装 部署等知识 如果您对此还存在困惑 欢迎查阅
  • IAP 程序 跳转问题

    问题 STM32F407 未加下面 清除所有中断标志位 IAP无法跳转到APP 原因 开了定时器 配置了中断 在执行时为清除中断 导致程序无法跳转 void flash load application uint32 t applicati
  • 如何分析AIX启动过程1

    复杂度3 5 机密度4 5 最后更新2021 05 14 AIX提供了两个帮助分析启动的工具或者模式 kernel debug boot verbose mode 前者适合单独分析某个特定的功能 模块 而后者则能帮助你全面地过一遍AIX启动
  • 为什么使用 uImage 而不是 zImage

    我正在尝试了解 zImage 和 uImage 之间的区别 以我的理解uImage是通过运行得到的mkimage on the Image结果它添加了一个 U Boot 包装器 我不知道它到底包含什么 其中包含header加上加载地址和入口
  • C# - 如何知道 Windows 启动后何时“稳定”?

    我正在编写一个应用程序 该应用程序可以选择在 Windows 启动时运行 我无法忍受应用程序在我的电脑真正稳定下来之前就陷入困境 而且这是一个非关键应用程序 我希望我的应用程序礼貌地等待所有其他启动项完成并解决 以便用户的电脑在开始执行任何
  • 如何调试在启动时启动的进程?

    我正在尝试在启动时启动的 Windows 服务中设置断点 由于我犯了一个不幸的错误 该服务迫使机器进入重新启动循环 这意味着我无法达到可以部署修复程序的稳定状态 而且显然我无法尝试调试该服务在更方便的时间 我可以在内核模式下使用windbg
  • 为什么根文件系统被加载到ramdisk中?

    我正在研究Linux的启动过程 我遇到过这样一句话 RAM 比软盘快几个数量级 因此 ramdisk 的系统运行速度很快 无论如何 内核都会将根文件系统加载到 RAM 中来执行它 所以我的问题是 如果内核将根文件系统加载到 RAM 中 为什
  • 386+ 处理器中的复位向量

    维基百科页面为重置向量 http en wikipedia org wiki Reset vector说 对于 386 处理器 复位时 CS 寄存器选择器部分的值为 F000h CS 寄存器基址部分的值为 FFFF0000h 复位时 IP
  • ARM 的启动过程是怎样的?

    我们知道 对于X86架构 按下电源按钮后 机器开始执行0xFFFFFFF0处的代码 然后开始执行BIOS中的代码以进行硬件初始化 BIOS 执行后 它使用引导加载程序将操作系统映像加载到内存中 最后 操作系统代码开始运行 对于ARM架构 使
  • 启动时启动服务但不进行任何活动

    我想创建一个仅包含服务 无活动 的应用程序 该服务必须在启动时启动 我的问题是 如果没有活动 启动接收器似乎不会调用 我用下面的例子进行了测试 我有不同的文件 MyReceiver java package com test teststa

随机推荐

  • 截图工具使用方式

    1 xff0c 鼠标右击创建一个文本文件 2 xff0c 重命名文件为 bat格式 3 右击选择编辑 xff0c 保存 4 双击文件打开 5 xff0c 点击模式可以选择截图类型
  • JVM优化相关命令

    一 性能调优 性能调优包含多个层次 xff0c 比如 xff1a 架构调优 代码调优 JVM调优 数据库调优 操作系统调优等等 架构调优和代码调优是JVM调优的基础 xff0c 其中架构调优是对系统影响最大的 二 何时进行JVM调优 遇到以
  • Java多线程

    一 xff0c 单 CPU 如何同时运行多个程序 假设我们同时开了多个程序 xff1a Word xff0c IE xff0c QQ xff0c Winamp xff0c 对于操作系统来说 xff0c 这意味着 有四个进程要同时运行 为了解
  • BW性能监控利器——ST13总结

    题记 xff1a BW 的小工具 xff0c ST13 xff0c 近来每每使用 xff0c 都颇有感慨 xff0c 故总结如下 xff0c 以备后用 1 Process Chain xff1a ST13 gt BW TOOLS gt Pr
  • IO字节流与字符流

    一 xff0c 字节流 1 xff0c InputStream OutputStream 下所有字节流的父类 xff0c 也就是在装饰模式中扮演 武器 这个角色的类 所有输入字节流的父类是 InputStream xff0c 所有输出字节流
  • CentOS7.6镜像下载

    一 xff0c 直接下载 https mirrors aliyun com centos vault 7 6 1810 isos x86 64 二 xff0c 官网下载 https www centos org download
  • Nginx支持quic协议及gcc版本升级

    第一种方式 xff1a Nginx官方nginx quic搭建 通过部署Nginx官方的QUIC分支来实现的浏览器和nginx quic服务器粗略的HTTP3通信 1 下载BoringSSL BoringSSL 是由谷歌开发 从 OpenS
  • Nginx添加自定义HTTP头字段

    nginx代码配置 以下配置的是https类型的监听器 xff0c 添加了多个proxy set header nginx常用变量https zhuanlan zhihu com p 619398840 在后端server节点上使用tcpd
  • Mybatis 和 Mybatis Plus 的区别

    Mybatis Plus Mybatis Plus是一个Mybatis的增强工具 xff0c 只是在Mybatis的基础上做了增强却不做改变 xff0c MyBatis Plus支持所有Mybatis原生的特性 xff0c 所以引入Myba
  • linux下备份一个目录下所有文件及目录

    一 关于Linux备份文件和应用的几个命令 xff1a tar和cp 在工作中 xff0c 经常来备份文件和系统应用 xff0c 常用到的主要是tar和cp命令 xff0c 分别介绍如下 xff1a 一 tar命令 xff0c 这个现在经常
  • linux服务器IO性能诊断

    1 在 Linux 服务器排查问题时 xff0c 一般会通过 top vmstat free netstat df h 等命令排查 CPU 内存 网络和磁盘等问题 有的时候我们需要更进一步了解磁盘 I O 的使用情况 基本命令 xff1a
  • 记 Ubuntu 19.04更改ip地址

    前言 从ubuntu从17 10开始 xff0c 已经不再在 etc network interfaces里配置IP xff0c 即使配置了也不会生效 xff0c 而是改成netplan方式 xff0c 配置写在 etc netplan 文
  • 批量安装centos7服务器

    利用PXE自动化安装centos7 前言 PXE的功能及原理 大概解释一下意思就是 xff1a 启动计算机的时候如果没有插入U盘以及光驱等介质的话 xff0c boot启动项是有一个从PXE启动的选项 xff0c 如果都没有则会从pxe启动
  • KairosDB 1.13安装手记

    PS xff1a 为了处理监控数据 xff0c 我们需要一个时间序列数据库 xff0c OpenTSDB是前驱 xff0c 但是是基于Hbase实现的 xff0c 后来有了一个基于Cassandra的实现 xff0c 就是KairosDB
  • Ubuntu 18.04 配置网卡聚合绑定与桥接

    Ubuntu 18 04 配置网卡聚合绑定与桥接 单网卡配置ip和多网卡配置ip 在之前的博客已经写过了 xff0c 这里写一下进阶的一些配置吧 Ubuntu 配置ip博客 xff1a https blog csdn net liuhaoy
  • ansible playbook 检查文件是否存在

    register 在ansible的playbook中task之间的相互传递变量 当我们需要判断对执行了某个操作或者某个命令后 xff0c 如何做相应的响应处理 xff08 执行其他 ansible 语句 xff09 xff0c 则一般会用
  • Ubuntu打开虚拟机报错could not open /dev/vmmon:?????? please make sure that the kernel moduel vmmon is load

    首先查看模块是否启动 etc init d vmware status 如果未启动使用start启动 etc init d vmware start 检查模块是否启动成功 etc init d vmware status 如果是网卡那一项f
  • linux 通过ip add 配置GRE隧道

    配置两台主机的 lo地址 xff0c 用来测试用 xff0c 如果不做gre的话 xff0c 互相是ping不同对方的回环地址的 注意环境是 主机1的ip xff1a 192 168 1 1 lo地址 xff1a 1 1 1 1 主机2的i
  • ansible-playbook debug输出区别与用法

    ansible playbook debug中var输出和msg输出的区别 msg xff1a 调试输出的消息 var xff1a 将某个任务执行的输出作为变量传递给debug模块 使用var的时候 xff0c 引用变量无需加上大括号 使用
  • 利用PXE批量进入救援模式修复多台主机的boot分区

    利用PXE自动化安装centos7 前言 PXE的功能及原理 大概解释一下意思就是 xff1a 启动计算机的时候如果没有插入U盘以及光驱等介质的话 xff0c boot启动项是有一个从PXE启动的选项 xff0c 如果都没有则会从pxe启动