PXE批量安装+kickstart自动部署安装

589 阅读6分钟

PXE启动安装系统

一、启动操作系统的方式

二、三种引导方式

  1. 硬盘引导
  2. 光盘引导
  3. 网络引导

三、系统安装过程

  1. 加载boot loader
  2. 加载启动安装菜单
  3. 加载内核和initrd系统(文件才能使用文件)
  4. 加载根系统()
  5. 运行anaconda的安装向导

四、四大文件

  1. pxelinux.0: 是一个PXE引导加载程序,用于启动网络引导。
  2. vmlinuz:是一个压缩的 Linux 内核文件,它包含了操作系统的核心功能和驱动程序。
  3. initrd.img:是一个用于初始化 RAM 磁盘的初始 RAM 文件系统。它包含了操作系统启动时所需的基本文件和驱动程序。
  4. pxelinux.cfg/default:手动配置

在网络引导过程中,这些文件通常用于加载操作系统。

五、实现自动安装操作系统

Kickstart 和 PXE 结合使用可以实现自动化的网络安装过程。

Kickstart无人值守安装配置

一、简介

PXE(Preboot Execution Environment)是一种网络引导技术,允许计算机通过网络启动和安装操作系统。

PXE通过网卡引导启动。

二、优点

  1. 规模化:同时装配多台服务器
  2. 自动化:安装系统、配置各种服务
  3. 远程实现:不需要光盘、U盘等安装介质

三、实现无人值守安装的前提条件

  1. BIOS支持
  2. 网卡支持
  3. 需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
  4. 有DHCP 服务器 DHCP服务用于为客户机自动分配地址、指定引导文件位置
  5. 安装了TFTP服务 TFTP服务(简单文件传输协议)用于提供系统内核和引导镜像的下载。

四、实现过程

kickstart过程.png

  1. 网卡需要查找相关的dhcp服务器(获取地址时间)
  2. 找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
  3. 网卡使用tftp客户端吧引导程序加载到内存中来
  4. bios执行引导程序
  5. 引导程序会去TFTP去查找配置文件
  6. 根据配置文件去引导安装系统

五、依赖的服务

  • DHCP

负责分配IP地址给客户端网卡,在没有操作系统的状态下也能获取网络资源

  • TFTP

内核和引导文件

是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。

  • VSFTPD

可以使用http ftp等方式,ftp文件传输的一种。

  • SYSLINUX

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。

pxelinux.0 启动pxe pxe可以支持

虚拟环境中一定要把自带的DHCP服务关闭,否则与虚拟机中手动配置的DHCP配置冲突,导致实验失败

模拟PXE+KICKSTART无人值守安装操作系统

一、准备工作

[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# setenforce 0

二、配置DHCP服务

[root@localhost ~]# yum -y install dhcp                         #安装dhcp服务程序
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf                    #查找DHCP配置文件路径
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
​
[root@localhost ~]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
# This is a very basic subnet declaration.
​
subnet 192.168.137.0 netmask 255.255.255.0 {                    #DHCP服务器的网段和子网
  range 192.168.137.80 192.168.137.100;                         #自动分配的IP地址范围(地址池)
  option routers 192.168.137.102;                               #DHCP服务器ip地址(网关)
  next-server 192.168.137.102;                                  #下一台接续的服务器IP地址
  filename "pxelinux.0";                                        #所要寻找的PXE配置文件名
}
​
[root@localhost ~]# systemctl start dhcpd                       #启动DHCP服务
[root@localhost ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2024-05-06 15:18:36 CST; 5min ago                           #开启成功
​
​

三、配置TFTP服务

[root@localhost ~]# yum -y install tftp-server                  #安装tftp-server服务端程序
[root@localhost ~]# rpm -qc tftp-server                         #查找tftp服务配置文件路径
/etc/xinetd.d/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 /var/lib/tftpboot
        disable                 = no                            #打开tftp服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
        
:wq                                                             #保存退出
​
​
[root@localhost ~]# systemctl start tftp                        #开启tftp服务
[root@localhost ~]# systemctl status tftp                       #查看tftp服务状态
● tftp.service - Tftp Server
   Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
   Active: active (running) since 一 2024-05-06 15:37:34 CST; 4s ago                             #开启成功

四、查找pxelinux.0文件位置并复制到站点目录

[root@localhost ~]# yum -y install syslinux                     #安装syslinux程序
​
[root@localhost ~]# rpm -ql syslinux |grep "pxelinux.0"         #查找pxelinux.0文件路径
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0                                  #该文件为四大文件之一
​
[root@localhost ~]# cp -p /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/        #将该文件复制到tftp站点目录中
​
​

五、安装vsftp及创建光盘挂载点

[root@localhost ~]# yum -y install vsftpd                                                           #安装vsftp服务  
[root@localhost ~]# cd /var/ftp                                                                     #切换至vsftp共享目录
[root@localhost ftp]# mkdir centos7                                                                 #创建挂载点目录
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7                                               #将光盘镜像挂载到该目录下
mount: /dev/sr0 写保护,将以只读方式挂载
​
[root@localhost tftpboot]# cd /var/ftp/centos7/                                                     #切换至光盘内
[root@localhost centos7]# ls
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
#找到四大文件中的initrd.img和vmlinuz
​
[root@localhost isolinux]# cp -p initrd.img vmlinuz /var/lib/tftpboot/                              #复制到tftp服务站点目录
[root@localhost pxelinux.cfg]# systemctl start vsftpd                                               #开启vsftpd服务程序

六、创建pxelinux.cfg文件夹和default文件

[root@localhost isolinux]# cd /var/lib/tftpboot/                                                        #切换到tftp站点目录
default linux
​
label linux
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.137.102/centos7   ks=ftp://192.168.137.102/ks.cfg 
#指定mini系统路径和个性化配置文件路径
​
label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.137.102/centos7
​
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.137.102/centos7
        
        
:wq                                                                                                                 
​
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz                                               #PXE自动安装所需的四大文件已齐全

七、配置无人值守安装

一、安装图形化kickstart工具

[root@localhost tftpboot]#yum install system-config-kickstart -y

二、使用图形化kickstart工具生成ks.cfg文件

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png

11.png

[root@localhost tftpboot]# cd /var/ftp
[root@localhost ftp]# ls
centos7  ks.cfg  pub
​
#ks.cfg 文件已生成

三、验证

微信截图_20240506163724.png

已通过DHCP服务器得到IP地址并寻找到PXE引导程序

微信截图_20240506163813.png

自动部署已开始

实验成功,待安装结束后登录即可使用