PXE部署CentOS系统

[1.PXE原理:大概过程简介]
[2.PXE安装与组件配置]
[3.PXE自动应答文件ks.cfg]
[4.PXE安装多个操作系统菜单修改]
[5.PXE部署验证]

实际测试PXE服务操作系统:CentOS8.3

https://betheme.net/houduan/28768.html?action=onClick

1.PXE原理

BackToBegin 前提服务器网卡集成了dhcp\tftp客户端,目前大部分都已经支持了
1. 先发送DHCP Discover消息,请求ip, tftp server地址,bootloader文件名称
2. 如果没有请求到必要的pxe相关的选项,主要的就有两个TFTP Server Name(tftp服务器地址),Bootfile Name(bootloader的文件名称,相对tftp server的根目录); 则继续执行步骤1,直到取得这些信息
3. 通过tftp服务器下载到支持pxe启动的bootloader
4. 后续的事情就交给bootloader了,包括从TFTP服务器下载启动镜像(比如vmlinux),安装镜像(iso文件),自动安装脚本(centos的kickstart脚本)
一般网卡固件里的pxe驱动,只支持通过DHCP和TFTP配合来启动的;但是一些开源的项目,已经拓展了pxe的启动方式,支持通过http, scsi, nfs来引导启动远程操作系统的方式,比较有名的有iPXE(gPXE的继承者)

在这里插入图片描述

PXE工作原理示意图说明:
   1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。

   2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

   3. Client执行接收到的pxelinux.0文件。

   4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

   5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。

   6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。

   7. Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。

   8. Client通过NFS下载镜像文件,读取autoyast自动化安装脚本。
至此,Client正式进入自动化安装模式开始安装系统直到完成。


2.PXE安装与配置

BackToBegin
#关闭selinux,设置开机不启动
sed  -i 's/^SELINUX=.*$/SELINUX=disabled/g'   /etc/selinux/config 
setenforce    0

#关闭防火墙
systemctl  stop   firewalld 
systemctl  disable  firewalld

systemctl status firewalld		# 查看防火墙的状态
systemctl is-enabled firewalld	    # 查看是否设置开机启动

安装yum基础包:

yum  -y install vim 
yum  -y install wget  
yum  -y install lrzsz  
yum  -y install dhcp-server  
yum  -y install httpd  
yum  -y install xinetd  
yum  -y install tftp-server 
yum  -y install syslinux 
yum  -y install syslinux-nonlinux
yum  -y install autofs
yum  -y install createrepo
yum  -y install system-config-kickstart  #实测时没有安装,不影响

修改dhcp配置文件:

# cat  /etc/dhcp/dhcpd.conf 
allow booting;   
allow bootp;
ignore client-updates;
subnet 192.168.116.0 netmask 255.255.255.0{
        option subnet-mask 255.255.255.0;
option routers192.168.116.1;     #网关
        option domain-name-servers 192.168.116.193;
        range dynamic-bootp 192.168.116.50 192.168.116.200;
        default-lease-time      21600;
        max-lease-time          43200;
        next-server             192.168.116.193;
        filename        "pxelinux.0" ;
}

【各项配置说明】
allow booting;   
allow bootp;	<<<<允许bootp引导驱动程序协议
ddns-update-style interim;			<<<<<<定义DNS服务动态更新类型为:互动更新模式
ignore client-updates;				<<<<忽略客户机更新DNS记录
subnet 192.168.127.0 netmask 255.255.255.0{  <<<<<<设置DHCP服务器网段和子网掩码
        option subnet-mask 255.255.255.0;    
        option domain-name-servers 192.168.127.1;     <<<<<<定义DNS服务器地址
        range dynamic-bootp 192.168.127.50 192.168.127.200;   <<<<<定义可使用的地址池
        default-lease-time    21600;
        max-lease-time      43200;
        next-server  192.168.127.1; #指定客户端启动过程中下一步使用的网络服务器IP地址;提供服务的IP,即本机IP,此处是tftp服务的IP地址,要能找到下面的pxelinux.0引导文件
        filename       "pxelinux.0" ;  #引导文件,为tftp根目录下的pxelinux.0
}




配置tftp配置文件服务文件:

如果没有可以手动添加:
# cat /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
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

tftp服务简单说明:

配置Apache http服务

#上传iso镜像到环境如下目录: /opt/CentOS-8.3.2011-x86_64-dvd1.iso
mkdir  /var/www/html/CentOS8
mount  /opt/CentOS-8.3.2011-x86_64-dvd1.iso  /var/www/html/CentOS8
#添加挂载到fstab文件中,格式iso9660,设置开机自动挂载,也可以自己写系统服务挂载,这里简单的写到/etc/fstab其实不推荐此处理方法
# cat  /etc/fstab 
/opt/CentOS-8.3.2011-x86_64-dvd1.iso  /var/www/html/CentOS8   iso9660   defaults  0  0

挂载完成之后;拷贝必要的文件到tftp对应的目录下:

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
cp /var/www/html/CentOS8/isolinux/*.c32    /var/lib/tftpboot/
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}  /var/lib/tftpboot
cp /var/www/html/CentOS8/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
cp /var/www/html/CentOS8/isolinux/{boot.msg,splash.png}  /var/lib/tftpboot/
#----------------------------------------------------------------
mkdir /var/lib/tftpboot/pxelinux.cfg     #创建目录
也可以使用附件的default-此文件的作用是PXE安装时的菜单文件:
cp /var/www/html/CentOS8/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

default菜单文件配置注意修改IP,192.168.116.193为自动应答文件存放IP的路径:

label linux
  kernel vmlinuz
  append initrd=initrd.img inst.ks=http://192.168.116.193/ks.cfg

上传附件ks.cfg到 /var/www/html/ 目录下;修改ks.cfg 里面的IP为本机IP
[url --url=“http://192.168.116.193/CentOS8”]

cat  ks.cfg  文件内容如下:

#version=DEVEL
# Install OS instead of upgrade 
install

# Use network installation PXE网络安装
# #最后面不需要加 /
url --url="http://192.168.116.193/CentOS8"


# Use CDROM installation media 从光驱安装  
## cdrom

# Use hard drive installation media U盘安装
#harddrive --dir= --partition=LABEL=CENTOS-8-3-
#repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-hdd-device/AppStream

# Use graphical install 图形化安装
graphical

# Run the Setup Agent on first boot  
firstboot --disable

# Keyboard layouts 美式键盘
keyboard --vckeymap=us --xlayouts='us'

# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --onboot=yes  --noipv6 --activate
network  --hostname=localhost.localdomain

# System authorization information
auth --enableshadow --passalgo=sha512

# Root password root用户的密码
rootpw --iscrypted   $6$Kf5MDiXNQDl6C/UL$KfHP2G9ub.vMBZL4gO12O9b0foYkbRgHUHImmx5.wOnxkKJLny.pilTzib1kNNS8963Q6XuDotKenB//.THeH1

# System services
services  --disabled="chronyd,firewalld"  --enabled="sshd"
#开机禁用的服务以及启用的服务

# Reboot after installation 
# reboot

# System timezone 时区
timezone Asia/Shanghai  --isUtc --nontp

# SELinux configuration
selinux --disabled

#user --name=pan --password=$6$ONSyoQ.S58OJpcnj$jUz6vDadzY5wZ39fr0dEONbI/iNIeVkpRMaUjz9ZJbIqQLPLKqq8ZJWRoDGjolLJfkwmw58Dp5xPhKufAca8y/ --iscrypted --gecos="pan"
# System bootloader configuration
# bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# autopart --type=lvm
# Partition clearing information
# 新硬盘需要创建mbr
#必须:指定引导装载程序怎样被安装,--location=mbr默认
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
#yes

# Partition clearing information
# Disk partitioning information

ignoredisk --only-use=sda
clearpart --all --initlabel  --drives=sda

part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=200
part pv.01 --size=1 --grow
volgroup rootvg01 pv.01
part biosboot --fstype="biosboot"  --size=1
logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
#part / --fstype="xfs" --ondisk=sda --size=1 --grow


%pre
%end

#安装包的信息
%packages
@^minimal-environment
@core
kexec-tools

%end

%post
systemctl  disable firewalld
systemctl stop firewalld
systemctl disable firewalld
sed -i '/^StrictHostKeyChecking/d'  /etc/ssh/ssh_config
sed -i '/StrictHostKeyChecking/a\StrictHostKeyChecking  no'  /etc/ssh/ssh_config
sed -i "/aes256-ctr/d" /etc/ssh/sshd_config
sed -i "/Ciphers and keying/a\Ciphers aes128-ctr,aes192-ctr,aes256-ctr" /etc/ssh/sshd_config
sed  -i  's/,aes128-cbc//g'   /etc/crypto-policies/back-ends/opensshserver.config
sed  -i  's/,aes256-cbc//g'   /etc/crypto-policies/back-ends/opensshserver.config
sed  -i  's/,diffie-hellman-group-exchange-sha1//g'  /etc/crypto-policies/back-ends/opensshserver.config
systemctl restart  sshd
service   sshd     restart
echo "export DOCKER_CLIENT_TIMEOUT=500" >> /etc/profile
echo "export COMPOSE_HTTP_TIMEOUT=500" >>/etc/profile
%end
 
%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda

%end

启动服务:

systemctl enable  dhcpd 
systemctl enable  xinetd 
systemctl enable  tftp 
systemctl enable  httpd


systemctl restart  dhcpd 
systemctl restart  xinetd 
systemctl restart  tftp 
systemctl restart  httpd

3.PXE自动应答文件

BackToBegin

4.PXE多个操作系统菜单修改

BackToBegin

5. PXE部署验证

BackToBegin

PXE官方指导连接BackToBegin

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值