PXE自动化装机uefi模式

第一步:搭建本地yum源

若无互联网环境,使用iso镜像搭建本地yum源

 mount /dev/cdrom /mnt/
[root@pxe-server ~]# cd /etc/yum.repos.d/
[root@pxe-server yum.repos.d]# ls
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo  CentOS-x86_64-kernel.repo
[root@pxe-server yum.repos.d]# mkdir bak
[root@pxe-server yum.repos.d]# mv *.repo bak/
[root@pxe-server yum.repos.d]# ls
bak
[root@pxe-server yum.repos.d]#
[root@pxe-server yum.repos.d]# vi iso.repo 
[root@pxe-server yum.repos.d]# cat iso.repo 
[iso]
name=iso
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@pxe-server yum.repos.d]#  yum clean all
[root@pxe-server yum.repos.d]#  yum makecache

第二步:搭建pxe服务器

安装命令行自动补齐的包

[root@pxe-server yum.repos.d]# yum install -y bash-completion
[root@pxe-server yum.repos.d]# su -

关闭防火墙和selinux,安装所需软件

systemctl stop firewalld.service 
setenforce 0
yum install -y  vsftpd tftp-server dhcp

获取uefi启动文件,将启动文件和镜像文件复制到指定位置

cd /tmp/
cp -pr /mnt/Packages/shim-x64-15-8.el7.x86_64.rpm /tmp
cp -pr /mnt/Packages/grub2-efi-x64-2.02-0.86.el7.centos.x86_64.rpm /tmp
rpm2cpio /tmp/shim-x64-15-8.el7.x86_64.rpm | cpio -dimv
rpm2cpio /tmp/grub2-efi-x64-2.02-0.86.el7.centos.x86_64.rpm | cpio -dimv

mkdir /var/lib/tftpboot/uefi/
cp /tmp/boot/efi/EFI/centos/grubx64.efi /var/lib/tftpboot/uefi/
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/uefi/
cp /tmp/boot/efi/EFI/centos/shim.efi /var/lib/tftpboot/uefi/
chmod +r /var/lib/tftpboot/uefi/{grubx64.efi,shim.efi}
cp -arvp /mnt/* /var/ftp

编辑grub.cfg文件

set timeout=6             #6秒后超时,开始安装系统

menuentry 'Centos 7.9'       #安装时会显示的提示内容

ks=ftp://192.168.189.150/ks.cfg      #指定ks文件路径(ftp服务器文件根目录)

inst.repo=ftp://192.168.189.150      #指向ftp服务器,存放着镜像文件内容

cat /var/lib/tftpboot/uefi/grub.cfg

set timeout=6
  menuentry 'Centos 7.9' {
  linuxefi uefi/vmlinuz ip=dhcp ks=ftp://192.168.189.150/ks.cfg inst.repo=ftp://192.168.189.150
  initrdefi uefi/initrd.img
}

编辑ks文件

其中 url --url="ftp://192.168.189.150"指向软件包位置,即ftp服务器根目录

文件内容如下

cat /var/ftp/ks.cfg

auth --enableshadow --passalgo=sha512  #加密方式sha512
text   #字符安装,默认是图形化的
reboot #安装完要重启
firstboot --enable
ignoredisk --only-use=sda   #只用第一块盘
keyboard --vckeymap=us --xlayouts='us'  #设置键盘
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8  #设置语言为英文,并添加中文支持
network  --bootproto=dhcp --device=ens32 --onboot=yes  #网卡配置
#network  --hostname=ddcw  #主机名
 
url --url="ftp://192.168.19.201"
# 设置root密码
rootpw mintsy@123
services --disabled="chronyd"
services --disabled="NetworkManager"
services --disabled="firewall"
services --disabled="selinux"
timezone Asia/Shanghai  --nontp
bootloader --location=mbr --boot-drive=sda
clearpart --all --initlabel
 
autopart --type=lvm #自动分区
 
 
 
%packages
@^minimal
@compat-libraries
@core
@system-admin-tools
wget
vim 
%end
%post

cd /root

SN=`dmidecode -t 1|grep Serial|awk -F : '{print $2}'|awk -F ' ' '{print $1}'` ##获取SN号
wget ftp://192.168.19.201/1.csv   下载csv格式文件里面包括(网络地址,带外地址,带外网口最后由ansible推送,主机名)
IP=`grep $SN 1.csv|awk -F , '{print $2}'`
HOSTNAME=`grep $SN 1.csv|awk -F , '{print $3}'`
GATEWAY=192.168.19.2
NETMASK=255.255.255.0

hostnamectl set-hostname $HOSTNAME

echo $IP $HOSTNAME >> /etc/hosts
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

cat <<EOF>/etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
EOF
echo "IPADDR=$IP" >>/etc/sysconfig/network-scripts/ifcfg-ens33
echo "NETMASK=$NETMASK" >>/etc/sysconfig/network-scripts/ifcfg-ens33
echo "GATEWAY=$GATEWAY" >>/etc/sysconfig/network-scripts/ifcfg-ens33
echo "nameserver 114.114.114.114" > /etc/resolv.conf
systemctl restart network

%end

两个文件服务器内的文件如下所示,检查是否有缺失内容

[root@pxe uefi]# pwd
/var/lib/tftpboot/uefi
[root@pxe uefi]# ls
grub.cfg  grubx64.efi  initrd.img  shim.efi  vmlinuz
[root@pxe ftp]# pwd
/var/ftp
[root@pxe ftp]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  ks.cfg  LiveOS  Packages  pub  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[root@pxe ftp]#

编辑dhcp配置文件

subnet 为子网网段

netmask为掩码

option routers为网关

next-server 192.168.189.150 指向启动存放启动文件的tftp服务器

range 192.168.189.151 192.168.189.170;为dhcp服务器可分配的ip范围

class "pxeclients"来判断启动方式

文件内容如下

cat /etc/dhcp/dhcpd.conf

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;

subnet 192.168.189.0 netmask 255.255.255.0 {
  option routers 192.168.189.2;
  range 192.168.189.151 192.168.189.170;

  class "pxeclients" {
      match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
      next-server 192.168.189.150;

      if option architecture-type = 00:07 or option architecture-type = 00:09 {
        filename "uefi/grubx64.efi";
      } else {
        filename "pxelinux/pxelinux.0";
      }
  }
}

重启dhcpd、vsftpd、tftp

systemctl restart dhcpd vsftpd tftp
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值