这里是工作中对一个pxe装机需求测试记录,所有操作都是在笔记本电脑上VMware虚拟机中实现,内容仅供参考。

环境介绍:

1、PXE测试服务器为一台1c2g的VMware虚拟机,网络模式为NAT模式,操作系统为CentOS7.9,IP地址为192.168.1.11。

2、需要准备一个CentOS7.9的ISO镜像包。

3、PXE服务其实是通过http/ftp、TFTP、DHCP服务来实现,这里安装在一台服务器上,可以分开部署。

 

搭建PXE服务器

1、配置本地yum源,这里不做介绍,可以参考:“yum本地源配置”。这里我们将本地源的挂载目录配置为:/mnt/cdrom

     它主要的作用是用来安装软件和提供远程服务器需要的系统文件。

 

2、安装httpd,pxe装机需要用到httpd服务的功能。这里使用httpd,ftp跟httpd几乎一样。

yum -y install httpd

 

3、创建一个存放系统镜像文件目录,然后把镜像文件cp到该目录中。

mkdir /var/www/html/centos7
cp -a /mnt/cdrom/* /var/www/html/centos7/

 

4、启动httpd,设置开机启动。

systemctl start httpd
systemctl enable httpd

 

5、安装TFTP服务,修改配置文件并启动。这里修改一下tftp的根目录,因为还需要测试ubuntu系统,这里做一个区分,如果只安装一个系统,可以不用修改。

yum -y install tftp-server
vim /etc/xinetd.d/tftp
      #将disable=yes 修改为 
       disable=no
      #将 server_args = -s /var/lib/tftpboot 修改为
       server_args = -s /var/lib/tftpboot/centos7 -c

vim /usr/lib/systemd/system/tftpd.service
      #将 ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot  修改为
       ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot/centos7

systemctl daemon-reload
systemctl restart tftp
systemctl enable tftp

 

6、安装PXE引导程序。

yum -y install syslinux

 

7、将linux内核、初始化镜像文件和pxe引导文件cp到tftp目录中。

cp /mnt/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
cp /mnt/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/centos7

 

8、创建启动菜单目录。

mkdir /var/lib/tftpboot/centos7/pxelinux.cfg

 

9、配置启动菜单,启动菜单分为典型启动菜单和无人值守启动菜单。

     无人值守菜单

cat  <<EOF > /var/lib/tftpboot/centos7/pxelinux.cfg/default
default auto
prompt 0
label auto
    kernel vmlinuz
    append initrd=initrd.img method=http://192.168.1.11/centos7 ks=http://192.168.1.11/centos7/ks.cfg
EOF

    

    典型启动菜单,典型菜单在安装好dhcp后就可以安装系统了。

cat  <<EOF > /var/lib/tftpboot/centos7/pxelinux.cfg/default
default auto
prompt 0
label auto
    kernel vmlinuz
    append initrd=initrd.img method=http://192.168.1.11/centos7
EOF

 

10、安装DHCP服务器,并且添加配置,启动。客户端会请求到dhcp服务器,dhcp服务器会提供给客户端IP信息、tftp信息、pxe引导文件信息等。所以,在客户端网络环境中,不要配置其他的dhcp服务器了。

yum -y install dhcp
cat <<EOF >> /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;         #dhcp服务为客户端分配的ip范围 
    option domain-name-servers 8.8.8.8;        #dns
    option domain-name "internal.example.org"; 
    option routers 192.168.1.1;                #网关
    option broadcast-address 192.168.1.255;    #广播
    default-lease-time 21600;                  #租约时间,默认值是600,单位是秒
    max-lease-time 43200;                      #最大租约时间
    next-server 192.168.1.11;                  #指定TFTP服务器的地址
    filename "pxelinux.0";                     #指定PXE引导程序的文件名
}
EOF
systemctl start dhcpd
systemctl enable dhcpd

 

 

11、准备ks.cfg文件,注意文件存放位置。这个是为了在安装系统的时候,自动去做相应配置,不需要人工干预,典型启动就不需要这个文件。第一次或者有cp此文件有问题的,建议通过图形界面,安装system-config-kickstart,自己配置保存一个文件。

cat <<EOF > /var/www/html/centos7/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password 
rootpw --iscrypted $1$Q/XYvFAh$qdLAUR8q7c3jjaGmefO5F/
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.1.11/centos7"
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot --fstype="xfs" --size=200
part / --fstype="xfs" --size=18980

%post --interpreter=/bin/bash
cd /etc/yum.repos.d
rm -rf *
echo -e "[base]" > base.repo
echo -e "baseurl=ftp://192.168.1.11/centos7" >> base.repo
echo -e "enabled=1" >> base.repo
echo -e "gpgcheck=0" >> base.repo
%end
#下面是手动添加的,保存出来的文件没有,意思就是最小化安装系统,如果需要安装其他包,可以写在%packages下面
%packages
@^minimal
%end
EOF

上面文件中root密码是1q2w3e4r

 

12、图形界面保存ks.cfg。

       12.1、安装kickstart

yum -y install system-config-kickstart

      12.2、打开kickstart

puppetee 搭建 搭建pxe环境_linux

 

     12.3、基本配置,根据自己的需求选择。

puppetee 搭建 搭建pxe环境_puppetee 搭建_02

 

    12.4、安装方法,选择http,如果你搭建的ftp就选ftp。

puppetee 搭建 搭建pxe环境_服务器_03

 

     12.5、引导装载程序选择安装

puppetee 搭建 搭建pxe环境_服务器_04

 

     12.6、分区信息,选择清除主引导记录,添加好自己的分区信息。

puppetee 搭建 搭建pxe环境_服务器_05

 

     12.7、网络添加dhcp

puppetee 搭建 搭建pxe环境_centos_06

 

     12.8、认证

puppetee 搭建 搭建pxe环境_服务器_07

 

 

    12.9、禁用防火墙,根据需求,可以不禁用。

puppetee 搭建 搭建pxe环境_服务器_08

 

 

     12.10、根据需求,选择是否安装图形界面

puppetee 搭建 搭建pxe环境_linux_09

 

     12.11、最后根据自己的需求,写入脚本信息,可以不写,我这个是按照上面的ks.cfg文件截图的,其他没截图的均为默认。

puppetee 搭建 搭建pxe环境_puppetee 搭建_10

 

     12.12、最后保存文件即可

puppetee 搭建 搭建pxe环境_puppetee 搭建_11

 

 

测试安装

    1、关闭vmware中NAT模式网卡的dhcp服务。

    

puppetee 搭建 搭建pxe环境_服务器_12

 

 

puppetee 搭建 搭建pxe环境_puppetee 搭建_13

 

     2、创建一个虚拟机,不选择安装镜像,至少配置2g内存,硬盘记得配置为ks.cfg文件中配置分区的总和大小以上,以上ks文件只需要20G。

     3、然后直接运行虚拟机,正常情况下,它会自动安装好操作系统并重启。

puppetee 搭建 搭建pxe环境_服务器_14

 

PXE安装CentOS7的系统介绍就到这里,ubuntu的配置约有不同,可以参考:PXE装机服务搭建(安装ubuntu)