Linux网络服务——PXE网络批量装机与Kickstart无人值守安装

420 阅读5分钟

系统安装介绍

系统装机的三种引导方式

1.硬盘

2.光驱(u盘)

3.网络

系统安装过程

  • 加载boot loader
  • 加载启动安装菜单
  • 加载内核和initrd系统
  • 加载根系统
  • 运行anaconda的安装向导

PXE介绍

什么是PXE

PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。

pxe是通过网卡引导启动。

服务优点

  1. 规模化:同时装配多台服务器,无需每一台单独安装操作系统;
  2. 自动化:实现服务器的自动安装及自动配置各种服务;
  3. 远程实现:不需要光盘、U盘等安装介质,方便快捷的同时又可以保障服务器安全。

搭建PXE网络体系所需条件

客户机

  • 客户机的网卡要支持PXE协议(集成BOOTROM芯片)。
  • 网卡自带DHCP服务和TFTP服务。
  • 主板支持网络引导。有一些需在BIOS设置中允许从 Network 或 LAN 启动即可。

服务端

  • 配置 DHCP 服务器 :为客户机自动分配地址、指定引导文件位置(指明TFTP服务器地址)。
  • 服务器要开启 TFTP 服务(简单文件传输协议):用来提供系统内核和引导镜像文件的下载。
  • 安装软件包syslinux :提供PXE引导程序。
  • 服务器提供FTP服务(或http) :提供安装源(例如镜像文件系统等)。

PXE装机需要的四大文件

  • pxelinux.0:引导程序。(来自syslinux程序)

  • default:引导程序的配置文件。(需要手写,可参考光盘 isolinux 目录下的 isolinux.cfg 文件)

  • vmlinuz:内核文件。(从光盘中获取,位于 isolinux 目录下)

  • initrd.img: 系统启动镜像文件。(从光盘中获取,位于 isolinux 目录下)

如何实现PXE

  • 客户机的网卡查找相关的dhcp服务器(获取地址和时间)。

  • DHCP服务器给客户机分配IP地址和引导程序(boot loader)的地址 ,同时通过offer报文把TFTP服务器的地址发给客户机。

  • TFTP服务器把引导文件(pxelinux.0)传给客户机。

  • 客户机将引导程序加载到内存中来。

  • 引导程序去TFTP服务器中查找配置文件,服务器将配置文件传给客户机。(配置文件中指定客户机使用ftp方式连接服务器获取系统镜像文件)

  • 服务端安装并启动vsftpd服务,客户机使用ftp服务获取系统镜像文件。

image-20220323021636569.png

搭建过程中服务详解

PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

TFTP服务

TFTP(简单文件传输协议): 内核和引导文件

  • 是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
  • TFTP服务一般只在装机这种场景下使用,用于传输内核和引导文件。因为安全性不高。
  • 自带的站点:/var/lib/tftpboot

DHCP服务

DHCP是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

vsftp:安装系统镜像文件获取方式

可以使用http、ftp等方式,ftp文件传输的一种,vsftpd是提供ftp服务的软件之一。

syslinux

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

安装syslinux程序后,可获得 pxelinux.0 文件。

实验:PXE网络装机操作过程

1.安装软件包

 [root@localhost ~]# yum install dhcp tftp-server.x86_64 vsftpd syslinux -y

2.配置DHCP服务器,分配IP地址,指明tftp服务器的地址

[root@localhost network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf
[root@localhost network-scripts]# vim /etc/dhcp/dhcpd.conf

---------------
# This is a very basic subnet declaration.

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.10 192.168.10.40;
  option routers 192.168.10.2;
  next-server 192.168.10.100;
  filename "pxelinux.0";
}
--------------

image.png

[root@localhost network-scripts]# rpm -ql tftp-server

image.png

3.修改TFTP服务配置文件/etc/xinetd.d/tftp,将服务开启

[root@localhost network-scripts]# vim /etc/xinetd.d/tftp
--------------
disable                 = no
--------------

image.png

4.将光盘挂载到/var/ftp的子目录centos7下,并将文件先拷入/var/lib/tftpboot/ 目录中

 [root@localhost ~]# mount /dev/sr0 /mnt/
 mount: /dev/sr0 写保护,将以只读方式挂载
 [root@localhost ~]# cd /var/lib/tftpboot/
 [root@localhost tftpboot]# cd centos7
 [root@localhost tftpboot]# cp /mnt/isolinux/initrd.img /mnt/isolinux/vmlinuz .
 [root@localhost tftpboot]# rpm -ql syslinux |grep pxelinux.0
 [root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
 

5.在/var/lib/tftpboot/ 目录下,创建子目录pxelinux.cfg,在pxelinux.cfg目录下编写引导程序的配置文件default

 [root@localhost tftpboot]# mkdir pxelinux.cfg
 [root@localhost tftpboot]# cd pxelinux.cfg/
 [root@localhost pxelinux.cfg]# vim default
 
 default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.10.100/centos7
 [root@localhost pxelinux.cfg]# cd /var/ftp/ 
 [root@localhost ftp]# mkdir centos7
 [root@localhost ftp]# mount /dev/sr0 centos7/

image.png

image.png

6.关闭防火墙,重启服务

 [root@localhost ftp]# systemctl stop firewalld.service 
 [root@localhost ftp]# setenforce 0
 [root@localhost ftp]# systemctl start dhcpd
 [root@localhost ftp]# systemctl start tftp
 [root@localhost ftp]# systemctl start vsftpd
 [root@localhost ftp]# export DISPLAY=192.168.10.1:0.0

image.png

7.安装kick并运行

 [root@localhost ftp]# yum install system-config-kickstart.noarch
 [root@localhost ftp]# system-config-kickstart

按照下图设置 image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

8.修改配置文件

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

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.10.100/centos7 ks=ftp://192.168.10.100/ks.cfg

image.png 9.新建虚拟机,设置为仅主机模式后开启

如下界面说明成功,之后等安装完成即可 image.png

image.png

实验成功