PXE服务器实现Linux全自动批量装机具体步骤

2023-11-03

目录

一、实验环境准备

二、CentOS7 pxe准备:

三、操作步骤

1.安装dhcp、tftp、http、syslinux

2.配置dhcp服务

3.配置tftp服务器

 4.拷贝PXE服务器的相关文件到/var/lib/tftpboot(tftp的根目录)

5.配置http服务器

6.配置ks.cfg文件

7.重启所有服务

四、创建虚拟机进行测试


一、实验环境准备

1.CentOS7:192.168.150.141

2.若干安装的CentOS虚拟机

二、CentOS7 pxe准备:

1.关闭防火墙

systemctl stop firewalld.service

2.关闭selinux

[root@192 ~]# vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled   ###修改为 :SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

三、操作步骤

1.安装dhcp、tftp、http、syslinux

2.配置dhcp服务

yum -y install dhcp

安装后, DHCP 服务的主配置文件为 /etc/dhcp/dhcp.conf ,我们可以修改配置文件以实现为客户端分配网络参数。

copy样例文件到/etc/dhcp/dhcp.conf,如下操作:

[root@192 ~]# cd /etc/dhcp/
[root@192 dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts
[root@192 dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./

修改配置文件 :  vim /etc/dhcp/dhcpd.conf 如下修改:

[root@192 dhcp]# cat dhcpd.conf
subnet 192.168.150.0 netmask 255.255.255.0 {
        range 192.168.150.10 192.168.150.100;
        default-lease-time 3600;
        filename "pxelinux.0";
        next-server 192.168.150.141;
}

重启服务

systemctl restart dhcpd

3.配置tftp服务器

TFTP 服务为客户端提供一种简单的文件共享,非常适用于传输小且简单的 PXE 启动文件

yum install tftp-server -y

编辑/etc/xinetd.d/tftp 

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

disable = no #把原来的yes改成no

改完重启服务

systemctl restart tftp 

 4.拷贝PXE服务器的相关文件到/var/lib/tftpboot(tftp的根目录)

安装syslinux并拷贝pxelinux.0文件到TFTP服务器

yum install syslinux -y #通过安装syslinux获取引导文件

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/    ##引导文件

cp /usr/share/syslinux/menu.c32  /var/lib/tftpboot/    ##菜单文件

将镜像放在光驱并运行如下命令,从光盘中复制启动镜像文件和启动配置文件到TFTP共享目录

mount -o loop -t iso9660 /dev/sr0 /media 

将镜像中的相关文件复制到tftp根目录

cp  /media/isolinux/vmlinuz  /var/lib/tftpboot/   ##安装引导文件1

cp  /media/isolinux/initrd.img  /var/lib/tftpboot/   ##安装引导文件2

在tftpboot目录下创建目录pxelinux.cfg

cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg

创建如下default文件 :

default menu.c32     
timeout 300
prompt 0

label 1
menu label ^1) Install CentOS7
menu default
kernel vmlinuz
append initrd=initrd.img method=http://192.168.150.141/CentOS7 ks=http://192.168.150.141/ks.cfg

5.配置http服务器

yum install httpd -y

在/var/www/html/目录下创建目录CentOS7 

[root@192 pxelinux.cfg]# cd /var/www/html/
[root@192 html]# mkdir CentOS7

 将/dev/cdrom挂载在该目录下:

 mount /dev/cdrom /var/www/html/CentOS7/

保证能看到安装光盘的内容:http://192.168.150.141/CentOS7/

6.配置ks.cfg文件

先看模板文件:

[root@192 ~]# ll
total 4
-rw-------. 1 root root 1492 Sep 14 08:02 anaconda-ks.cfg

cp anaconda-ks.cfg  /var/www/html/

 然后改名为ks.cfg

mv anaconda-ks.cfg ks.cfg

  保证能看到安装脚本文件的信息:http://192.168.150.141/ks.cfg

chmod +r ks.cfg

 修改里面内容:

开头修改部分:

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
url --url http://192.168.150.141/CentOS7  ###第一处修改
# Use graphical install
#graphical             ###第二处修改
text           ###第三次修改

中间修改部分:

# Partition clearing information
#clearpart --none --initlabel    ###第一处修改
clearpart --all --initlabel        ###第二处修改
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.253 --fstype="lvmpv" --ondisk=sda --size=19979
volgroup centos --pesize=4096 pv.253
logvol /  --fstype="xfs" --size=17927 --name=root --vgname=centos
logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos

结尾处修改:

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

reboot  ###加个reboot

7.重启所有服务

 systemctl restart httpd
 systemctl restart tftp
 systemctl restart dhcpd

四、创建虚拟机进行测试

点击开启虚拟机:

 自动安装中:

 等待几分钟就ok了:

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

PXE服务器实现Linux全自动批量装机具体步骤 的相关文章

  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • 如何在线程创建和退出时调用函数?

    include
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可

随机推荐

  • 替代Eureka,你可以试试Consul

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 1 Eureka官宣2 x版本不再开源 2 互联网大厂的基础架构 自研服务注册中心 3 中小公司的其他选择 Consul 1 Eureka官方宣布2 x不再开源
  • ucenter info:can not connect to MySQL server解决办法

    Discuz搬家之后 发现ucenter 进不去了 错误信息为 UCenter info Can not connect to MySQL server Error Access denied for user a localhost us
  • electron-vue 安装环境、构建+打包(mac和windows)这一篇就够了

    由于公司需要 下一个项目需要做CS开发 技术选型分析后 选择了electron Electron 是一个使用 JavaScript HTML 和 CSS 等 Web 技术创建原生程序的框架 研究发现 electron与vue cli3 0脚
  • git简单提交操作

    一 本地仓库操作 1 打开git命令行 先 到需要提交的目录 2 输入git init 初始化本地仓库 3 输入git add
  • mysql 索引优化实战 (续)

    分页查询优化 示例表 CREATE TABLE employees id int 11 NOT NULL AUTO INCREMENT name varchar 24 NOT NULL DEFAULT COMMENT 姓名 age int
  • 企业微信不支持在当前APP中打开该小程序,可前往微信打开

    最近因为业务需求 需要将原来的小程序添加到企业微信 在本地测试的时候一切正常 本以为这周任务做完了 结果遇到一个深坑 到处查资料 找了很久在开发者论坛发现有人遇到过类似的问题 这里记录一下 根据 企业微信官方文档在关联了微信小程序后 可以从
  • 传输层协议------TCP协议

    这里写目录标题 协议段格式 确认应答机制 超时重传机制 协议特性 面向连接 三次握手建立连接和四次挥手断开连接 理解TIME WAIT的状态 解决TIME WAIT状态引起bind失败的方法 理解CLOSE WAIT的状态 保活机制 可靠传
  • Hive doc

    https cwiki apache org confluence display Hive GettingStarted Table of Contents Hive introduction videos From Cloudera I
  • shell 判断操作系统类型

    文章目录 shell 判断操作系统类型 shell 判断操作系统类型 3 种 OSTYPE 旧版的shell 无法识别 uname uname substr 1 Administrator DESKTOP MR9A589 MINGW64 D
  • ajax请求设置同步,ajax 设置同步

    这个问题总是碰见 但是又总是记不住怎么拼写 这次直接写出来 长期保存 Ajax请求默认的都是异步的 如果想同步 async设置为false就可以 默认是true 例如 ajax url cache false dataType json t
  • 【亲测】postman下载需要注意的一些问题

    之前一直用postman传递普通参数 后来用了上传 最近使用了下载 下载会出现失败 原因看了很多问题都没解决 最后试了下接口变post就可以 但是get接口是可以下载的 只是postman里测试的话需要post
  • Deepfakes论文总结

    Deepfakes论文总结 更新中 目前的deepfake检测 从检测层级上讲有两类 一类工作认为 深度伪造检测 应该检测伪造过程中底层的artifact 比如本文中的 5 6 7 8 这类文章通常非常善于设计网络架构 设计数据增强方式 设
  • Python中自带的OpenCV使用指南

    Python中自带的OpenCV使用指南 OpenCV是一种广泛使用的计算机视觉库 它提供了大量的算法和工具 可以帮助用户处理图像和视频 Python中自带的OpenCV是一种基于Python语言的OpenCV库 它提供了Python开发人
  • MySQL使用UDF调用shell脚本

    前言 在最近的项目中 由于需要使用MySQL的UDF user defined function 这个特性从未使用过 而且个人觉得这个特性以后应该会经常使用 所以写下博文 记录和分享这个特性的用法 UDF是mysql的一个拓展接口 UDF
  • 通过线程+反射,解决复杂数据验证

    第一步 建立需要传入参数的 Vo 对象 ApiModelProperty value 身份证 private String idcard ApiModelProperty value 姓名 private String name publi
  • 使用linux sar命令分析CPU和磁盘

    订阅号原文 使用linux sar命令分析CPU和磁盘 一 摘要 这是夜说的第八篇学习文章 使用sar命令分析cpu和io问题 二 sar u分析cpu问题 1 sar u分析cpu问题 2代表时间间隔 s 5代表次数 这两个值可以自行调整
  • [创业-36]:《从员工到老板,你必须经历的三次跃迁》解读

    目录 前言 1 关于如何成为好的员工 第一 工资是给职位的定价 价值 第二 职位的价格由最便宜的可胜任者决定 价格 第三 解读 2 关于如何成为好的管理者 第一 衡量标准 第二 如何设计制度是衡量治理水平的一把尺 第三 解读 3 关于如何成
  • rust运行时提示link.exe找不到的问题

    直接在cmd里运行下面2句 这样就可以使用rustup来修复这个问题了 rustup toolchain install stable x86 64 pc windows gnu rustup default stable x86 64 p
  • 数据库用户管理

    数据库用户管理 一 创建 1 新建用户 CREATE USER 用户名 来源地址 IDENTIFIED BY PASSWORD 密码 用户名 指定将创建的用户名 来源地址 指定新创建的用户可在哪些主机上登录 可使用IP地址 网段 主机名的形
  • PXE服务器实现Linux全自动批量装机具体步骤

    目录 一 实验环境准备 二 CentOS7 pxe准备 三 操作步骤 1 安装dhcp tftp http syslinux 2 配置dhcp服务 3 配置tftp服务器 4 拷贝PXE服务器的相关文件到 var lib tftpboot