PXE+Kickstart无人值守安装操作系统
一,简介
1.1 什么是PXE
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
PXE的工作过程
1 2 3 4 5 6 | 1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP; 2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ; 3. PXE Client 向本网络中的TFTP服务器索取pxelinux. 0 文件; 4. PXE Client 取得pxelinux. 0 文件后之执行该文件; 5. 根据pxelinux. 0 的执行结果,通过TFTP服务器加载内核和文件系统 ; 6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装; |
1.2什么是Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
二,安装环境
操作系统:CentOS7.5 为EXSI虚拟机
IP地址:172.16.20.32
关闭防火墙和senlinux
1 2 | systemctl stop firewalld setenforce 0 |
为了简化操作本次使用DHCP HTTPD和TFTP均安装在同一台服务器
三,安装配置
3.1安装dhcp服务
1 | yum - y install dhcp |
修改配置文件
1 | / etc / dhcp / dhcpd.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ddns - update - style none; ignore client - updates; next - server 10.0 . 0.1 ; #文件名称 filename "/pxelinux.0" ; #定义dhcp获取地址的网段为172.16.20.0/24 subnet 172.16 . 20.0 netmask 255.255 . 255.0 { #定义dhcp获取的网关 option routers 172.16 . 20.251 ; #定义dhcp获取的地址范围 range 172.16 . 20.200 172.16 . 20.200 ; option subnet - mask 255.255 . 255.0 ; default - lease - time 21600 ; max - lease - time 43200 ; } |
指定监控网卡
修改配置文件
1 | / etc / sysconfig / dhcpd |
增加一行指定监控的网卡为eth0
1 | DHCPDARGS = eth0 |
启动dhcp服务
1 | systemctl start dhcpd |
在同网段开启一台虚拟机启动,可以看到已经从dhcp获取到IP地址但是没有tftp信息
3.2安装tftp
1 | yum - y install tftp - server xinetd |
修改配置文件
1 | / etc / xinetd.d / tftp |
把disable改成no
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 } |
启动tftp
1 2 | systemctl start tftp systemctl enable tftp |
启动
1 2 | systemctl start xinetd systemctl enable xinetd |
3.3安装httpd网页服务
1 | yum - y install httpd |
启动httpd网页服务
1 2 | systemctl start httpd systemctl enable httpd |
在站点目录下创建一个新目录用于挂载ISO镜像
1 | mkdir / var / www / html / centos6 |
挂载
1 | mount / nas / nas / softs / iso / CentOS / CentOS - 6.6 - x86_64 - minimal.iso / var / www / html / centos6 / |
通过web页面浏览
3.4安装syslinux
安装
1 | yum - y install syslinux |
拷贝文件至tftp根目录
1 2 | cp / usr / share / syslinux / pxelinux. 0 / var / lib / tftpboot / cp - a / var / www / html / centos6 / isolinux / * / var / lib / tftpboot / |
新建目录存放客户端配置文件
1 2 | mkdir - p / var / lib / tftpboot / pxelinux.cfg cp / var / www / html / centos7 / isolinux / isolinux.cfg / var / lib / tftpboot / pxelinux.cfg / default |
客户端启动主机即可选择安装
输入安装的url地址
正常安装centos步骤一步步进行下一步即可
以上为半自动化安装修改配置文件
1 | / var / lib / tftpboot / pxelinux.cfg / default |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #prompt 1 default ks timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.6 ! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd = initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd = initrd.img xdriver = vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd = initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - label ks kernel vmlinuz append ks = http: / / 172.16 . 30.31 / ks.cfg initrd = initrd.img |
红色部分为增加部分,设置自动应答文件
自动应答文件在新安装的主机的目录/root下 anaconda-ks.cfg
安装centos6没有问题 无法安装centos7 (尚不清楚原因)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-04-26 Windows安装使用git
2018-04-26 Gitlab安装和使用