小阿轩yx-PXE 高效批量网络装机
部署PXE远程安装服务
PXE 概述
PXE(Preboot eXcution Environment,预启动执行环境,在操作系统之前运行)技术的网络装机方法,是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统
PXE需要较高的带宽
PXE
1:iso中系统镜像文件放到FTP
2:FTP
3:DHCP动态主机配置协议:一个协议(rarp反向地址解析)
- 分地址
- 指定tftp的ip
- 指定pxelinux.0(引导程序syslinux)
4:TFTP简单文件传输协议(精简,比FTP更简便)
先使用TFTP下载对应的
- 内核文件、初始化镜像文件
- 引导程序、引导配置文件
服务端
- 运行DHCP服务,用来分配地址、定位引导程序
- 运行TFTP服务,提供引导程序下载
客户端
- 网卡支持PXE协议
- 主板支持网络引导
对于无盘工作站(在网络中的一个工作站),服务器端需要提供可运行的完整系统镜像;
对于远程安装,只要提供引导程序和安装源就可以了
批量部署方法具备三个优点
- 规模化:同时装配多台服务器
- 自动化:安装系统、配置各种服务
- 远程实现:不需要光盘、U盘等安装介质
- 客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导
- 网路中有一台DHCP服务器为客户机自动分配地址、指定引导文件位置
- 服务器通过TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载
- 第一个条件实际上是硬件要求
- 目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可
搭建PXE远程安装服务器
准备CentOS 7 安装源
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd
安装并启用 TFTP 服务
- 安装tftp-server软件包,启用tftp服务
- 配置文件位于/etc/xinetd.d/tftp
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vim /etc/xinetd.d/tftp
service tftp
{
…… //省略部分信息
protocol = udp //TFTP 采用 UDP 传输协议
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定 TFTP 根目录
disable = no …… //省略部分信息
}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to
/usr/lib/systemd/system/tftp.socket.
准备 Linux 内核、初始化镜像文件
[root@localhost ~]# cd /media/cdrom/images/pxeboot
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
准备 PXE 引导程序
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
安装并启用 DHCP 服务
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
…… //省略部分信息
subnet 192.168.4.0 netmask 255.255.255.0 {
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 192.168.4.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.4.100 192.168.4.200;
next-server 192.168.4.254; //指定 TFTP 服务器的地址
filename "pxelinux.0"; //指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to
/usr/lib/systemd/system/dhcpd.service.
配置启动菜单文件
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定默认入口名称
prompt 1 //1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7
验证 PXE 网络安装
-
为系统主机重装系统
-
修改BIOS设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机
-
自动配置IP地址,并指定CentOS 7 安装源
-
其余过程与本地安装相同
-
若用VMware虚拟机测试,虚拟内存至少2G
-
实现 Kickstart 无人值守安装
Kickstart概述
无人值守自动安装
-
用 Kickstart 工具配置安装应答文件,预先定义好各种安装设置
-
免去交互设置过程,从而实现全自动化安装
准备安装应答文件
应答文件的来源
- 在CentOS 7 安装system-config-kickstart工具
- 编辑应答文件 /root/anaconda-ks.cfg
使用system-config-kickstart工具创建新的应答文件
- 需要安装system-config-kickstart软件包
修改各项来对应答文件进行配置
执行各种后续配置任务的脚本语句
保存自动应答文件
[root@localhost ~]# grep -v ^# /root/ks.cfg
install
keyboard 'us'
rootpw --iscrypted $1$4L6b0cut$W3mlVspKjatMK/g5vrTct/
url --url="ftp://192.168.4.254/centos7"
lang zh_CN
firewall --disabled
auth --useshadow --passalgo=sha512
graphical
firstboot --disable
selinux --disabled
network --bootproto=dhcp --device=ens33
reboot
timezone Asia/Shanghai
bootloader --location=mbr
clearpart --all
part /boot --fstype="xfs" --size=500
part /home --fstype="xfs" --size=4096
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%post --interpreter=/bin/bash
rm -f /etc/yum.repos.d/*
echo -e
'[base]\nname=CentOS7.3\nbaseurl=ftp://192.168.4.254/centos7\nenabled=
1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/e
tc/yum.repos.d/centos7.repo
%end
%packages //%packages 到%end 部分是复制 anaconda-ks.cfg 中的软件包安装脚本
@^minimal
实现批量自动装机
启用自动应答文件
[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0 //0 表示不等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
ks=ftp://192.168.4.254/ks.cfg
验证无人值守安装
- 将客户机以PXE方式引导
- 系统会自动完成安装,并配置好软件仓库
- 整个安装过程无需手动干预
手动 PXE 部署
服务端命令
[root@localhost ~]# mkdir /media/cdrom/
# 创建一个目录来挂载 CDROM
[root@localhost ~]# mount /dev/cdrom /media/cdrom/
# 挂载 CDROM 到刚刚创建的目录
[root@localhost ~]# mkdir /var/ftp/centos7/
# 创建一个目录来存放 CentOS 7 的文件
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
# 将 CDROM 中的文件复制到 CentOS 7 目录中
[root@localhost ~]# cd /etc/yum.repos.d/
# 切换到存储库配置文件的目录
[root@localhost yum.repos.d]# mkdir bak
# 创建备份目录
[root@localhost yum.repos.d]# mv C* bak/
# 移动以 'C' 开头的文件到备份目录
[root@localhost yum.repos.d]# cp bak/CentOS-Media.repo ./
# 复制备份目录中的 CentOS-Media.repo 到当前目录
[root@localhost yum.repos.d]# vim CentOS-Media.repo
# 使用 vim 编辑 CentOS-Media.repo 文件
# enabled=1
# 启用该仓库,改这一个就行了
[root@localhost ~]# yum -y install vsftpd dhcp syslinux tftp-server
# 使用 yum 安装 vsftpd、dhcp、syslinux 和 tftp-server 软件包
[root@localhost yum.repos.d]# vim /etc/xinetd.d/tftp
# 使用 vim 编辑 TFTP 服务配置文件,修改 disable = no
[root@localhost yum.repos.d]# systemctl start tftp
# 启动 TFTP 服务
[root@localhost yum.repos.d]# cd /media/cdrom/images/pxeboot/
# 切换到 CDROM 中 PXE 引导文件的目录
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
# 将 initrd.img 和 vmlinuz 文件复制到 TFTP 服务器的目录中
[root@localhost pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 将 pxelinux.0 文件复制到 TFTP 服务器的目录中
[root@localhost pxeboot]# ll /var/lib/tftpboot/
# 显示 TFTP 服务器目录中的文件列表
# -rw-r--r--. 1 root root 52584760 4月 12 22:13 initrd.img
# -rw-r--r--. 1 root root 26759 4月 12 22:15 pxelinux.0
# -rwxr-xr-x. 1 root root 6639904 4月 12 22:13 vmlinuz
[root@localhost pxeboot]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.254.0 netmask 255.255.255.0 {
range 192.168.254.13 192.168.254.254;
option domain-name-servers 192.168.254.2;
option domain-name "test.com";
option routers 192.168.60.2;
option broadcast-address 192.168.60.255;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.254.12;
# 指定了PXE启动时TFTP服务器的IP地址
filename "pxelinux.0";
# 指定了PXE启动时使用的引导文件名
}
# 启用 DHCP 服务,使其在系统启动时自动启动
[root@xuanzi pxeboot]# systemctl enable dhcpd
# 启动 DHCP 服务
[root@xuanzi pxeboot]# systemctl start dhcpd
# 使用 netstat 命令查看当前系统中的 DHCP 相关端口
[root@xuanzi pxeboot]# netstat -anpu | grep dhcp
# 创建 PXE 引导配置文件存放目录
[root@xuanzi pxeboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
# 使用 vim 编辑 PXE 引导的默认配置文件
[root@xuanzi pxeboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.254.12/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.254.12/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.254.12/centos7
# 在最终安装之前,请一定确保 以下三个服务均已启动
[root@localhost pxeboot]# systemctl restart vsftpd
[root@localhost pxeboot]# systemctl restart tftp
[root@localhost pxeboot]# systemctl restart dhcpd
然后,新建一个 CentOS7 系统,内存至少 2G,并且关闭 VM 自带 DHCP 服务
自动 PXE 部署安装
服务端命令
# 安装 system-config-kickstart 自动生成脚本文件
[root@localhost pxelinux.cfg]# yum -y install system-config-kickstart
# 打开 system-config-kickstart
[root@localhost ~]# system-config-kickstart
然后按照下图步骤安装
开机过程
1:按下电源
2:开机自检(bios)
3:按照bios中设置的引导设备进行引导
4:初始化镜像文件
MBR引导程序
5:内核
应答文件:甲问的东西,乙提前写好放到文件里,就直接是文件回答
标签:--,root,192.168,yx,initrd,PXE,小阿轩,localhost From: https://blog.csdn.net/2401_83435725/article/details/139077676小阿轩yx-PXE 高效批量网络装机