PXE实现Linux自动装机实践

PXE简介

PXE全称为:Preboot Execute Environment。从翻译直接看是(预引导执行环境)的意思。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。可以实现如下功能:
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质

PXE交互流程

在这里插入图片描述
从上图可以其交互流程,可简单的进行如下总结:
1、客户端启动系统,选择从网卡启动
2、从DHCP服务器中获取到IP地址等信息
3、还获取到tftp server 以及网络引导程序 pexliunx.0
4、通过网卡读取到ftfp server (/var/lib/tftpboot) 上的pexlinux.0,读取到内存中
5、在内存中执行引导程序
6、读取引导程序的配置文件(/var/lib/tftpboot/pxelinux.cfg/default)上的pexlinux.0,读取到内存中
7、读取default中的内容
8.根据配置文件去引导安装系统
9.系统安装过程

通过HTTP实现PXE自动装机

整体配置思路

  1. 配置YUM源
  2. 关闭防火墙和SELiunx
  3. 安装dhcp、tftp-server、httpd、syslinux
  4. 配置dhcp、tftp-server
  5. 安装system-config-kickstart(需要注意的,从RHEL8.0后system-config-kickstart被弃用,如果要使用kickstart,PXE SERVER必须安装桌面)
  6. 配置httpd,并修改YUM源
  7. 启动system-config-kickstart按照引导配置生成ks无人值守脚本
  8. 将ks文件复制到httpd的ks目录,并修改tftp-server配置文件
  9. 重启dhcp、tftp-server、httpd,并开始装机进程

配置YUM源

创建新yum配置文件 /etc/yum.repos.d/pxe.repo

[development]   # 如果使用http进行装机此处标识必须为 development
name = rhel
baseurl = file:///media
enabled = yes
gpgcheck = no  # 为测试环境不进行校验
end

配置完成后,执行如下命令重新生成yum 目录

yum cleam all
yum repolist all

关闭防火墙和SELinux

   systemctl  disable  firewalld.service  # 开机防火墙禁用
   systemctl  stop firewalld.service  # 关闭防火墙 
   setenforce 0	 # 将SELinux临时修改为Permissive模式。如果要直接关闭修改/etc/selinux/config 文件即可

安装dhcp、tftp-server、httpd、syslinux

按照如下脚本进行安装

    yum install tftp-server.x86_64  -y
    yum install  httpd -y
    yum -y install dhcp
    yum -y install syslinux 
    yum -y install syslinux-tftpboot.noarch # 安装该rpm包后,在/var/lib/tftpboot 目录下就会自动生成pxelinux.0文件,可以都安装

配置dhcp 、tftp-server

修改dhcp配置文件

进入 /usr/share/doc/dhcp-server 将 dhcpd.conf.example 文件复制到/etc/dhcp/dhcpd.conf。并修改配置文件

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
next-server 192.168.136.120; # 为本地tftp-server地址
filename "/pxelinux.0";  # 指定tftp的引导程序
default-lease-time 600;
max-lease-time 7200;
#
# A slightly different configuration for an internal subnet.
subnet 192.168.136.0 netmask 255.255.255.0 { # dhcp 地址池网段,如果有多个端口可以创建复制该段,创建多个地址池
  range 192.168.136.150 192.168.136.160; # 动态分配范围
  option domain-name-servers ns1.internal.example.org;	# 本机fqdn
  option domain-name "internal.example.org";	# dns
  option routers 192.168.136.254;	# 网关地址
  option broadcast-address 192.168.136.255;	# 广播地址
  default-lease-time 600;	#默认租约
  max-lease-time 7200; # 最大租约
}


修改tftp-server配置文件

  1. 修改配置文件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	# 修改为 no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
  1. 复制pxe引导程序到tftpboot中
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot  # 如果安装了syslinux-tftpboot.noarch可以不执行该步骤
  1. 配置default文件
    在/var/lib/tftpboot目录下创pxelinux.cfg目录,并配置defualt文件
cd /var/lib/tftpboot
mkdir pxelinux.cfg # 用于存放用于ISOLINUX引导加载器,其作用为定义启动菜单、配置启动参数、控制启动行为、多引导支持
mkdir rhel7.6 # 用于存放 initrd 初始化镜像文件   vmlinuz  内核文件。此两个文件版本必须与PXE Cline装机的目标系统内核版本一致。
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 
cp /media/isolinux/* /var/lib/tftpboot
cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/rhel7.6/ 
cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/rhel7.6/

修改ISOLINUX引导加载器

vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 60	#默认为600,单位10/1秒。
display boot.msg

label rhel7.6
  menu label ^Install rhel7.6 # 目录标签
  kernel /rhel7.6/vmlinuz	# 指定内核路径
  append initrd=/rhel7.6/initrd.img 	#指定初始化引导程序路径

安装system-config-kickstart

yum install -y system-config-kickstart

配置httpd,并修改YUM源

  1. 进入httpd根目录下,创建iso挂载点并将iso挂载,创建ks文件目录
cd /var/www/html	# httpd根目录
mkdir cdrom
mkdir ks
#将iso镜像挂
umount /dev/sr0 /media	# 具体设备dev名称按实际情况
vim /etc/fstab # 修该,fastab,开机自动挂载
/dev/sr0 /var/www/html/cdrom iso9660 defaults,loop 0 0 #添加挂载信息,配置完成后,执行 mount -a 挂载。
  1. 修改YUM源
[development]
name = rhel
baseurl = http://192.168.136.120/cdrom # 指定yum源为httpd根目录下路径
enabled = yes
gpgcheck = no

启动system-config-kickstart按照引导配置生成ks无人值守脚本

system-config-kickstart

基本配置
具体选择按实际情况分配即可
安装方法
选择HTTP方式,HTTPF服务器地址为本机地址,HTTP目录为创建httpd根目录/var/www/html下的/cdrom。为ISO镜像挂载点
选择HTTP方式,HTTPF服务器地址为本机地址,HTTP目录为创建httpd根目录/var/www/html下的/cdrom。为ISO镜像挂载点
引导装载程序选项
在这里插入图片描述
分区信息
如果是新安装,建议选择 清除主引导记录,删除所有现存分区
在这里插入图片描述

网络配置
网络设备填写 eth0即可。内核中依旧显示为eth0,只是会有映射到具体NIC口

[root@localhost pxeboot]# dmesg | grep eth
[    2.290891] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:3b:aa:58
[    2.290897] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection

在这里插入图片描述
验证(按需即可)
在这里插入图片描述

防火墙配置(按需即可)
在这里插入图片描述
显示配置(按需即可)
在这里插入图片描述

软件包安装(按需即可)
在这里插入图片描述
安装后脚本
如果有其它脚本,解释程序填写 /bin/sh即可
有部分系统默认不创建任何用户。为后续方便可以创建admin用户。
在这里插入图片描述
单击【保存】生成ks文件
在这里插入图片描述
完成后即可在root下看到生成的ks文件
在这里插入图片描述
在这里插入图片描述

将ks文件复制到httpd的ks目录,并修改tftp-server配置文件

# 将ks文件复制到httpd的指定ks路径下
cp /root/ks20240610.cfg /var/www/html/ks
# 修改tftf-server配置,指定ks文件路径
label rhel7.6
  menu label ^Install rhel7.6
  **menu default**  # 注该menu default 为label check中移动到该标签下,一个default中只能有一个 menu default
  kernel /rhel7.6/vmlinuz
  append initrd=/rhel7.6/initrd.img **ks=http://192.168.136.120/ks/ks20240610.cfg**

label check
  menu label Test this ^media & install Red Hat Enterprise Linux 7.6
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.6\x20Server.x86_64 rd.live.check quiet

重启dhcp、tftp-server、httpd,并开始装机进程

systemctl restart httpd
systemctl restart tftp
systemctl restart dhcpd

完成以上一切后,重启PXE Clinet 即可。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值