RHEL8.4使用PXE搭建网络安装源+KickStart实现系统自动安装

Posted 从善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RHEL8.4使用PXE搭建网络安装源+KickStart实现系统自动安装相关的知识,希望对你有一定的参考价值。

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本博文使用的演示系统是 RHEL8.4,其关闭了防护墙和selinux

[root@rhel8 ~]# systemctl disable firewalld --now
[root@rhel8 ~]# setenforce 0

一、使用PXE服务器搭建网络安装源

1.1 PXE介绍

预启动执⾏环境(Preboot eXecution Environment,PXE)也被称为预执⾏环境,提供了⼀种使⽤⽹络接⼝(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。

1.2 安装DHCP服务端软件

分配一块网卡,并将其ip地址设置为 10.1.0.1/24。例如,我这边使用Vmware给RHEL8分配了一个名为VMnet1的仅主机类型的网卡,并关闭了VMware自带的dhcp功能👇

给PXE服务器新增一个 VMnet1网卡,用于dhcp服务器分配IP地址:

为 VMnet1 分配 ip 地址:

[root@rhel8 ~]# nmcli connection add con-name static type ethernet ipv4.addresses 10.1.0.1/24 ipv4.method manual

安装DHCP服务器程序:

[root@rhel8 ~]# yum -y install dhcp-server

编辑dhcp-server的配置⽂件:

[root@rhel8 ~]# cp /usr/share/doc/dhcpserver/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@rhel8 ~]# vim /etc/dhcp/dhcpd.conf
[root@rhel8 ~]# cat /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.255.0 {
 range 10.1.0.100 10.1.0.200;  # dhcp地址分配范围
 next-server 10.1.0.1;         #dhcp服务器告诉dhcp客户端,如果是PXE引导,那么tftp服务器的地址是10.1.0.1
 filename "pxelinux.0";        #dhcp服务器告诉dhcp客户端,如果是PXE引导,你可以到tftp服务器的根目录(/var/lib/tftpboot/)下载pxelinux.0文件
}

重启dhcp服务

[root@rhel8 ~]# systemctl restart dhcpd
[root@rhel8 ~]# systemctl enable dhcpd

1.3 搭建 tftp服务器

安装tftp-server软件

[root@rhel8 ~]# yum -y install tftp-server

启动tftp服务器

[root@rhel8 ~]# systemctl enable tftp --now

安装syslinux库,将syslinux库中所有的文件,拷贝到 /var/lib/tftpboot/ 中:

[root@rhel8 ~]# yum -y install syslinux
[root@rhel8 ~]# cp -rf /usr/share/syslinux/* /var/lib/tftpboot/

在 /var/lib/tftpboot/ 中创建目录名为 建pxelinux.cfg的目录,该⽬录是pxe客户端在执⾏完pxelinux.0后会⾃动请求的⼀个⽬录,会请求该⽬录下的boot menu

[root@rhel8 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg

1.4 搭建http服务器

安装httpd

[root@rhel8 ~]# yum -y install httpd

将安装文件 .iso 挂载到 /var/www/html/iso 文件夹下面:

[root@rhel8 ~]# mkdir /var/www/html/iso #创建/var/www/html/iso文件夹
[root@rhel8 ~]# mount /home/share/rhel-8.3-x86_64-dvd.iso /var/www/html/iso # /home/share/rhel-8.3-x86_64-dvd.iso这是我的 .iso文件,你要修改成自己的文件路径

启动服务:

[root@rhel8 ~]# systemctl enable httpd --now

将文件vmlinuz、initrd.img 拷贝到 /var/lib/tftpboot/ 文件夹下面,pxe客户端启动的时候会自动获取这两个文件:

cp /var/www/html/iso/isolinux/vmlinuz /var/www/html/iso/isolinux/initrd.img /var/lib/tftpboot/

此时我们应该可以通过本地浏览器,访问我们刚刚搭建的http服务器。例如,输入“ http://IP/iso”:

1.5 编写pxelinux配置文件

进入 /var/lib/tftpboot/pxelinux.cfg/ 文件夹下面,创建一个default文件:

[root@rhel8 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32  # 默认的安装选择UI文件
timeout 10        # 默认超时时间 10=1秒
label genglspxetest
  #注意下面的项前面有 2个空格
  kernel vmlinuz  # PXE自动加载的内核文件
  #注意下面的等号左右没有空格
  append initrd=initrd.img method=http://10.1.0.1/iso # 附加的一些选项,method指明网络安装源地址

我们这边可以克隆一个或多个虚拟机,每个虚拟机只配置一个网卡 VMnet1,

启动这些虚拟机,会看到下面的界面:

一秒之后开始加载系统。


二、使用KickStart实现系统自动安装

作⽤:⾃动安装操作系统

KickStart就是⼀个配置⽂件,该配置⽂件记录了你安装操作系统的步骤,如果你安装⼀个新的操作系统,采⽤了现有的kickstart配置⽂件,那么你当前安装的操作系统就会按照kickstart配置⽂件描述的步骤安装。

在 /var/www/html/ 中创建 ks文件:

[root@rhel8 ~]# vim /var/www/html/pxetest-ks.cfg
#version=RHEL8
# Use graphical install
graphical
url --url="http://10.1.0.1/iso"
# repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream

%packages
@^graphical-server-environment
kexec-tools

%end

# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --hostname=localhost.localdomain

# Use CDROM installation media
# cdrom

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

ignoredisk --only-use=nvme0n1
autopart
# Partition clearing information
clearpart --none --initlabel

# System timezone
timezone America/New_York --isUtc

# Root password
rootpw --iscrypted $6$ocppieoYdY5bCXvW$BnNUh8d/Y1q8R.Y8.vHXfeEf0jLIIYS1.pF0ZsG8Deldw3gKB7CVNCmAnuZMncgSHcq2mP.zJjVvaTNF5Bi9G0

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

上面文件的 root 密码是 “root”,你可以使用 openssl生成一个新的密文替换上面的密文

修改 /var/lib/tftpboot/pxelinux.cfg/default 文件,添加 pxetest-ks.cfg文件的下载地址:

[root@rhel8 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32  # 默认的安装选择UI文件
timeout 10        # 默认超时时间 10=1秒
label genglspxetest
  #注意下面的项前面有 2个空格
  kernel vmlinuz  # PXE自动加载的内核文件
  #注意下面的等号左右没有空格
  append initrd=initrd.img method=http://10.1.0.1/iso ks=http://10.1.0.1/pxetest-ks.cfg # 附加的一些选项,method指明网络安装源地址,ks指明ks文件的下载地址

重启之前的测试虚拟机,会发现 KickStart会帮我们根据配置文件自动安装系统(例如,分区、时间、键盘、语言等)


这是从善若水的博客,欢迎大家关注我!


以上是关于RHEL8.4使用PXE搭建网络安装源+KickStart实现系统自动安装的主要内容,如果未能解决你的问题,请参考以下文章

PXE 高效批量网络装机

搭建本地yum源

Linux网络服务------PXE高效批量网络装机(万字图文详解)

无人安装值守pxe

Linux网络之PXE高效批量网络装机

搭建PXE远程安装服务器