centos7实现pxe无人值守自动安装

一、PXE介绍

PXE(Preboot Excution Environment 预启动执行环境)  intel公司研发

基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。

PXE可以引导和安装Windows,linux等多种操作系统

PXE工作原理:

centos7实现pxe无人值守自动安装_第1张图片

原理介绍: 

  1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client

  2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0

  3. Client执行接收到的pxelinux.0文件

  4. Client向TFTP Server发送针对本机的配置信息文件(TFTP 服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

  5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client

  6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统

  7. Client启动Linux内核

  8. Client下载安装源文件,读取自动化安装脚本

二、安装过程

环境准备:

  • 系统centos7.5
  • 关闭selinux
  • 关闭防火墙
  • 所需安装包(dhcp,httpd(nginx或者使用ftp都可以),tftp-server,syslinux)

程序安装:

yum install dhcp tftp-server httpd syslinux   #安装所需软件
systemctl enable dhcpd httpd tftp.socket    #设置开机启动
systemctl start httpd   #启动httpd服务

准备centos镜像源:

mkdir /var/www/html/centos/{6,7}/ -pv   #准备镜像存放目录
vim /etc/fstab   #加下面这行,并保存
/dev/sr0       var/www/html/centos/7   iso9660    defaults   0 0
mount -a      #挂载刚才所添加的目录

准备ks文件:

mkdir /var/www/html/ksdir/{6,7} -pv     #准备ks文件
cp /root/anaconda-ks.cfg  /var/www/html/ksdir/7/ks7_mini.cfg     #拷贝模板
chmod a+r /var/www/html/ksdir/7/ks7_desktop.cfg     #加可读权限
vim /var/www/html/ksdir/7/ks7_desktop.cfg     #配置如下
#version=DEVEL
# Use network installation
url --url="http://192.168.60.xx/centos7"
# Use text mode install 
text
reboot
# System authorization information
auth --enableshadow --passalgo=sha512
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$NZlDw5yTEu79AaT7$slYXYWi2gBTyK4MDsmUsV.lKmsul76.Vs8FJv6MAX/8YtHpQROhpW1f0a2ioo834v4g01pWpMQVxhNhtPfhBl0
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=ningmeng --password=$6$HKbLyKFeh5SNc5GQ$1Pu.e/zWxzqcvinnzRw4MylFgX5pkzStRLQp7U5aMgevpXOfWyOOijTDPtju.cY7b/nvtKLnGF0qlV.I4r1vB. --iscrypted --gecos="ningmeng"
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part swap --fstype="swap" --ondisk=sda --size=2048
part /boot --fstype="xfs" --ondisk=sda --size=1024
part /data --fstype="xfs" --ondisk=sda --size=10240
part / --fstype="xfs" --ondisk=sda --size=5000

%packages
@^minimal
@core
kexec-tools

%end

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

%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

以上ks是我真实使用的配置,有很多同学可能不懂每条配合的含义,可以点这条链接  kickstart配置文件详解

配置dhcp服务:

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf   #拷贝模板
vim /etc/dhcp/dhcpd.conf    #配置如下
option domain-name "luckynm.cn";   #域名,如果没特殊要求可以随便写
option domain-name-servers 114.114.114.114,1.1.1.1;     #dns服务器地址
option routers 192.168.30.200;    
default-lease-time 86400;
max-lease-time 100000;
subnet 192.168.60.0 netmask 255.255.255.0 {
        range 192.168.60.10 192.168.60.100;     #client端获取地址的起始与结束ip
        option routers 192.168.60.254;
        next-server 192.168.60.xx;     #server地址,也就是本机的ip    
        filename "pxelinux.0";      #获取的引导文件
}
systemctl start dhcpd    #启动dhcp服务

准备PXE相关文件:

mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

vim /var/lib/tftpboot/pxelinux.cfg/default   #启动菜单配置如下
default menu.c32     #启动是菜单样式
timeout 600

menu title  Auto Install CentOS

label desktop
  menu label Install ^Desktop CentOS 7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.30.7/ksdir/7/ks7_desktop.cfg

label mini
  menu label Install ^Mini CentOS 7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.30.7/ksdir/7/ks7_mini.cfg

label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff

menu end

[root@lemon 7]#tree /var/lib/tftpboot/    #目录下文件格局如下
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

三、客户端测试安装

以上步骤就是篇日志pxe服务器的过程,如果测试的话,可以直接在vmware新建一个虚拟机启动即可(注意:不需要指定镜像)

centos7实现pxe无人值守自动安装_第2张图片

 

你可能感兴趣的:(centos7,pxe自动安装)