文章目录

  • 无人值守系统
  • 部署安装
    • 创建PXE服务器虚拟机并设置IP地址
    • 配置本地yum源
    • 安装并配置DHCP服务
    • 安装并配置TFTP服务
    • 安装SYSLinux
    • 复制引导文件
    • 安装并配置vsftpd服务
    • 创建KickStart应答文件
    • 自动部署客户机

无人值守系统

使用光盘镜像来安装Linux系统的方法,坦白讲,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用 PXE + TFTP + FTP/HTTP/NFS + DHCP + Kickstart 服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率。

无人值守安装系统的工作流程:

PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。

Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。

由于当前的客户端主机并没有完整的操作系统,也就不能完成FTP协议的验证了,所以需要使用TFTP协议帮助客户端获取引导及驱动文件。

vsftpd服务程序用于将完整的系统安装镜像通过网络传输给客户端。当然,只要能将系统安装镜像成功传输给客户端即可,因此也可以使用httpd或nginx或nfs来替代vsftpd服务程序。

DHCP服务程序用于为客户端主机分配可用的IP地址,而且这是服务器与客户端主机进行文件传输的基础。


理解PXE原理

kickstart无人值守安装centos,也就是通过网络安装centos系统,而且在安装的过程不需要人工干预系统的安装。系统会按照你配置好的步骤进行安装,而网络安装centos系统必须需要网卡的支持。

网卡要想去下载远程服务器上的相关系统镜像文件,必须支持PXE。

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel设计的协议,它可以使计算机通过网络启动。该协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

既然是通过网络传输,就需要IP地址。也就是说在其启动过程中,客户端请求服务器分配IP地址之后,PXE Client使用TFTP Client 通过TFT协议下载启动安装程序所需的文件。

简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。

下图中介绍了Linux中自动安装系统的详细工作过程:


第一步:PXE Client向DHCP发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,选择基本所有的网卡都支持网络启动。通过PXE BootROM(自启动芯片)会以UDP方式发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。

第二步:DHCP服务器提供信息

DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

第三步:PXE客户端请求下载启动文件

客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

第四步:Boot Server响应客户端请求并传送文件

当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

第五步:请求下载自动应答文件

客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux。如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。

接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

第六步:客户端安装操作系统

将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。

OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。

部署安装

主机名称 操作系统 IP地址 说明
PXE服务器(无人值守系统) RHEL 7 192.168.150.10 引导客户端定制化安装操作系统
客户端 未安装操作系统 - 由PXE服务器引导安装

创建PXE服务器虚拟机并设置IP地址

使用仅主机模式VMnet1虚拟网卡并关闭该网卡的DHCP服务

说明:使用仅主机模式主要是用来模拟实验环境免受其他干扰,关闭该网卡的自带DHCP服务,以防止与在该PXE服务器中配置的DHCP服务相冲突

修改主机名并配置IP

配置本地yum源

因为仅主机模式是无法联网的,也就无法使用网络

为了方便操作使用xshell连接PXE服务器进行后续步骤

挂载

[root@pxe-server ~]# vi /etc/fstab
/dev/sr0 /media iso9660 defaults 0 0
[root@pxe-server ~]# mount -a
mount: /dev/sr0 is write-protected, mounting read-only[root@pxe-server ~]# df -h
…………
/dev/sr0                 792M  792M     0 100% /media[root@pxe-server ~]# ls /media/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

将所需的软件包上传到pxe服务器

# 主要有 http tftp-server createrepo syslinux vstpd 这几个软件包及相关依赖包
[root@pxe-server ~]# ls
anaconda-ks.cfg                                   libxml2-2.9.1-6.el7.5.x86_64.rpm
bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64.rpm  libxml2-python-2.9.1-6.el7.5.x86_64.rpm
createrepo-0.9.9-28.el7.noarch.rpm                lrzsz-0.12.20-36.el7.x86_64.rpm
deltarpm-3.6-3.el7.x86_64.rpm                     mtools-4.0.18-5.el7.x86_64.rpm
dhclient-4.2.5-83.el7.centos.1.x86_64.rpm         python-deltarpm-3.6-3.el7.x86_64.rpm
dhcp-4.2.5-83.el7.centos.1.x86_64.rpm             syslinux-4.05-15.el7.x86_64.rpm
dhcp-common-4.2.5-83.el7.centos.1.x86_64.rpm      tftp-server-5.2-22.el7.x86_64.rpm
dhcp-libs-4.2.5-83.el7.centos.1.x86_64.rpm        vsftpd-3.0.2-29.el7_9.x86_64.rpm

搭建本地yum仓库

[root@pxe-server ~]# yum localinstall deltarpm-3.6-3.el7.x86_64 python-deltarpm-3.6-3.el7.x86_64 libxml2-2.9.1-6.el7.5.x86_64 libxml2-python-2.9.1-6.el7.5.x86_64 createrepo-0.9.9-28.el7.noarch.rpm [root@pxe-server ~]# mkdir /mnt/localyum
[root@pxe-server ~]# cp -r /media/Packages/ /mnt/localyum
[root@pxe-server ~]# mv ./*.rpm /mnt/localyum/Packages/
[root@pxe-server ~]# ls /mnt/localyum/
Packages  [root@pxe-server ~]# createrepo /mnt/localyum/
Spawning worker 0 with 220 pkgs
Spawning worker 1 with 220 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pxe-server ~]# ls /mnt/localyum/
Packages  repodata[root@pxe-server ~]# ls /mnt/localyum/repodata/
5925424320ea9592921ee4406e89c51f0b20a338518d31eed7b8c36f92b56809-other.xml.gz
a0cad8df13f866350ffefeda711d56c5d360c5b09343299a225788c4f27204ca-primary.sqlite.bz2
b9af12b13eadc2b02e239037b000022795803b0cc7572a3c51165d53796810fe-filelists.sqlite.bz2
bdf110e45c9254ccb1c1fd390f0a50c26a02c5f58a12fec5f830fe1bf3f79542-primary.xml.gz
ce60789474cd533249fb1c3c87a281a15d76c0f310092c8453fcf80ee92712be-other.sqlite.bz2
e3c8a8248340cdeee3c1b21686bf4ca511dc14804c6fb70ec6387bf0192bab68-filelists.xml.gz
repomd.xml# 在目录/etc/yum.repos.d下配置本地yum源文件
[root@pxe-server ~]# rm -rf /etc/yum.repos.d/*
[root@pxe-server ~]# vi /etc/yum.repos.d/local.repo
[local]
name="local"
baseurl=file:///mnt/localyum/
gpgcheck=0
enabled=1[root@pxe-server ~]# yum clean all
[root@pxe-server ~]# yum makecache fast
Loaded plugins: fastestmirror
local                                                                                                     | 2.9 kB  00:00:00
local/primary_db                                                                                          | 759 kB  00:00:00
Determining fastest mirrors
Metadata Cache Created[root@pxe-server ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                      repo name                                                     status
local                                                        "local"                                                       440
repolist: 440

安装并配置DHCP服务

[root@pxe-server ~]# yum install dhcp -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-83.el7.centos.1 will be installed
--> Processing Dependency: dhcp-libs(x86-64) = 12:4.2.5-83.el7.centos.1 for package: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
--> Processing Dependency: dhcp-common = 12:4.2.5-83.el7.centos.1 for package: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
--> Processing Dependency: libisc-export.so.169()(64bit) for package: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
--> Processing Dependency: libdns-export.so.1102()(64bit) for package: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
--> Running transaction check
---> Package bind-export-libs.x86_64 32:9.11.4-26.P2.el7_9.5 will be installed
---> Package dhcp-common.x86_64 12:4.2.5-58.el7.centos will be updated
--> Processing Dependency: dhcp-common = 12:4.2.5-58.el7.centos for package: 12:dhclient-4.2.5-58.el7.centos.x86_64
---> Package dhcp-common.x86_64 12:4.2.5-83.el7.centos.1 will be an update
---> Package dhcp-libs.x86_64 12:4.2.5-58.el7.centos will be updated
---> Package dhcp-libs.x86_64 12:4.2.5-83.el7.centos.1 will be an update
--> Running transaction check
---> Package dhclient.x86_64 12:4.2.5-58.el7.centos will be updated
---> Package dhclient.x86_64 12:4.2.5-83.el7.centos.1 will be an update
--> Finished Dependency ResolutionDependencies Resolved=================================================================================================================================Package                          Arch                   Version                                     Repository             Size
=================================================================================================================================
Installing:dhcp                             x86_64                 12:4.2.5-83.el7.centos.1                    local                 515 k
Installing for dependencies:bind-export-libs                 x86_64                 32:9.11.4-26.P2.el7_9.5                     local                 1.1 M
Updating for dependencies:dhclient                         x86_64                 12:4.2.5-83.el7.centos.1                    local                 286 kdhcp-common                      x86_64                 12:4.2.5-83.el7.centos.1                    local                 177 kdhcp-libs                        x86_64                 12:4.2.5-83.el7.centos.1                    local                 133 kTransaction Summary
=================================================================================================================================
Install  1 Package  (+1 Dependent package)
Upgrade             ( 3 Dependent packages)Total download size: 2.2 M
Downloading packages:
---------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            184 MB/s | 2.2 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionUpdating   : 12:dhcp-libs-4.2.5-83.el7.centos.1.x86_64                                                                     1/8 Updating   : 12:dhcp-common-4.2.5-83.el7.centos.1.x86_64                                                                   2/8 Installing : 32:bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64                                                               3/8 Installing : 12:dhcp-4.2.5-83.el7.centos.1.x86_64                                                                          4/8 Updating   : 12:dhclient-4.2.5-83.el7.centos.1.x86_64                                                                      5/8 Cleanup    : 12:dhclient-4.2.5-58.el7.centos.x86_64                                                                        6/8 Cleanup    : 12:dhcp-common-4.2.5-58.el7.centos.x86_64                                                                     7/8 Cleanup    : 12:dhcp-libs-4.2.5-58.el7.centos.x86_64                                                                       8/8 Verifying  : 12:dhcp-common-4.2.5-83.el7.centos.1.x86_64                                                                   1/8 Verifying  : 12:dhcp-4.2.5-83.el7.centos.1.x86_64                                                                          2/8 Verifying  : 12:dhcp-libs-4.2.5-83.el7.centos.1.x86_64                                                                     3/8 Verifying  : 12:dhclient-4.2.5-83.el7.centos.1.x86_64                                                                      4/8 Verifying  : 32:bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64                                                               5/8 Verifying  : 12:dhcp-common-4.2.5-58.el7.centos.x86_64                                                                     6/8 Verifying  : 12:dhcp-libs-4.2.5-58.el7.centos.x86_64                                                                       7/8 Verifying  : 12:dhclient-4.2.5-58.el7.centos.x86_64                                                                        8/8 Installed:dhcp.x86_64 12:4.2.5-83.el7.centos.1                                                                                           Dependency Installed:bind-export-libs.x86_64 32:9.11.4-26.P2.el7_9.5                                                                                Dependency Updated:dhclient.x86_64 12:4.2.5-83.el7.centos.1 dhcp-common.x86_64 12:4.2.5-83.el7.centos.1 dhcp-libs.x86_64 12:4.2.5-83.el7.centos.1Complete![root@pxe-server ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.150.0 netmask 255.255.255.0 {    # 网段及掩码range 192.168.150.50 192.168.150.250;            # 地址池default-lease-time 3600;                       # 指定默认租赁时间的长度,单位是秒filename "pxelinux.0";                       # pxe 启动引导器pxelinux.0文件是由 syslinux 包提供,安装syslinux后,该文件默认在/usr/share/syslinux/目录下,pxelinux.0文件是通过tftp服务传输到客户端的;注意:pxelinux.0文件应放置在目录是相对于tftp服务的根目录(默认为/var/lib/tftpboot/),所以文件的绝对路径就是: /var/lib/tftpboot/pxelinux.0";当然也可以指定为其它的路径。next-server 192.168.150.10;                 # TFTP Server的IP地址(因为TFTP也安装在本机上)
} # 在确认DHCP服务程序的参数都填写正确后,重新启动该服务程序,并将其添加到开机启动项中。这样在设备下一次重启之后,在无须人工干预的情况下,
# 自动为客户端主机安装系统。
[root@pxe-server ~]# systemctl restart dhcpd && systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.# dhcp服务服务器端监听端口67/UDP
[root@pxe-server ~]# ss  -aulntp| grep dhcpd
udp    UNCONN     0      0         *:67                    *:*                   users:(("dhcpd",pid=2589,fd=7))
[root@pxe-server ~]# firewall-cmd --permanent --add-port=67/udp
success
[root@pxe-server ~]# firewall-cmd --reload
success
[root@pxe-

安装并配置TFTP服务

vsftpd是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而TFTP作为一种基于UDP协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此接下来配置TFTP服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。

# 安装
[root@pxe-server ~]# yum install tftp-server -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tftp-server.x86_64 0:5.2-22.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=================================================================================================================================Package                          Arch                        Version                           Repository                  Size
=================================================================================================================================
Installing:tftp-server                      x86_64                      5.2-22.el7                        local                       47 kTransaction Summary
=================================================================================================================================
Install  1 PackageTotal download size: 47 k
Installed size: 64 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : tftp-server-5.2-22.el7.x86_64                                                                                 1/1 Verifying  : tftp-server-5.2-22.el7.x86_64                                                                                 1/1 Installed:tftp-server.x86_64 0:5.2-22.el7
Complete!# 配置
[root@pxe-server ~]# vi /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             = dgramprotocol                = udpwait                    = yesuser                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpbootdisable                 = noper_source              = 11cps                     = 100 2flags                   = IPv4
}# 重启并加入开机自启
[root@pxe-server ~]# systemctl restart tftp && systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.# TFTP服务程序默认使用的是UDP协议,占用的端口号为69,所以在生产环境中还需要在firewalld防火墙管理工具中写入使其永久生效的允许策略,以便让客户端主机顺利获取到引导文件。
[root@pxe-server ~]# ss  -aulntp| grep tftpd
udp    UNCONN     0      0        :::69                   :::*                   users:(("in.tftpd",pid=2682,fd=0),("systemd",pid=1,fd=50))
[root@pxe-server ~]# firewall-cmd --permanent --add-port=69/udp
success
[root@pxe-server ~]# firewall-cmd --reload
success

安装SYSLinux

SYSLinux是一个用于提供引导加载的服务程序。与其说SYSLinux是一个服务程序,不如说更需要里面的引导文件,在安装好SYSLinux服务程序软件包后,/usr/share/syslinux目录中会出现很多引导文件。

[root@pxe-server ~]# yum install syslinux -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package syslinux.x86_64 0:4.05-15.el7 will be installed
--> Processing Dependency: mtools for package: syslinux-4.05-15.el7.x86_64
--> Running transaction check
---> Package mtools.x86_64 0:4.0.18-5.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=================================================================================================================================Package                       Arch                        Version                              Repository                  Size
=================================================================================================================================
Installing:syslinux                      x86_64                      4.05-15.el7                          local                      990 k
Installing for dependencies:mtools                        x86_64                      4.0.18-5.el7                         local                      203 kTransaction Summary
=================================================================================================================================
Install  1 Package (+1 Dependent package)Total download size: 1.2 M
Installed size: 2.6 M
Downloading packages:
---------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            381 MB/s | 1.2 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : mtools-4.0.18-5.el7.x86_64                                                                                    1/2 Installing : syslinux-4.05-15.el7.x86_64                                                                                   2/2 Verifying  : mtools-4.0.18-5.el7.x86_64                                                                                    1/2 Verifying  : syslinux-4.05-15.el7.x86_64                                                                                   2/2 Installed:syslinux.x86_64 0:4.05-15.el7                                                                                                  Dependency Installed:mtools.x86_64 0:4.0.18-5.el7                                                                                                   Complete![root@pxe-server ~]# ls /usr/share/syslinux/
altmbr.bin     diag          gptmbr_f.bin  int18.com           kbdmap.c32  memdump.com   reboot.c32      vesainfo.c32
altmbr_c.bin   disk.c32      gpxecmd.c32   isohdpfx.bin        linux.c32   meminfo.c32   rosh.c32        vesamenu.c32
altmbr_f.bin   dmitest.c32   gpxelinux.0   isohdpfx_c.bin      ls.c32      menu.c32      sanboot.c32     vpdtest.c32
cat.c32        dosutil       gpxelinuxk.0  isohdpfx_f.bin      lua.c32     pcitest.c32   sdi.c32         whichsys.c32
chain.c32      elf.c32       hdt.c32       isohdppx.bin        mboot.c32   pmload.c32    sysdump.c32     zzjson.c32
cmd.c32        ethersel.c32  host.c32      isohdppx_c.bin      mbr.bin     poweroff.com  syslinux64.exe
config.c32     gfxboot.c32   ifcpu64.c32   isohdppx_f.bin      mbr_c.bin   pwd.c32       syslinux.com
cpuid.c32      gptmbr.bin    ifcpu.c32     isolinux.bin        mbr_f.bin   pxechain.com  syslinux.exe
cpuidtest.c32  gptmbr_c.bin  ifplop.c32    isolinux-debug.bin  memdisk     pxelinux.0    ver.com

复制引导文件

首先需要把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。

另外在RHEL 7系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。

[root@pxe-server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  # 是加载系统引导文件
[root@pxe-server ~]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/  # 是可引导的、压缩的内核文件
[root@pxe-server ~]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/  # 是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程的文件系统
[root@pxe-server ~]# cp /media/isolinux/vesamenu.c32 /var/lib/tftpboot/  # 用于设置菜单模块
[root@pxe-server ~]# cp /media/isolinux/boot.msg /var/lib/tftpboot/  # 引导模块的菜单选项

然后在TFTP服务程序的根目录中新建pxelinux.cfg目录,虽然该目录的名字带有后缀,但依然也是目录,而非文件!将系统光盘中的开机选项菜单复制到该目录中,并命名为default。这个default文件就是开机时的选项菜单

[root@pxe-server ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@pxe-server ~]# cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default# 默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的
# 选项,未免与我们的主旨(无人值守安装)相悖。那么现在需要编辑这个default文件,把第1行的default参数修改为linux,这样系统在开机时就会默认
# 执行那个名称为linux的选项了。对应的linux选项大约在64行,我们将默认的光盘镜像安装方式修改成FTP文件传输方式,并指定好光盘镜像的获取网址以及
# Kickstart应答文件的获取路径# 分别对应第1行和第64行
[root@pxe-server ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default linux   append initrd=initrd.img inst.stage2=ftp://192.168.150.10 ks=ftp://192.168.150.10/pub/ks.cfg quiet # ftp服务器地址(搭建在本机)

安装并配置vsftpd服务

在这套无人值守安装系统的服务中,光盘镜像是通过FTP协议传输的,因此势必要用到vsftpd服务程序。当然,也可以使用httpd服务程序来提供Web网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用Web网站服务来提供光盘镜像,一定记得将上面配置文件中的光盘镜像获取网址和Kickstart应答文件uri进行修改。

# 安装
[root@pxe-server ~]# yum install vsftpd -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-29.el7_9 will be installed
--> Finished Dependency ResolutionDependencies Resolved=================================================================================================================================Package                     Arch                        Version                                Repository                  Size
=================================================================================================================================
Installing:vsftpd                      x86_64                      3.0.2-29.el7_9                         local                      173 kTransaction Summary
=================================================================================================================================
Install  1 PackageTotal download size: 173 k
Installed size: 353 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : vsftpd-3.0.2-29.el7_9.x86_64                                                                                  1/1 Verifying  : vsftpd-3.0.2-29.el7_9.x86_64                                                                                  1/1 Installed:vsftpd.x86_64 0:3.0.2-29.el7_9
Complete!# 加入开机自启
[root@pxe-server ~]# systemctl restart vsftpd && systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.# 在确认系统光盘镜像已经正常挂载到/media/目录后,把目录中的光盘镜像文件全部复制到vsftpd服务程序的工作目录(默认为/var/ftp/pub/)中。并且添加防火墙策略
[root@pxe-server ~]# cp -r /media/* /var/ftp/
[root@pxe-server ~]# ls /var/ftp/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@pxe-server ~]# firewall-cmd --permanent --add-service=ftp
success
[root@pxe-server ~]# firewall-cmd --reload
success

创建KickStart应答文件

毕竟,使用PXE + Kickstart部署的是一套“无人值守安装系统服务”,而不是“无人值守传输系统光盘镜像服务”,因此还需要让客户端主机能够一边获取光盘镜像,还能够一边自动帮我们填写好安装过程中出现的选项。

简单来说,如果生产环境中有100台服务器,它们需要安装相同的系统环境,那么在安装过程中手动单击的选项和填写的信息也应该都是相同的。

那么,为什么不创建一个类似于备忘录的需求清单呢?这样,在无人值守安装系统时,可以从这个需求清单中找到相应的选项值,从而免去了手动输入之苦,更重要的是,也彻底解放了人的干预,彻底实现无人值守自动安装系统,而不是单纯地传输系统光盘镜像。

Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。

那么,既然这个文件如此重要,该去哪里找到呢?其实在root管理员的家目录中有一个名为anaconda-ks.cfg的文件,它就是应答文件。下面将这个文件复制到vsftpd服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd服务程序数据目录中的pub子目录中)。使用chmod命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容:

[root@pxe-server ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@pxe-server ~]# chmod +r /var/ftp/pub/ks.cfg

第5行的光盘镜像安装方式修改成FTP协议,仔细填写好FTP服务器的IP地址,并用本地浏览器尝试打开下检查有没有报错。然后把第25行的时区修改成上海(Asia/Shanghai),最后再把30行的磁盘选项设置为清空所有磁盘内容并初始化磁盘:

[root@pxe-server ~]# vi /var/ftp/pub/ks.cfg
[root@pxe-server ~]# cat /var/ftp/pub/ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
url --url=ftp://192.168.150.10 # FTP协议
# Use graphical install
text        # 命令行界面
# 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=ens32 --ipv6=auto --activate
network  --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$TTYyEM/6vSfIIJYl$77wailVPsJrZ/SZr/r2TNFttugk1jzgdP7bqk0kVNik3j8xFws4W.j6pihwYBG2.dKRBubIKEiXnkKzaiPOfI.
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm        # 自动分区
# Partition clearing information
clearpart --all --initlabel
%packages
@^minimal
@core
chrony
%end
%addon com_redhat_kdump --disable --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
reboot

以上定制的是一个简单的需求配置文件,可以根据自己的需求详细编辑该应答文件

如果觉得系统默认自带的应答文件参数较少,不能满足生产环境的需求,则可以通过Yum软件仓库来安装system-config-kickstart软件包。这是一款图形化的Kickstart应答文件生成工具,可以根据自己的需求生成自定义的应答文件,然后将生成的文件放到/var/ftp/pub目录中并将名字修改为ks.cfg即可。

自动部署客户机

按照上面的步骤成功部署各个相关的服务程序后,就可以使用PXE + Kickstart无人值守安装系统了。在采用下面的步骤建立虚拟主机时,一定要把客户端的网卡模式设定成与服务端一致的“仅主机模式”,否则两台设备无法进行通信,也就更别提自动安装系统了。其余硬件配置选项并没有强制性要求(建议内存要稍大,因为会将镜像等文件加载到内存运行)。

第1步:打开“新建虚拟机向导”程序,选择“典型(推荐) ”配置类型,然后单击“下一步”按钮
第2步:将虚拟机操作系统的安装来源设置为“稍后安装操作系统”。这样做的目的是让虚拟机真正从网络中获取系统安装镜像,同时也可避免VMware Workstation虚拟机软件按照内设的方法自行安装系统。单击“下一步”按钮
第3步:将“客户机操作系统”设置为“Linux”,版本为“CentOS7 64位”,然后单击“下一步”按钮

第4步:对虚拟机进行命名并设置安装位置,然后单击“下一步”按钮
第5步:指定磁盘容量,然后单击“下一步”按钮

第6步:结束“新建虚拟机向导程序”后,先不要着急打开虚拟机系统。如下点击“自定义硬件”按钮,在弹出的界面中,把“网络适配器”设备同样也设置为“仅主机模式”(这个步骤非常重要)并调整内存大小,然后单击“确定”按钮。



第7步:点击“开启此虚拟机”,完成操作系统的引导安装

现在,我们就同时准备好了PXE + Kickstart无人值守安装系统与虚拟主机。在生产环境中,大家只需要将配置妥当的服务器上架,接通服务器和客户端主机之间的网线,然后启动客户端主机即可。
自动安装过程截图:




至此,安装成功。安装过程全程自动安装,无需任何手动干预

PXE + TFTP + NFS + DHCP + Kickstart 部署,参考该文章 https://www.cnblogs.com/ilanni/p/3953013.html

PXE+Kickstart 无人值守安装系统相关推荐

  1. 【Linux】PXE+Kickstart无人值守安装系统

    文章目录 前言 一.简介 二.配置DHCP 三.TFTP 四.SYSLinux服务程序 五.vsftpd服务 六.Kickstart应答文件 七.自动安装系统 八.总结 前言 本文来记录下PXE+Ki ...

  2. PXE+Kickstart无人值守安装系统

    文章目录 1 kickstart简介 1.1 什么是kickstart 1.2 什么是PXE 2 安装配置kickstart 2.1 配置DHCP服务 2.2 配置TFTP服务 2.3 web服务配置 ...

  3. CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  4. KickStart 无人值守安装系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  5. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  6. Centos 6.5 Pxe+kickstart 无人值守安装操作系统

    Centos 6.5PXE+kickstart 无人值守安装操作系统 PXE一种引导方式.进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  7. Kickstart无人值守安装系统(含DHCP超详细原理)

    前言: 为啥要用无人值守安装系统?很简单的答案!就两个! 一个是方便日常工作,另一个就是可以用来装逼! 常规装系统的办法有哪些? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都 ...

  8. pxe+kickstart无人值守安装

    一.战前理论 什么是PXE? PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术, 工作于Client/Server的网络模式, 只想hi ...

  9. PXE+Kickstart无人值守安装CentOS 7出现DHCP故障解决报告

    部署DHCP服务器 在安装dhcp.x86_64 后,用命令systemctlstatus dhcpd 命令查看dhcp服务运行状态发现failed. 报错信息为如下图: Not configured ...

最新文章

  1. 处理问题的方法--抽象和特例化
  2. iOS开发——高级技术地图功能的实现
  3. Apache JMeter 3.2版新特性详述
  4. 最接近的三数之和Python解法
  5. 单片微型计算机简称单片机是指集成,什么是单片微型计算机 -解决方案-华强电子网...
  6. 李宏毅2020深度学习-判别方法和生成方法
  7. Spotlights
  8. 给WPF文字加多条修饰线
  9. 计算机硬件英语单词有哪些,计算机硬件英语词汇
  10. 2022年0425 ICEM网格划分学习笔记
  11. 图书销售系统可行性分析报告
  12. 网站发布的文章如何快速被收录?
  13. css边框图片的使用场景
  14. 优化网页加载各项的讨论
  15. html 字幕文件怎么打开,srt文件怎么打开
  16. 不一样的 LaTeX 教程(第二话):LaTeX 多级标题设置必知必会
  17. 下一个五年,存储的生意在哪里?
  18. 护眼台灯真的管用?全光谱led护眼灯到底值不值得入手
  19. 综述类论文审稿意见建议
  20. 小王梦游记四----------隐形天使

热门文章

  1. Android 下标圆点数字
  2. 如何从文件夹打开dos界面/命令行工具
  3. 广度优先搜索(BFS)最短路径输出表示(三种方法)
  4. Python爬虫——王者荣耀全皮肤拉取
  5. 微信也能设置主题了,盘他!
  6. mv 命令批量移动文件夹
  7. html 5 语音发送,HTML 5 语音合成
  8. 计算机word考试试题模板,2017年职称计算机考试Word2003巩固练习题13
  9. 数据分析思维(《数据分析思维:分析方法和业务知识》)
  10. 睡不着有什么办法可以快速入睡?提升睡眠质量的好物和方法分享