PXE+Kickstart 高效批量网络装机

PXE+Kickstart 高效批量网络装机文章目录1.PXE概述1.1PXE定义1.2PXE批量部署的优点1.3PXE搭建的前提条件1.4PXE架构示意图2.搭建PXE远程安装服务器2.1安装并启用TFTP服务2.2安装并启用DHCP服务2.3准备Linux内核、初始化镜像文件2.4准备PXE引导程序1.PXE概述1.1PXE定义  PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远

大家好,又见面了,我是你们的朋友全栈君。


1. PXE 概述

1.1 PXE 定义

  PXE(预启动执行环境,在操作系统之前运行)是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。

1.2 PXE 批量部署的优点

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

1.3 PXE 搭建的前提条件

客户端:
  客户机的网卡要支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。
服务端:
  网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置,服务器要通过 TFTP 服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载。

1.4 PXE 架构示意图

在这里插入图片描述

2. 搭建 PXE 远程安装服务器

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

2.1 安装并启用 TFTP 服务

  • TFTP 是一个基于 UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP 服务默认由 xinetd 服务进行管理,使用 UDP 端口 69。
  • xinetd 是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级 Internet 服务,xinetd 服务的配置文件位于 /etc/xinetd.conf ,配置时只要将 “disable = yes” 改成 “disable = no” 即可。
yum -y install tftp-server xinetd
#修改 TFTP 服务的配置文件
vim /etc/xinetd.d/tftp
......
    protocol         = udp                  #TFTP默认使用UDP协议
    wait             = no                   #no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
    server_args      = -s /var/lib/tftpboot #指定TFTP根目录(引导文件的存储路径)
    disable          = no                   #no表示开启TFTP服务
......
#开启服务并设置开机自启
systemctl start tftp && systemctl enable tftp
systemctl start xinetd && systemctl enable xinetd

2.2 安装并启用 DHCP 服务

  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用 UDP 协议工作。
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#修改 DHCP 服务的配置文件,添加如下内容
vim /etc/dhcp/dhcpd.conf
ddns-update-style none;      #禁用 DNS 动态更新
next-server 192.168.10.20;   #指定 TFTP 服务器的地址
filename "pxelinux.0";       #指定要下载的 PXE 引导程序的文件

subnet 192.168.10.0 netmask 255.255.255.0 { 
       #声明要分配的网段地址
  range 192.168.10.100 192.168.10.200;         #设置地址池
  option routers 192.168.10.20;                #设置默认网关地址,指向 TFTP 服务器的 IP 地址
}
#开启 DHCP 服务并设置开机自启
systemctl start dhcpd && systemctl enable dhcpd

2.3 准备 Linux 内核、初始化镜像文件

VMware 虚拟机设置里 CD/DVD 一栏设备状态勾选已连接
mount /dev/sr0 /mnt
cd /mnt/images/pxeboot
cp vmlinuz /var/lib/tftpboot/       #复制 linux 系统的内核文件到 TFTP 根目录下
cp initrd.img /var/lib/tftpboot/    #复制初始化镜像文件(linux 引导加载模块)到 TFTP 根目录下

2.4 准备 PXE 引导程序

yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

2.5 安装并启用 FTP 服务,准备 CentOS7 安装源

yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/		#过程较长,需等待一会,可加 & 后台执行,jobs 查看
systemctl start vsftpd && systemctl enable vsftpd

2.6 配置启动菜单文件

  • 启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像
  • 默认的启动菜单文件在 TFTP 根目录(/var/lib/tftpboot/)的 pxelinux.cfg 子目录下,文件名为 default
mkdir /var/lib/tftpboot/pxelinux.cfg

vim /var/lib/tftpboot/pxelinux.cfg/default
default auto		#指定默认入口名称
prompt 0			#设置是否等待用户选择,"1" 表示等待用户控制,"0" 表示不等待,不想手动就设 "0" 吧

label auto			#图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz		# kernel 和 append 用来定义引导参数
append initrd=initrd.img 
method=ftp://192.168.10.20/centos7

label linux text	#文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img
method=ftp://192.168.10.20/centos7

label linux rescue	#救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img
method=ftp://192.168.10.20/centos7

在这里插入图片描述

2.7 关闭防火墙和 selinux,重启服务

systemctl stop firewalld && systemctl disable firewalld
setenforce 0	#临时关闭 selinux
systemctl restart vsftpd
systemctl restart tftp
systemctl restart dhcpd

2.8 验证 PXE 网络安装

使用 VMware 创建的空机(不要挂载光盘)进行测试,虚拟机内存至少需要 2GB,否则在启动安装时可能会报错。
开启虚拟机,在提示字符串 “boot:” 后直接按 Enter 键(或执行 “auto” 命令),将会自动通过网络下载安装文件,并进入默认的图形安装入口:

  • 执行 “linux text” 命令,则进入文本安装入口
  • 执行 “linux rescue” 命令,则进入救援模式
    在这里插入图片描述
    回车后开始自动装机。

3. 实现 Kickstart 无人值守安装

  通过 PXE 技术安装 Linux 系统使得安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。但是安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,实现真正的无人值守安装。

3.1 安装 Kickstart 工具

yum -y install system-config-kickstart

3.2 打开 “Kickstart 配置程序” 窗口

通过桌面菜单 "应用程序" --> "系统工具" --> "Kickstart" 打开
或
执行 "system-config-kickstart" 命令打开

如果是使用最小化安装的系统没有图形界面可以尝试手动安装图形界面,参考:
Linux 安装图形界面

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release && yum clean all && yum makecache
yum -y groupinstall "X Window System" "GNOME Desktop" kde-l10n-Chinese
startx	#进入图形化界面

在这里插入图片描述

3.3 配置 Kickstart 选项

(1) 基本配置

在这里插入图片描述

(2) 安装方法

在这里插入图片描述

(3) 引导装载程序选项

在这里插入图片描述

(4) 分区信息

在这里插入图片描述

  • /boot 500M
    在这里插入图片描述
  • /home 4096M
    在这里插入图片描述
  • /swap 4096M
    在这里插入图片描述
  • / 分配剩余所有空间
    在这里插入图片描述
    分区总览
    在这里插入图片描述
    除 / ,/boot ,swap 这三个分区外按需配置。

(5) 网络配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6) 防火墙配置

在这里插入图片描述

(7) 安装后脚本(不是必需)

勾选 "使用解释程序":/bin/bash
#脚本内容,注意改成自己的 IP
rm -rf /etc/yum.repos.d/*
echo '[local] name=local baseurl=ftp://192.168.10.20/centos7 enabled=1 gpgcheck=0' > /etc/yum.repos.d/local.repo

在这里插入图片描述
上面的步骤有英文有中文,是因为我在不同的机器上实验的,不过步骤都是一样的。

(8) 保存自动应答文件

选择 “kickstart 配置程序” 窗口的 “文件” – “保存” 命令,选择指定保存的位置,文件名为 ks.cfg,默认保存在 /root/ks.cfg,我们需要将其保存在 /var/ftp 目录。

cp /root/ks.cfg /var/ftp/ks.cfg

在这里插入图片描述
在这里插入图片描述

[root@c7-1 ~]#ll /var/ftp
总用量 4
drwxr-xr-x 8 root root  220 91 19:19 centos7
-rw-r--r-- 1 root root 1164 91 23:46 ks.cfg
drwxr-xr-x 2 root root    6 610 00:15 pub

3.4 配置需要安装的软件包

可以根据需要将 /root/anaconda-ks.cfg 的软件包安装脚本复制到 ks.cfg 文件的末尾,只需要复制 %packages 到 %end 部分即可。

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
kexec-tools

%end

如要求最小化安装,可复制如下内容:

%packages
@^minimal
%end

这个每个人可能不太一样,复制自己的。

3.5 编辑引导菜单文件 default,添加 ks 引导参数

vim /var/lib/tftpboot/pxelinux.cfg/default

在这里插入图片描述
注意这步 ks 文件调用错了,安装会出问题。

3.6 验证无人值守安装

重启服务端服务:

systemctl restart vsftpd && systemctl restart dhcpd && systemctl restart tftp

当客户机每次以 PXE 方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装 CentOS7 系统。
在这里插入图片描述
在这里插入图片描述

参考:
Linux 批量装机

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148921.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 编写测试用例方法—-因果图&判定表

    编写测试用例方法—-因果图&判定表因果图:一、应用场合       在一个界面中,有多个控件,测试的时候要考虑控件的组合关系,不同的控件组合会产生不同的输出结果的组合,为了弄清什么样的输入组合会产生什么样的输出组合,使用因果图法。 二、因果图核心1、因—-原因,输入条件2、果—-结果,输出结果使用图形的方式,分析软件输入和输出的对应关系。 三、图形符号1、基本图形    表示输入和输出的对应关系(1)恒等(-)Ⓐ(输入、因…

  • c++的字符串数组string[通俗易懂]

    c++的字符串数组string[通俗易懂]用字符数组来存放字符串并不是最理想和最安全的方法。C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。一、字符…

    2022年10月31日
  • 01.分布式文件系统FastDFS

    01.分布式文件系统FastDFS

  • machine learn in python 第二章2.1.1

    machine learn in python 第二章2.1.1

  • Hadoop生态圈python + mapreduce + wordcount

    Hadoop生态圈python + mapreduce + wordcountHadoop生态圈python+mapreduce+wordcount启动hadoop进度发布文件hdfsdfs-put/home/hadoop/hadoop/input/user/hadoop/input查看hdfs现在有一些文件[hadoop@master0hadoop]$hdfsdfs-ls/Found1itemsdrwxr-xr-x-hadoopsupergroup02019-12-0402

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号