利用PXE和KickStart实现无人值守安装操作系统

一、PXE 和 KickStart 简介

        PXE(Preboot Execution Environment)是一种计算机网络协议,用于在计算机启动时通过网络获取操作系统镜像并进行远程安装。通过PXE,计算机可以在没有本地存储设备的情况下,从网络中启动并加载操作系统。这使得系统管理员可以远程管理大量计算机,简化了操作系统的部署和维护过程。PXE通常与DHCP(Dynamic Host Configuration Protocol)和TFTP(Trivial File Transfer Protocol)一起使用,以提供IP地址分配和文件传输功能。

        Kickstart是一种自动化操作系统安装工具,主要用于Linux系统。它使用一个文本文件(通常称为Kickstart文件)来定义安装过程中的配置选项和步骤。通过Kickstart,系统管理员可以预先定义操作系统的安装选项,如分区、软件包安装、网络设置、用户账户等,从而实现批量和一致性的操作系统部署。
        Kickstart文件包含一系列的命令和参数,用于指定安装过程中的各种配置。这些文件可以通过网络(如HTTP、FTP)或本地介质(如光盘、USB)传递给安装程序。一旦Kickstart文件被提供给安装程序,它将自动按照文件中定义的配置选项进行安装,而无需用户手动干预。
        Kickstart工具可以大大简化大规模部署和自动化安装过程,提高效率和准确性。它广泛应用于服务器环境、虚拟化环境以及需要频繁进行操作系统安装的场景。

二、PXE 工作原理

利用PXE和KickStart实现无人值守安装操作系统_第1张图片

PXE(Preboot Execution Environment)的工作原理如下:

  1.  启动过程:计算机在启动时通过BIOS或UEFI发出PXE启动请求,并广播该请求到网络中的所有设备。
  2. DHCP提供IP地址:PXE客户端接收到广播请求后,会通过DHCP(Dynamic Host Configuration Protocol)协议向DHCP服务器发送请求,以获取IP地址和其他网络配置信息。
  3. DHCP回应:DHCP服务器接收到PXE客户端的请求后,会分配一个可用的IP地址,并将其作为回应发送给PXE客户端。
  4. TFTP加载启动文件:PXE客户端通过TFTP(Trivial File Transfer Protocol)从网络中的TFTP服务器下载启动文件(通常称为pxelinux.0)。
  5. 启动文件执行:PXE客户端执行下载的启动文件,该文件包含了操作系统镜像的位置和其他配置信息。
  6. 操作系统镜像下载:根据启动文件中指定的位置,PXE客户端通过TFTP从网络中的TFTP服务器下载操作系统镜像文件。
  7. 操作系统加载和安装:一旦操作系统镜像文件下载完成,PXE客户端会将其加载到计算机的内存中,并开始执行操作系统的安装过程。  

三、搭建 PXE 服务器

1. 环境准备

        实验环境:VMware Workstation 16

        系统平台:CentOS 7.9 (最小化安装)

        网络模式:NAT模式(共享主机的IP地址)

        DHCP / TFTP IP:192.168.188.145

        HTTP / FTP / NFS IP:192.168.188.145

        防火墙已关闭/iptables: Firewall is not running.

        SELINUX=disabled

2. 安装前准备

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPADDR=192.168.188.145
PREFIX=24
GATEWAY=192.168.188.2
DNS1=114.114.114.114
DNS2=8.8.8.8
DEVICE="ens33"
ONBOOT="yes"

[root@localhost ~]# systemctl restart network

# 配置yum源并按章软件包
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum install -y dhcp tftp tftp-server syslinux wget vsftpd pykickstart

3. dhcp服务器配置

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
#确保配置文件内容如下
ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
 
# A slightly different configuration for an internal subnet.
 subnet 192.168.188.0 netmask 255.255.255.0 
{
   range 192.168.188.10 192.168.188.240;
   option domain-name-servers 192.168.188.2;
   option domain-name "server1.example.com";
   option routers 192.168.188.2;
   option broadcast-address 192.168.188.255;
   default-lease-time 600;
   max-lease-time 7200;
 
   # PXE SERVER IP
   next-server 192.168.188.145;     # DHCP server ip
   filename "pxelinux.0";
 }

4. TFTP服务准备

[root@localhost ~]# vim /etc/xinetd.d/tftp
#修改内容如下
service tftp
{
     socket_type          = dgram
     protocol                = udp
     wait                      = yes
     user                    = root
     server                  = /usr/sbin/in.tftpd
     server_args             = -s /tftpboot
     disable                 = no
     per_source              = 11
     cps                     = 100 2
     flags                   = IPv4
 }

[root@localhost ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# mkdir /var/lib/tftpboot/netboot

5. VSftpd服务准备

[root@localhost ~]# mount /root/CentOS-7-x86_64-Minimal-2009.iso /mnt
[root@localhost ~]# cp -rf /mnt/* /var/ftp/pub/
# 拷贝系统启动时需要的镜像文件

[root@localhost ~]# cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/ [root@localhost ~]# cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/netboot/ # 创建ks.cfg 文件

[root@localhost ~]# vim /var/ftp/pub/ks.cfg

#platform=x86, AMD64, or Intel EM64T
 #version=DEVEL
 # Firewall configuration
 firewall --disabled
 # Install OS instead of upgrade
 install
 # Use NFS installation media
 url --url="ftp://192.168.188.145/pub/"
 rootpw --plaintext 123456
#root的密码设为123456
 # Use graphical install
 graphical
 firstboot disable
 # System keyboard
 keyboard us
 # System language
 lang en_US
 # SELinux configuration
 selinux disabled
 # Installation logging level
 logging level=info
# System timezone
 timezone Asia/Shanghai
 # System bootloader configuration
 bootloader location=mbr
 clearpart --all --initlabel
 part swap --asprimary --fstype="swap" --size=1024
 part /boot --fstype xfs --size=200
 part pv.01 --size=1 --grow
 volgroup rootvg01 pv.01
 logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
 reboot

%packages
 @core
 wget
 lrzsz
 unzip
 net-tools
 %end

%post
 %end

# 检查语法是否有错误
[root@localhost ~]# ksvalidator /var/ftp/pub/ks.cfg

6. PXE菜单 

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
 default menu.c32
 prompt 0
 timeout 30
 MENU TITLE Togogo.net Linux Training

 LABEL centos7_x64
 MENU LABEL CentOS 7 X64 for newrain
 KERNEL /netboot/vmlinuz
 APPEND  initrd=/netboot/initrd.img inst.repo=ftp://192.168.188.145/pub ks=ftp://192.168.188.145/pub/ks.cfg

7. 重启服务安装测试

[root@localhost ~]# systemctl enable dhcpd vsftpd tftp
[root@localhost ~]# systemctl restart dhcpd vsftpd tftp

利用PXE和KickStart实现无人值守安装操作系统_第2张图片 

 

你可能感兴趣的:(服务器,运维)