PXE 实现系统批量自动安装

本文介绍如何利用PXE技术实现系统的批量自动安装。通过搭建HTTP、TFTP、DHCP等服务,创建“安装源”,进而实现主机启动时自动获取安装文件并完成系统安装,极大提升了运维效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PXE 实现系统批量自动安装

  • PXE
    就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装。在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如 ftp、http、tftp、dhcp 等。当一台主机启动时,标准输入输出会将 PXE 客户端调入我们的内存中进行相关的操作,并提示相关的选项,在这里我们可以进行选择。PXE 的客户端通过网络下载(download)启动文件到本地运行。具体过程是,PXE 客户端通过网卡向局域网内发送 ip 请求,然后 DHCP 服务器会提供给给它一个 ip 地址和系统安装所需要的文件,接下使用接收到的文件进行系统安装。而安装的过程又需要其他服务器提供的资源,例如:yum 源,内核文件等,当主机拿到这些资源,便可以顺利的安装了。最终结果是:任意一台主机在选着网络启动时会获取 DHCP 服务器分发的 ip,通过获取到的 ip 地址与局域网内的 TFTP 服务器通信并获取启动文件,与 FTP 或者 HTTP 通信并获取 yum 源文件及内核文件等。之后开始自动安装,而这个过程不需要人在做任何操作。
  • PXE安装优点
    这种安装系统的方式可以不受光驱,光盘以及一些外部设备的限制,还可以做到无人值守,大大减轻了运维人员的工作负荷,像在一些主机数量庞大的机房进行批量安装,PXE 将是你不二的选择。

具体操作如下:

1. 安装服务

由于我们需要 HTTP、TFTP、DHCP 服务来提供相应的服务,所以我们必须要在系统中安装,相应的服务。这里需要注意,如果你的系统时最小化安装,那么建议你先安装一些包组,GCC等。如果安装过程中出现包依赖问题,依次安装相应的包即可。

执行如下

 [root@client ~]# yum install dhcp tftp-server.x86_64  httpd syslinux -y  #安装相应的服务包
 httpd		# 共享安装资源
 dhcp		# 分配ip以及让客户主机获取pxelinux.0文件
 pxelinux.0	# 预安装环境头文件,用来指定读取后续文件的程序
 tftp-server	# 提供tftp协议,令客户主机可以读取到预安装环境
 syslinux	# 提供pxelinux.0文件
 [root@client ~]# yum install xinetd -y       # 安装超级守护进程 xinetd
 [root@client ~]# systemctl start dhcpd       # 启动 dhcpd 服务
 [root@client ~]# systemctl enable dhcpd      # 设置 dhcpd 开机启动
 [root@client ~]# systemctl start httpd       # 启动 httpd 服务
 [root@client ~]# systemctl enable httpd
 [root@client ~]# chkconfig --list       # 如果 tftp: off,请修改配置文件
 [root@client ~]# vim /etc/xinetd.d/tftp
 service tftp
 {
 ...
     disable     = yes         # 修改这一项为"disable     = no"
 ...
 }
 [root@client ~]# systemctl restart xinetd     # 修改之后,一定要重启xinetd服务

执行如下:
修改配置文件
这里写图片描述
查看
这里写图片描述

2. 配置DHCP服务

DHCP服务是保证我们能够自动化批量安装的前提,主要是配置子网范围,用于ip地址分配。

 [root@client ~]# rpm -ql dhcp         # 查询dhcp相关的文件
 ...前面省略
 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
 /usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
 ...后面省略
 [root@client ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf   
                   # 复制模板配置文件
 [root@client ~]# vim /etc/dhcp/dhcpd.conf    # 编辑配置文件
 ...前面省略...
 subnet 172.25.151.0 netmask 255.255.255.0{         
     # 这里写的ip地址为子网的 地址,故为192.168.14.0
   range 172.25.151.30 172.25.151.40;     
     # 子网的范围,之后主机请求获取的ip地址就是这其中的一个
   next-server 172.25.151.20     
     # 指明tftp服务器的地址
   filename "pxelinux.0";
     # 指明PXE文件位置,这个在申请ip的时候会发送给安装主机
   option routers 172.25.151.20;
 }
 ...后面省略...
 [root@client ~]# systemctl restart dhcpd.service     # 重启服务
 
 注意:如果你设置的子网有问题,那么你将不能重启dhcp服务,请检查你配置的子网是否正确。
 dhcp服务器的地址必须固定,不能是自动获取的ip。

执行入下:
编辑配置文件
这里写图片描述

3.设定共享文件
3.1 制作安装源
 [root@client ~]# mkdir /var/www/html/rhel7.0
                # 创建挂载点
 [root@client ~]# mkdir /iso
                # 创建镜像源放置点
 [root@client ~]# mv /root/Desktop/rhel-server-7.0-x86_64-dvd.iso /iso/
                # 将镜像源放入
 [root@client ~]# mount /iso/rhel-server-7.0-x86_64-dvd.iso /var/www/html/rhel7.0/
                # 进行挂载镜像
 [root@client ~]# vim /etc/rc.d/rc.local
                # 编辑配置文件进行开机自动挂载
 内容如下:
 mount /iso/rhel-server-7.0-x86_64-dvd.iso /var/www/html/rhel7.0
 [root@client ~]# chmod +x /etc/rc.d/rc.local
                # 为该文件添加执行权限

执行如下:
这里写图片描述

3.2 准备内核文件菜单文件
 [root@client ~]# cp /var/www/html/rhel7.0/isolinux/* /var/lib/tftpboot/
                # 复制内核,虚拟根文件 
 [root@client ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
                # pxelinux文件来自syslinux包,直接复制即可 
 [root@client ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
 [root@client ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
                # 复制并改名
                 
                # 编辑文件
 systemctl restart xinetd
3.3 设定自动化部署
 [root@client ~]# yum install system-config-kickstart -y
 [root@client ~]# system-config-kickstart	
  执行,进行配置,将文件保存为 /var/www/html/rhel7.0.cfg 
 [root@client ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
 在 61 行左右添加  
 label autoinstall	# 选项标签
   menu label ^Autoinstall RHEL7.0	# 标题
   kernel vmlinuz			# 启动的内核文件
   append initrd=initrd.img             # 初始化镜像 
   repo=http://172.25.254.100/rhel7.0   # 安装资源
   ks=http://172.25.254.100/rhel7.0.cfg # 自动安装脚本

执行如下:
system-config-kickstart 具体配置见Linux菜鸟成长日记 (Linux通过脚本文件自动创建虚拟机)
这里写图片描述
保存为
这里写图片描述
编辑配置文件
这里写图片描述

4. 调试并安装

以建立虚拟机为例
点击建立
这里写图片描述
pxe 方式进行建立,然后进行配置
这里写图片描述
可看到从自动获取 IP
这里写图片描述
进入刚才设定的菜单,进行自动安装
这里写图片描述

<think>好的,我现在需要回答用户关于如何通过PXE实现系统的自动批量部署与自动分区的教程。首先,我需要回顾一下用户提供的引用内容,看看里面有哪些相关信息可以利用。 根据引用[1],PXE远程安装服务器需要集成CentOS 7安装源、TFTP服务和DHCP服务,这些是基础组件。引用[2]提到PXE通过DHCP和TFTP协议加载启动文件和镜像,这解释了网络引导的基本流程。引用[3]和[4]提供了具体的步骤,比如搭建本地YUM源,安装xinetd、TFTP服务,以及配置相关文件。用户的问题主要集中在自动分区上,因此我需要将重点放在Kickstart配置中的分区部分。 首先,我应该按照步骤分阶段说明PXE服务器的搭建,包括安装必要的服务(DHCP、TFTP、HTTP/NFS),配置这些服务,然后处理安装源的准备。接下来是PXE引导文件的配置,特别是启动菜单(如default文件)的设置。然后,重点转移到Kickstart文件的创建,其中自动分区的部分是关键。需要详细说明如何在ks.cfg中使用part或autopart命令来定义分区方案,并给出示例。此外,可能还需要涉及如何将Kickstart文件与安装源结合,确保安装过程中自动调用该配置文件。 需要确保每个步骤的命令和配置文件正确无误,比如DHCP的subnet配置、TFTP的文件路径、Kickstart的分区指令等。同时,要检查用户提供的引用中是否有遗漏的步骤,比如防火墙和SELinux的设置,这些可能会影响服务的正常运行,需要提醒用户注意。 可能还需要验证各个服务是否正常启动,比如使用systemctl检查DHCP和HTTP服务的状态。另外,自动分区的示例要具体,比如创建一个500MB的/boot分区,20GB的根分区,以及适当的swap分区,并确认文件系统类型。最后,生成相关问题时要围绕PXE部署的关键点,比如服务配置、自动化优化、安全措施等。</think>### PXE自动化批量部署系统与自动分区教程 通过PXE实现自动化批量部署系统需要搭建PXE服务器(含DHCP、TFTP、安装源服务)并配置Kickstart实现自动分区。以下是具体步骤: --- #### **一、基础环境搭建** 1. **安装必要服务** ```bash # 安装DHCP、TFTP、HTTP(用于存放安装源) yum install dhcp tftp-server httpd xinetd syslinux -y systemctl enable --now dhcpd tftp httpd xinetd ``` 2. **配置DHCP服务** 编辑`/etc/dhcp/dhcpd.conf`,添加以下内容: ```plaintext subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; filename "pxelinux.0"; # PXE引导文件 next-server 192.168.1.10; # TFTP服务器IP } ``` 3. **准备安装源** ```bash # 挂载ISO镜像并复制文件到HTTP目录 mount /path/to/CentOS-7.iso /mnt cp -r /mnt/* /var/www/html/centos7/ ``` --- #### **二、配置PXE引导文件** 1. **复制引导文件到TFTP目录** ```bash cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /var/www/html/centos7/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg ``` 2. **创建启动菜单** 编辑`/var/lib/tftpboot/pxelinux.cfg/default`: ```plaintext default auto label auto kernel vmlinuz append initrd=initrd.img ks=http://192.168.1.10/ks.cfg # 指定Kickstart文件 ``` --- #### **三、配置Kickstart自动分区** 1. **生成Kickstart模板** 安装`system-config-kickstart`生成基础模板,或直接创建`/var/www/html/ks.cfg`: ```plaintext # 分区配置(关键部分) part /boot --fstype=xfs --size=500 part / --fstype=xfs --size=20000 part swap --size=4096 # 或使用自动分区: autopart --type=lvm # 其他配置 url --url="http://192.168.1.10/centos7" keyboard --vckeymap=us --xlayouts='us' rootpw --plaintext your_password timezone Asia/Shanghai %packages @^minimal %end ``` 2. **验证Kickstart语法** ```bash ksvalidator /var/www/html/ks.cfg ``` --- #### **四、客户端验证** 1. 启动目标裸机并选择PXE引导,系统将自动从网络加载安装程序并按Kickstart配置分区和安装。 --- #### **注意事项** - **防火墙/SELinux**:关闭或放行相关端口(67/UDP, 69/UDP, 80/TCP)[^3][^4] - **文件权限**:确保`/var/lib/tftpboot`和HTTP目录可被访问。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值