技术
成就梦想!

PXE批量自动安装Linux (UEFI)

一、介绍

本文是以Windows10为底层操作系统,运行VMware Workstation 虚拟化软件,在vmware上搭建一个PXE启动Centos7.6系统的配置环境并自动安装OS的操作指导。

二、所需软件

虚拟机OS镜像:Centos7.6_X86镜像
安装到服务器的OS镜像:aarch64系统镜像
虚拟化软件:VMware Workstation Pro

三、虚拟机OS镜像安装与环境配置

1)Centos7.6在虚拟机中最小安装,安装过程就不赘述了;
2)配置虚拟机为桥接模式,虚拟机网卡桥接到笔记本网口上;
3)配置虚拟机IP地址为固定地址与桥接网卡为同段;

四、虚拟机UEFI PXE环境配置

1、关闭SELinux与防火墙

1.1、关闭SELinx

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

1.2、关闭Firewall防火墙

systemctl stop firewalld
systemctl disable firewalld

2、搭建虚拟机YUM安装源

如果你的虚拟机可以连接外网可以忽略次步骤,可以直接连接公网安装源安装。

2.1、挂载安装盘,执行挂载命令

mkdir /mnt/dvd
mount /dev/sr0 /mnt/dvd/

2.2、编辑repo配置文件

mkdir /root/repo_back
mv /etc/yum.repos.d/* /root/repo_back/

vim /etc/yum.repos.d/dvd.repo
[cdrom]
name=cdrom
baseurl=file:///mnt/dvd/
enabled=1
gpgcheck=0

保存退出后,执行yum repolist all

3、创建配置文件与镜像存储路径

mkdir -vp /pxe/yumsource    #存放ISO安装镜像
mkdir /pxe/other            #存放装机配置文件

4、安装配置FTP

4.1、安装并启动服务

yum install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd

4.2、编辑FTP配置文件,增加匿名访问的pxe文件路径

vim /etc/vsftpd/vsftpd.conf
local_root=/pxe/			#设置FTP根目录
chroot_local_user=YES		#是否将所有用户限制在主目录,YES为启用 NO禁用
anon_root=/pxe/			#设置匿名用户的根目录

image

4.3、重启vsftpd服务,并检查状态

systemctl restart vsftpd
systemctl status vsftpd

4.4、打开浏览器连接FTP测试访问

image

5、安装并配置DHCP

5.1、 安装DHCP

yum install –y dhcp*

5.2、编辑dhcp配置文件 /etc/dhcp/dhcpd.conf
加入以下内容:

ddns-update-style none;
ignore client-updates;
default-lease-time 359200;
max-lease-time     800000;
next-server 172.18.0.1;   
subnet 172.18.0.0 netmask 255.255.0.0 {
        range dynamic-bootp 172.18.0.10 172.18.200.255;
        filename "uefi/shim.efi";
}

image

5.3、启动服务并检查状态

systemctl start dhcpd
systemctl status dhcpd
systemctl enable dhcpd

image

6、安装并配置TFTP

6.1、安装TFTP

yum install -y xinetd
yum install -y tftp-server

6.2、编辑配置文件vim /etc/xinetd.d/tftp

image

6.3、启动服务并查看状态

systemctl start tftp
systemctl status tftp
systemctl enable tftp

image

7、挂载安装源(要批量安装的系统)

mount [ISO镜像] /pxe/yumsource/    #将ISO镜像文件挂载到yumsource路径

检查路径文件:

image

8、设置UEFI启动文件

8.1、进入在tftpboot目录下创建一个uefi目录

cd /var/lib/tftpboot/
mkdir uefi

8.2、启动文件解压拷贝
解压shim文件并拷贝shim.ufi启动文件到/vat/lib/tftpboot/uefi目录下

cp /pxe/yumsource/Packages/shim-x64-15-2.el7.centos.x86_64.rpm /tmp/
cd /tmp
rpm2cpio shim-x64-15-2.el7.centos.x86_64.rpm |cpio –idmv  #解压shimRPM包

image

8.3、将解压的shim.efi引导拷贝到tftp监听目录下,每种OS的类型路径可能不一致酌情修改

cp /tmp/boot/efi/EFI/centos/shim.efi /var/lib/tftpboot/uefi/

8.4、拷贝安装源中的相应文件到/var/lib/tftpboot/uefi/目录下

cp /pxe/yumsource/EFI/BOOT/grubx64.efi /var/lib/tftpboot/uefi/
cp /pxe/yumsource/images/pxeboot/vmlinuz /var/lib/tftpboot/uefi/
cp /pxe/yumsource/images/pxeboot/initrd.img /var/lib/tftpboot/uefi/

8.5、 创建grub.cfg引导文件

cd /var/lib/tftpboot/uefi/
vi grub.cfg
添加以下内容:
set timeout=5
  menuentry 'REDHAT 7' {
  linuxefi uefi/vmlinuz ip=dhcp inst.ks=ftp://172.18.0.1:/other/ks.cfg
  initrdefi uefi/initrd.img
}

aarm操作系统grub.cfg配置文件如下:
set timeout=5
  menuentry 'REDHAT 7' {
  linux uefi/vmlinuz ip=dhcp inst.ks=ftp://172.18.0.1:/other/ks.cfg
  initrd uefi/initrd.img
}

timeout为安装界面等待时间
Inst.ks为自动安装配置文件的路径。

8.6、设置引导文件权限
设置路径/var/lib/tftpboot/uefi 中的5个文件权限为777

cd /var/lib/tftpboot/uefi
chmod 777 *

image

9、设置自动安装的ks文件

9.1、Kickstart介绍
Kickstart 安装提供一个安装过程自动化的方法,可以是部分自动化,也可以是完全自动化。Kickstart 文件包含所有安装程序会问到的问题答案,比如系统中使用的时区、如何对驱动器进行分区、或者应该安装哪些软件包。安装开始时提供一个准备好的 Kickstart 文件可让您进行自动安装,而不需要用户介入。这在同时向大量系统中部署 Red Hat Enterprise Linux 时特别有用。
可将 Kickstart 文件保存在独立服务器系统中,并由每台计算机在安装过程中读取。这个安装方法可支持单一 Kickstart 文件在多个机器中安装 Red Hat Enterprise Linux,使其成为网络和系统管理员的理想工具。
其余详细介绍可以通过访问redhat官网的说明文档了解:

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/chap-kickstart-installations

Kickstart配置文件分为几个部分,每部分必须按顺序指定。除非特别说明,每部分内的项目则不必按序排列。各部分的顺序为:

Command 部分——这部分是对OS安装中一些设置项进行设置,分为必选的和可选的,必须在您的 Kickstart 文件中包含必须的选项,这样才能实现全自动安装。
使用 %addon addon_name 命令,则可在 command 部分使用包含安装程序的扩展功能的 Anaconda 附加组件。
%packages 部分——这部分为软件包安装,选定安装OS所需的软件。
%anaconda 部分——可在 Kickstart 文件的 %anaconda 部分配置附加安装选项。这个部分控制安装系统的用户界面行为。
%pre 和 %post 部分——这两个部分的顺序不限,也不是必须的。
%pre为预安装部分,您可以在解析 Kickstart 文件后、开始安装前立即添加要在该系运行执行的命令。
%post为安装后部分,您可以在安装完成后、第一次重启前立即添加要在该系统中运行的命令。

9.2、导入KS文件部署

根据要求导入修改好的ks.cfg到/pxe/other/,然后将权限修改位755
vim编辑“ks.cfg”文件内容,可以进行修改,实现自动化部署。

#version=DEVEL

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


#repo --name="rhel7" --baseurl=ftp://172.18.0.1/yumsource

# Install or upgrade?
install

# Use CDROM installation media
# cdrom

# Use network installation
url --url=ftp://172.18.0.1/yumsource

# Use graphical install
# graphical
text

# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'

# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8

# Network information
network --bootproto=dhcp

# Root password
rootpw --plaintext admin123456

# System services
services --enabled="chronyd"

# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled

# System timezone
timezone Asia/Shanghai --isUtc --ntpservers=ntp.aliyun.com

# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

# Partition clearing information
clearpart --all --initlabel

# Disk partitioning information
# autopart --type=lvm

part /boot --fstype="xfs" --ondisk=sda --size=500
part /boot/efi --fstype="efi" --ondisk=sda --size=2048
part sda3 --fstype="lvmpv" --ondisk=sda --size=430000 --grow
volgroup vg0 sda3
logvol swap  --fstype="swap" --size=65536  --name=lv_swap --vgname=vg0
logvol /     --fstype="xfs"  --size=102400 --name=lv_root --vgname=vg0
logvol /home --fstype="xfs"  --size=51200  --name=lv_home --vgname=vg0
logvol /var  --fstype="xfs"  --size=102400 --name=lv_var  --vgname=vg0 --grow
#
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end

# What to do after installation
reboot


# #############################################################################

%packages

@core

ipmitool*
kexec-tools*
kernel-tools*
expect*
lldpad*
chrony*
gdb*
#http*
#telnet*
pciu*
#tuned*
#xfsdump*

%end



%pre
%end


%anaconda
%end



%post


systemctl enable lldpad
systemctl start lldpad 

###########


cd /tmp
wget ftp://172.18.0.1/other/*



###########


##########


%end

五、服务器设置PXE开始安装

5.1、 加载gurb开始安装

image

5.2、已经开始调用ks文件进行自动配置

image

六、FAQ

6.1、华为Taishan服务器开始安装操作时黑屏

当服务器配置了Avago SAS3408iMR/Avago SAS3416iMR RAID卡时,需要将“Advanced > MISC Config”界面中参数“Support Smmu”设置为“Disabled”。
调试好ks脚本后可以不需要修改该项,虽然不输出安装进度,但是操作系统是可以正常安装的,安装完毕后界面就可以显示。

案例参考https://support.huawei.com/enterprise/zh/doc/EDOC1100088654/1cd23d9b

image

赞(16)
未经允许不得转载:未来往事 » PXE批量自动安装Linux (UEFI)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    之前好多教程都没有实现,博主的教程一遍就成功了,赞赞赞

    爱分享4年前 (2020-11-16)回复
    • ?

      join4年前 (2020-11-16)回复