PXE简介

PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。

PXE的工作流程:

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

实验环境:

虚拟机:VMware® Workstation 15 Pro

均使用NAT连接   网段为192.168.1.0/24

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

!! 使用支持PXE的网卡

!!关闭软件自带的DHCP服务

PXE 服务器 ---- Centos 7.4

IP地址:192.168.1.1/24

网关: 192.168.1.254

版本如下

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下

[root@localhost ~]# systemctl stop firewalld         //关闭防火墙
[root@localhost ~]# setenforce //临时关闭Selinux,重启失效

一、部署DHCP

安装以下:

[root@localhost ~]#yum install dhcp -y

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  1、复制模板

  Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  2、编辑配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//从47行开始编辑
subnet 192.168.1.0 netmask 255.255.255.0 { //修改网段和掩码
range 192.168.1.210 192.168.1.215; //分配地址池
option domain-name-servers 192.168.1.1; //指定dns服务器
# option domain-name "internal.example.org"; //注释此行
option routers 192.168.1.254; //指定网关
option broadcast-address 192.168.1.255; //广播地址
default-lease-time ;
max-lease-time ;
next-server 192.168.1.1; //指定下一跳---TFTP
filename "pxelinux.0"; //指定去下载一个pxelinux.0文件
}

    3、重启DHCP并开启自启动

[root@localhost ~]# systemctl restart 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.

二、部署TFTP

安装以下:

[root@localhost ~]# yum install tftp-server xinetd -y

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  1、编辑配置文件

[root@localhost ~]# vim /etc/xinetd.d/tftp 

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  2、重启TFTP并开启自启动

[root@localhost ~]# systemctl restart tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# systemctl enable xinetd

三、安装Syslinux

  安装如下:

[root@localhost ~]# yum install syslinux -y

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

四、部署Kickstart

  1、配置ks.cfg文件

//ks.cfg的模板在/root下的anaconda-ks.cfg文件

a、创建ks.cfg存放目录

[root@localhost ~]# mkdir /pxe

b、复制模板

[root@localhost ~]# cp /root/anaconda-ks.cfg /pxe/ks.cfg

c、编辑ks.cfg

[root@localhost ~]# vim /pxe/ks.cfg 

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

关键字 含义
install 告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。
url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>
nfs 从指定的NFS服务器安装。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文本模式安装。
lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-
keyboard 设置系统键盘类型。keyboard us
zerombr 清除mbr引导信息。
bootloader 系统引导相关配置。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
--driveorder,指定在BIOS引导顺序中居首的驱动器。
--append=,指定内核参数.要指定多个参数,使用空格分隔它们。
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。
static方法要求在kickstart文件里输入所有的网络信息。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
--ip=,要安装的机器的IP地址.
--gateway=,IP地址格式的默认网关.
--netmask=,安装的系统的子网掩码.
--hostname=,安装的系统的主机名.
--onboot=,是否在引导时启用该设备.
--noipv6=,禁用此设备的IPv6.
--nameserver=,配置dns解析.
timezone 设置系统时区。timezone --utc Asia/Shanghai
authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512 启用shadow文件。
rootpw root密码
clearpart 清空分区。clearpart --all --initlabel
--all 从系统中清除所有分区,--initlable 初始化磁盘标签
part 磁盘分区。
part /boot --fstype=ext4 --asprimary --size=
part swap --size=
part / --fstype=ext4 --grow --asprimary --size=
--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。
--asprimary,强迫把分区分配为主分区,否则提示分区失败。
--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。
firstboot 负责协助配置redhat一些重要的信息。
firstboot --disable
selinux 关闭selinux。selinux --disabled
firewall 关闭防火墙。firewall --disabled
logging 设置日志级别。logging --level=info
reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。

d、给予ks.cfg可读权限

[root@localhost ~]# chmod +r /pxe/ks.cfg
[root@localhost ~]# ll /pxe/ks.cfg //列出ks.cfg的详细属性
-rw-r--r--. root root Aug : /pxe/ks.cfg

  2、复制内核文件

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:

a、创建镜像下载目录

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

b、复制内核文件

//从挂载的光驱里面复制内核文件:     //我挂载的是mnt
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost ~]# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

//复制syslinux的pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux. /var/lib/tftpboot/

c、编辑应答文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

d、复制光驱里的文件到下载目录

[root@localhost ~]# cp -rf /mnt/* /pxe/cdrom/                  //东西很多,要复制2~3分钟左右

五、部署NFS

  1、安装NFS如下

[root@localhost ~]# yum install nfs-utils -y

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  2、编辑NFS配置文件

[root@localhost ~]# vim /etc/exports

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

  3、重启NFS并加入自启动

 

[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

!!再次提醒,注意防火墙,会影响效果

!!要么允许要么关闭!

!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下

[root@localhost ~]# systemctl stop firewalld         //关闭防火墙
[root@localhost ~]# setenforce 0 //临时关闭Selinux,重启失效

六、安装虚拟机

 Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

开始安装!

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

安装完成

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

七、我的踩坑记录

问题1:

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

运行内存给的不过,Centos7.3以上的版本貌似要2G及以上才可以

解决方法:关机将运行内存调至2G即可

问题2:

Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4-LMLPHP

无法连接到nfs服务器,nfs服务器格式错误

/var/lib/tftproot/pxelinux.cfg/default  有问题

错误原因

参数格式错误:ks=nfs:192.168.1.1/var/www/html/ks.cfg

正确格式:ks=nfs:192.168.1.1:/var/www/html/ks.cfg

一个不小心参数少打个冒号

解决方法:修改为正确格式即可

本篇文章由博客园博主[伊诺丶]原创,转载请注明出处https://www.cnblogs.com/hinaux/p/Article_2.html
否则将追究法律责任!!

05-15 16:46