PXE + FTP + kickstart 实现 批量网络装机
一: PXE 批量网络装机概述
1.1 PXE 概述
PXE是由Inter 公司开发的网络引导技术,工作在Client / Server 模式。允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统
1.1.1 PXE 优点
- 规模化:同时装配多台服务器
- 自动化:安装系统,配置各种服务都可以交给机器进行
- 远程实现:不需要光盘,U盘等安装介质
1.1.2 前提条件
客户端和服务端处于同一个局域网
客户端:
客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置允许从Network或LAN 启动即可。
服务端:
网络中有一台DHCP服务器,以便位客户机自动分配地址,指定引导文件位置。
服务器要通过 TFTP 服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载
二: 搭建 PXE 远程安装服务器
PXE 远程安装服务器集成了 Centos 7 安装源、TFTP 服务、DHCP 服务、FTP 服务, 能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
TFTP (简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。 TFTP服务默认由xinetd服务进行管理,使用UDP 端口 69
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。
守护进程也称精灵进程 (Daemon), 是运行在后台的一种特殊进程。守护进程独立于控制终端,它们常常跟随系统启动时启动,在系统关闭时才结束。守护进程周期性的执行某些任务或者等待处理某些事件,Linux上的大多数服务器都是用守护进程实现的。
在系统启动中默认的守护进程的父进程ID全都是init,守护进程特征就是在程序运行名后加了一个d,但不是所有的尾字母是d的进程都是守护进程。
2.1 安装并启用DHCP 服务
2.1.1 下载 dhcp
复制[root@host10 ~]# yum -y install dhcp
[root@host10 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
2.1.2 修改DHCP 服务的配置文件
[root@host10 ~]# vim /etc/dhcp/dhcpd.conf
2.1.3 启用DHCP服务,并设置开机自启
复制[root@host10 ~]# systemctl start dhcpd
[root@host10 ~]# systemctl disable dhcpd
2.2 安装并启用TFTP 服务
2.2.1 下载 tftp-sever 和 xinted 软件包
[root@host10 ~]# yum -y install tftp-server xinted
2.2.2 修改 TFTP 服务的配置文件
[root@host10 ~]# vim /etc/xinetd.d/tftp
2.2.3 开启 tftp和 xinetd 服务,并设置开机自启
复制[root@host10 ~]# systemctl start tftp xinetd
[root@host10 ~]# systemctl enable tftp xinetd
2.3 准备PXE 引导程序
复制[root@host10 ~]# yum -y install syslinux-extlinux.x86_64
[root@host10 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
2.4 配置启动菜单文件
配置默认启动菜单文件:
复制[root@host10 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
2.5 准备Linux 内核,初始化镜像文件
复制[root@host10 ~]# mount /dev/cdrom /mnt
[root@host10 ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@host10 ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
2.6 安装FTP 服务,准备Centos 7 安装源
复制[root@host10 ~]# yum -y install vsftpd
[root@host10 ~]# mkdir /var/ftp/centos7
[root@host10 ~]# cp -rf /mnt/* /var/ftp/centos7/
重启 ftp服务,并将其设置为开机自启
复制[root@host10 ~]# systemctl start vsftpd
[root@host10 ~]# systemctl enable vsftpd
2.7关闭防火墙和 selinux
关闭防火墙 和 取消防火墙开机自洽
复制[root@host10 ~]# systemctl stop firewalld
[root@host10 ~]# systemctl disable firewalld
禁用selinux
[root@host10 ~]# vim /etc/selinux/config
至此,PXE网络系统安装完成。
使用vmware 创建的虚拟机内存至少需要2 GB ,否在在启动安装时可能会报错。
开启虚拟机,在提示符 "boot:" 后直接按Enter键(或者执行“auto” 命令),将会自动通过网络下载安装文件,并默认进入图形安装入口
若执行 "linux text " 命令,则进入文本安装入口;执行“linux rescue” 命令,则进入救援模式
三 安装 Kickstart ,实现无人值守安装
3.1 准备应答文件
(1) 安装 systemctl-config-kickstart 工具
[root@host10 ~]# yum -y install system-config-kickstart
(2) 打开“Kickstart 配置程序” 窗口
可以通过桌面菜单 "应用程序"----> "系统工具"---->"Kickstart" 打开
或者
命令行执行 " system-config-kickstart "
[root@host10 ~]# system-config-kickstart
3.2 保存应答文件
在 当前 "Kickstart 配置程序"窗口的 "文件" ----> "保存" 命令
选择保存指定位置,文件名为 "ks.cfg" 。
默认保存在 /root/ks.cfg
然后在文件复制到 FTP共享目录下cp /root/ks.cfg /var/ftp.cfg
3.3 配置需要安装的软件包
在系统安装后,会在/root/目录下生成文件 anaconda-ks.cfg
[root@host10 ~]# vim /root/anaconda-ks.cfg
如果需要最小化安装,可以将下面类容替代
[root@host10 ~]# vim /var/ftp/ks.cfg
3.4 编辑引导菜单文件 default ,添加ks 引导参数
[root@host10 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
至此,无人值守安装完成
当客户机每次PXE 方式引导时,将自动下载ks.cfg 应答文件,然后根据其中的设置安装Centos 7 系统,而无需手动干预
小结
系统启动引导过程:
1,开机自检,检测出第一个能够引导系统的设备。可以是硬盘,U盘,光驱,网络等
2,根据引导系统的设备里的MBR设置,调用启动菜单(GRUB)
3,根据GRUB配置文件,获取内核和镜像文件系统的设置和路径位置
4,把内核和镜像文件系统加载到内存中
5,加载硬件驱动程序,内核把init 进程加载到内存中运行
根据系统引导过程,配置PXE 网络装机:
-
先配置DHCP,让客户机可以获取IP,并在局域网内进行通信。
-
DHCP 指定TFTP 服务器地址
-
配置TFTP,让服务器可以将引导文件传输给客户机,指定引导文件路径
-
添加引导程序PXE,拷贝到tftpboot下
-
配置GRUB 启动引导菜单,引导菜单指定内核与镜像文件系统的的路径
-
准备内核与镜像文件,复制到 tftpboot 下
-
将光盘镜像挂载到FTP 共享目录下
-
关闭防火墙和selinux
-
配置kickstart 应答文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现