搭建PXE网络装机服务器(实验详解)
概述
PXE(Preboot Execution Environment)是一种计算机网络协议,它允许计算机通过网络从远程服务器启动和安装操作系统,而无需使用本地存储设备。PXE网络装机是一种常见的自动化操作系统部署方式,特别适用于大规模计算机系统管理、服务器集群部署、虚拟化环境以及无人值守的安装场景。
优点
集中管理: 通过PXE网络装机,管理员可以集中管理操作系统镜像、引导加载器和安装文件。这样可以确保所有部署的系统都使用相同的标准配置,减少了配置不一致性和混乱。 快速部署: 使用PXE网络装机,可以快速部署大量的计算机系统。无需为每台计算机手动插入安装介质,节省了大量时间。 减少硬件需求: 由于PXE网络装机使用网络进行安装,不需要物理介质(如光盘或USB驱动器),从而节省了硬件成本和资源。
搭建需要满足的需求
若要搭建 PXE 网络体系,必须满足以下几个前提条件: 客户端: 1.客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。 服务端: 2.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。 3.服务器要通过 TFTP服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载
搭建 PXE 远程安装服务器
1.安装TFTP服务
yum -y install tftp-server xinetd
2.修改TFTP服务的配置文件并启动
vim /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 = no
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
设置后启动服务
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
安装并且启动DHCP服务
1.安装DHCP
yum -y install dhcp
2.修改DHCP配置文件并启动服务
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf.bak
vim /etc/dhcp/dhcpd.conf
next-server 192.168.42.140;
filename "pxelinux.0";
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.122.1 netmask 255.255.255.255 {
}
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.88 192.168.42.188;
option routers 192.168.42.140;
}
修改完成文件后保存退出,启动dhcp服务
systemctl start dhcpd
准备 Linux 内核、初始化镜像文件
打开虚拟机设置连接光盘镜像
df -Th | grep /dev/sr0 #查看是否连接成功
mount /dev/sr0 /mnt #挂载光盘镜像
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ #复制 Linux系统的内核文件 到TFTP根目录下
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
准备 PXE 引导程序
yum -y install syslinux #PXE引导程序由软件包 syslinux 提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制 PXE引导程序 到TFTP根目录下
安装FTP服务,准备CentOS 7 安装源
yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
systemctl start vsftpd
配置启动菜单文件
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg #需要在ftfpboot目录下创建pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default #在pxelinux.cfg目录下创建default并编辑配置文件
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.42.140/centos7 ks=ftp://192.168.42.140/ks.cfg
#图形安装(默认)引导入口
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.42.140/centos7
#文本安装引导入口
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.42.140/centos7
#救援模式引导入口
关闭防火墙,验证 PXE 网络安装
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
以上 PXE 网络安装已经部署完成,如果要实现自动化安装请继续往下看
自动化安装linux系统
1.安装 system-config-kickstart 工具
yum install -y system-config-kickstart
2.打开“Kickstart 配置程序”窗口
通过桌面菜单“应用程序”-->“系统工具”-->“Kickstart” 打开
3.配置kickstart选项
/bin/bash
rm -rf /etc/yum.repos.d/*
echo ‘[local]
name=local
baseurl=ftp://192.168.42.140/centos7
enabled=1
gpgcheck=0’ > /etc/yum.repos.d/local.repo
4.保存配置文件
点击左上角文件然后保存到/root下
保存完成后将 /root/ks.cfg 复制到 /var/ftp/
然后配置需要安装的软件包
cp /root/ks.cfg /var/ftp/ks.cfg
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
%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
然后修改 TFTP 配置文件,添加以下内容
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.42.140/centos7 ks=ftp://192.168.42.140/ks.cfg
#添加 ks 引导参数以指定 ks.cfg 应答文件的 URL 路径
修改文件权限
chmod 777 /root/ks.cfg
chmod 777 /var/ftp/ks.cfg
5.验证无人值守安装
当客户机每次以PXE方式引导时,将自动下载ks.cfg应答配置文件,然后根据其中的设置安装CentOS 7 系统,而无须手工干预。
然后开启虚拟机会自动安装无需我们做任何事情,直到安装结束
进登入界面后使用root用户登入,密码是我们Kickstart 配置文件里的密码