PXE(Preboot eXecution Environment)环境搭建

1、PXE环境安装所需要用到的软件:dhcpd、tftp-server、http(ftp)、syslinux

2、PXE 执行流程:

(1) 设置拥有pex功能的客户端主机开机启动项为网络启动,一般默认都此选项,如果没有可自行设置bios启动项
(2) 客户端开机之后进入网络启动,此时客户端没有IP地址需要发送广播报文(pxe网卡内置dhcp客户端程序),dhcp服务器相应客户端请求,分配给客户端相应的IP地址与掩码等信息
(3) 客户端得到IP地址之后,与tftp通信,下载pxelinux.0,default文件,根据default指定的vmlinuz,initrd.img启动系统内核,并下载指定的ks.cfg文件
(4) 根据ks.cfg文件去文件共享服务器(http/ftp/nfs)上面下载RPM包开始安装系统,注意此时的文件服务器是提供yum服务器的功能的。


PXE执行流程

3、搭建PXE环境

实验环境背景:

在VMware虚拟机环境下搭建
使用linux系统:CentOS Linux release 7.6.1810 (Core)
软件环境:dhcp、tftp-server、httpd服务使用1台虚拟机
使用的网段 :192.168.2.0/24
网关地址:192.168.2.1
DNS地址:未使用

(1) 下载需要用到的软件包dhcp,tftp-server、httpd、syslinux

yum install dhcp tftp-server httpd syslinux -y

(2) 配置dhcp 服务

配置dhcp注意事项:

dhcp配置文件中,结尾要加 “ ;”
必须指明默认网关(option routers ):option routers 192.168.2.1;
必须指明 文件获取地址: next-server 192.168.2.1;
必须指明要获取的文件名: filename "pxelinux.0";

[root@node2 ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
subnet 192.168.2.0  netmask 255.255.255.0 {
    range 192.168.2.10 192.168.2.20;
    option routers 192.168.2.1;
    filename "pxelinux.0";
    next-server 192.168.2.1;
    default-lease-time 600;
    max-lease-time 7200;
     }
[root@node2 ~]# systemctl start dhcpd
[root@node2 ~]# systemctl status dhcpd

(2) 配置tftp-server 服务

将文件 中的disable = yes 改为no

[root@node2 ~]# cat /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            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot 
    disable         = no
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}
[root@node2 ~]# 

(3)复制用用到的文件到 /var/lib/tftpboot

[root@node2 ~]# mkdir /media/cdrom
[root@node2 ~]# mount /dev/sr0 /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

[root@node2 /]# cp -a /media/cdrom/isolinux/{boot.msg,initrd.img,vmlinuz,vesamenu.c32} /var/lib/tftpboot/
[root@node2 /]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@node2 /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

编辑 vim /var/lib/tftpboot/pxelinux.cfg/default 文件,修改以下4项内容 ,其余保持配置不变。

[root@node1 ~]# cat -n /var/lib/tftpboot/pxelinux.cfg/default
     1  default linux  #在首行添加此信息
     2  #default vesamenu.c32  #注释此行
    62  label linux
    63    menu label ^Install CentOS 7
    64    kernel vmlinuz
    65  append initrd=initrd.img  ks=http://192.168.2.1/centos7.ks #添加此行内容
    66  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet  #注释此行内容
[root@node1 ~]# 

(4)配置httpd 服务

将系统光盘镜像挂载至httpd 服务默认路径的一个文件夹内,名字随意

[root@node2 /]# mkdir /var/www/html/centos7
[root@node2 /]# umount /dev/sr0 
[root@node2 /]# mount /dev/sr0 /var/www/html/centos7/
mount: /dev/sr0 is write-protected, mounting read-only
[root@node2 /]# 

将kickstart 文件放置在/var/www/html/ 目录下,并编辑文件

[root@node2 /var/www/html]# cat centos7.ks 
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.2.1/centos7" #此处指向httpd提供镜像文件的地址
# Use text mode install
text
# Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=eth0  --noipv6 --activate
network  --hostname=localhost.localdomain

# Reboot after installation
reboot
# Root password
rootpw --iscrypted $1$16PXgd.m$C4vE6OJCMGfQVadgm0DSe.
# SELinux configuration
selinux --disabled
# System services
services --enabled="chronyd"
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --fstype="swap" --ondisk=sda --size=1024
part / --asprimary --fstype="ext4" --ondisk=sda --size=10240
part /boot --fstype="ext4" --ondisk=sda --size=1024

%packages
@core
chrony
kexec-tools

%end

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

%end
[root@node2 /var/www/html]# 

至此Centos 7 的PXE 环境就算搭建完成了。

注意:在使用客户端测试时,内存不能小于2G,否则会提示 空间不足,切记。

kickstart 文件生成的两种方式:

第一种:在拥有desktop环境的系统下安装system-config-kisckstart软件,然后执行system-config-kisckstart命令后,会出现图形界面,图形编辑

第二种方式 :手敲 kickstart文件,参考网站:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options

或者百度查找别人写好的kickstart文件,但这不一定适应你的电脑环境。

你可能感兴趣的:(PXE(Preboot eXecution Environment)环境搭建)