Linux 网络服务13-PXE 高效能批量网络装机

一、PXE 简介

1.PXE:Pre-boot Excution Environment,预启动执行环境

PXE:是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 若要搭建 PXE 网络体系,必须要满足以下条件:

  • 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
  • 网络中有一台 DHCP 服务器,以便为客户机分配地址、指定引导文件位置

服务器通过 TFTP(Trivial File Transfer Protocol)简单文件传输协议提供引导镜像文件的下载。

2.PXE 引导相关角色说明

PXE作用:引导装机

Kickstart作用:将安装系统的过程中通过ks.cfg文件中的配置信息,实现自动安装配置达到无人值守自动安装;

TFTP:支持PXE引导的网卡中从tftp服务器端下载pxelinux.0文件,vmlinuz,initrd.img等内核引导文件;

DHCP:PXE引导过程中获首先获取IP地址,并提供pxelinux.0文件位置;

HTTP:用于下载ks.cfg以及系统镜像文件

通用的无人值守做法如下

通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp服务器获取ip和pxelinux.0文件并从tftp服务器上加载相关内核引导文件;同时下载kickstart的cfg配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!

3.环境准备说明

本次测试环境说明:

PXE 服务器:Centos 7.6 基于 VMware 的虚拟机

内部测试 ip(仅主机模式)192.168.100.100

配置服务及安装软件包如下:

  • DHCP
  • TFTP
  • HTTP
  • syslinux 包,提供引导文件

以上所需要的软件包均通过 Yum 安装

[root@pxe ~]# yum -y install dhcp tftp tftp-server syslinux httpd

二、基于 httpd 搭建本地安装源

1.挂载光盘制作源

挂载 Centos7 光盘

[root@pxe ~]# mkdir /media/cdrom

[root@pxe ~]# mount /dev/cdrom /media/cdrom/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@pxe ~]# mkdir  -pv /var/www/html/centos/7/x86_64

mkdir: 已创建目录 "/var/www/html/centos"
mkdir: 已创建目录 "/var/www/html/centos/7"
mkdir: 已创建目录 "/var/www/html/centos/7/x86_64"

绑定挂载到 HTTP 默认目录下

[root@pxe ~]# mount --bind /media/cdrom/ /var/www/html/centos/7/x86_64/

2. kickstart ks.cfg 配置文件准备

以家目录下的anaconda-ks.cfg为模板制作ks文件

[root@pxe ~]# cd /var/www/html/; mkdir ks

[root@pxe html]# cp /root/anaconda-ks.cfg /var/www/html/ks/ks.cfg

[root@pxe html]# vim ks/ks.cfg

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512   //系统验证类型
# Use CDROM installation media
#cdrom
# Install OS instead of upgrade
install                                     //安装系统
# Use network installation
url --url=http://192.168.100.100/centos/7/x86_64    //安装源的位置
# Use graphical install
graphical                                       //采用图形化安装
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'  //默认键盘设置
# System language
lang zh_CN.UTF-8                                //系统默认语言设置

# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate                                     //网卡设置
network  --hostname=huyouba1            //主机名设置

# Root password
rootpw --iscrypted $1$CUu7e71B$4th1cSndALNOclZsWjB0v1
//root密码
# System services
services --enabled="chronyd"
services --disabled="firewalld"         //禁用防火墙
# System timezone
timezone Asia/Shanghai --isUtc          //时间设置
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel

%packages
@^minimal
@core
@development
chrony
kexec-tools
vim
wget
net-tools
httpd
%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end
selinux --disabled                          //    禁用selinux

reboot                                          //安装完成后重启

[root@pxe html]# chmod +r ks/ks.cfg 

以上是我的参考设置,您也可以作为模板只需要简单修改以下几行:

安装的网络镜像地址:url -url = http://192.168.100.100/centos/7/x86_64

安装后的系统密码:rootpw -iscrypted 1 lSeSXuy。$ 7HmGY9vVxEGEGB98qTUuv1

密码可以通过 openssl passwd -1 “PASSWORD”

生成格式是 SHA512 的密码替换上去即可;

另外安装后可以在%packages与其%end之间配置预安装的包等,此处让程序在安装好系统后预安装wegt vim,net-tools,httpd软件包

3.配置启动

[root@pxe ~]# systemctl start httpd

[root@pxe ~]# systemctl enable httpd.service 

三、配置 DHCP 服务

1.配置 DHCP 服务

DHCP 配置文件在 /etc/dhcp/ 目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改

[root@pxe ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf 

[root@pxe ~]# egrep -v "(^$|^#)" /etc/dhcp/dhcpd.conf 

option domain-name "huyouba1.com";
option domain-name-servers 192.168.100.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {
  range dynamic-bootp 192.168.100.100 192.168.100.200;
  option routers 192.168.100.1;
  next-server 192.168.100.100;        //tftpserver
  filename "pxelinux.0";        //引导文件
}

2.启动与查看

[root@pxe ~]# systemctl start dhcpd

[root@pxe ~]# systemctl enable dhcpd

[root@pxe ~]# netstat -utpln |grep dhcp

udp        0      0 0.0.0.0:67              0.0.0.0:*                           9936/dhcpd      

四、配置 TFTP 服务

安装好tftp-server软件包后 默认的数据根目录是/var/lib/tftpboot/ 无须修改,只需要复制一些软件引导文件进来即可

1.相关文件准备

## 拷贝引导文件
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

## 拷贝内核文件
[root@pxe ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

## 拷贝引导菜单
[root@pxe ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/

## 制作引导默认文件
[root@pxe ~]# mkdir -pv /var/lib/tftpboot/pxelinux.cfg

mkdir: 已创建目录 "/var/lib/tftpboot/pxelinux.cfg"

[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg/

[root@pxe pxelinux.cfg]# vim default

default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu

LABEL linux
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.100.100/centos/7/x86_64 ks=http://192.168.100.100/ks/ks.cfg

2.启动配置开机自启

[root@pxe ~]# systemctl start tftp

[root@pxe ~]# systemctl enable tftp

3.TFTP 测试

/var/lib/tftpboot/目录文件结构

[root@pxe tftpboot]# ls

chain.c32  initrd.img  mboot.c32  memdisk  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz

[root@pxe tftpboot]# cd /tmp/

[root@pxe tmp]# ls

[root@pxe tmp]# tftp 192.168.100.100

tftp> get vmlinuz
tftp> quit

[root@pxe tmp]# ls

vmlinuz

五、PXE 无人值守安装测试

1.新建虚拟机,修改 VMware 的网络

和用cdrom安装虚拟的唯一区别是不用挂载镜像,只需要修改新的虚拟机的网络类型为”仅主机(仅主机)网络”如图:

2.安装过程全部自动,不需要手动操作

3.文件下载

ks.cfg文件下载

default文件下载

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦