PXE + KickStart实现全自动化系统安装

关于kickstart的介绍以及自动应答脚本的生成设置请参考我的上一篇博客 kickstart自动应答脚本生成及虚拟机自动安装 ,而且本文的部分设置包含在上一篇博客中,所以此文有略过,如果要完成自动化安装全程,需要先阅读上一篇博客,然后接着本文进行配置

什么是PXE,它的作用是什么

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

PXE + KickStart自动化系统安装所需条件或设置

  • TFTP 服务器;
  • DHCP 服务器;
  • HTTP服务
  • pxelinux.0
  • KickStart所生成的ks.cfg配置文件

一. tftp服务的安装和配置

1. 如果不知道提供tftp服务的软件是什么可以使用以下命令进行搜索
[root@foundation ~]# yum search tftp
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
==================================== N/S matched: tftp ====================================
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)

Name and summary matches only, use “search all” for everything.
2. 通过yum安装tftp服务
[root@foundation ~]# yum install tftp-server.x86_64
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package tftp-server-5.2-12.el7.x86_64 already installed and latest version
Nothing to do
#因为我个人系统中已经安装过了所以提示nothing to do

3. 拷贝系统安装过程中需要用的配置或者内核模块等到tftp服务目录中

cp /var/www/html/iso/isolinux/* /var/lib/tftpboot/
#tftp开机自启动
vim /etc/xinetd.d/tftp 
编辑disable的选项为no

PXE + KickStart实现全自动化系统安装_第1张图片

二. httpd服务的安装和配置

yum install httpd
#安装httpd服务
mkdir /var/www/html/iso
#在httpd服务的根目录下为镜像的挂载创建一个目录
mount /iso/rhel-server-7.2-x86_64-dvd.iso /var/www/html/iso/
#挂载镜像到httpd服务上
systemctl start httpd
#在浏览器中访问测试httpd是否可以访问,下图为正常访问状态

PXE + KickStart实现全自动化系统安装_第2张图片

cp /var/www/html/iso/isolinux/* /var/lib/tftpboot/
#然后将系统启动所需配置及文件复制到tftp访问目录中

三. dhcp服务的安装和配置

yum install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#cp: overwrite '/etc/dhcp/dhcpd.conf'? y
用示例配置文件覆盖dhcp配置文件

然后我们对dhcp配置文件进行对应修改,使其能够正确提供服务
vim /etc/dhcp/dhcpd.conf

 # option definitions common to all supported networks...
  7 option domain-name "example.com";       #域名
  8 option domain-name-servers 172.25.254.250;#DNS
  9 
 10 default-lease-time 600;#默认租约期
 11 max-lease-time 7200;#最长租约期

    26 
 27 #subnet 10.152.187.0 netmask 255.255.255.0 {
 28 #}#需要注释掉
 29 
 30 # This is a very basic subnet declaration.
 31 
 32 subnet 172.25.254.0 netmask 255.255.255.0 {#网段及子网掩码
 33   range 172.25.254.60 172.25.254.66; ##获取的ip地址范围设置
 34   option routers 172.25.254.250;  ####网关
 35   next-server 172.25.254.36; ###tftp主机地址
 36   filename "pxelinux.0";  #pxe启动程序
 37 }
 38 #之后的内容可以全部删除掉

PXE + KickStart实现全自动化系统安装_第3张图片

四. pexlinux.0获取和相关配置

首先通过查找相关信息得到pxelinux.0的来源

[root@foundation ~]# yum search pxelinux
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
==================================== Matched: pxelinux ====================================
syslinux.x86_64 : Simple kernel loader which boots from a FAT filesystem
syslinux-extlinux.x86_64 : The EXTLINUX bootloader, for booting the local system.
然后安装相关软件获得pxelinux.0
[root@foundation xinetd.d]# yum install syslinux.x86_64
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package syslinux-4.05-12.el7.x86_64 already installed and latest version
Nothing to do

查找pxelinux.0文件以及用法,以后操作都是根据查找到的文档指导完成的

[root@foundation xinetd.d]# rpm -ql syslinux | grep pxelinux
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/pxelinux.0
[root@foundation xinetd.d]#

拷贝文件到指定目录,下面操作指导可以在/usr/share/doc/syslinux-4.05/pxelinux.txt中找到

cp /usr/share/syslinux/pxelinux.0 /var/lig/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

配置/var/lib/tftpboot/pxelinux.cfg/default文件使安装程序能够找到镜像以及自动应答脚本

#在关键字label linux后的第四行进行修改,指定你的镜像地址与自动应答脚本的位置
label linux
  menu label ^Install Red Hat Enterprise Linux 7.2
  kernel vmlinuz
  menu default
  append initrd=initrd.img repo=http://172.25.254.36/iso/ ks=http://172.25.254.36/ks.cfg quiet##########修改这一行额!!!

PXE + KickStart实现全自动化系统安装_第4张图片

关于一开始提到的KickStart所生成的ks.cfg配置文件可以参考 kickstart自动应答脚本生成及虚拟机自动安装 ,最后的结果就是有一个可以通过httpd服务访问到的ks.cfg自动应答脚本文件就可以了

完成配置之后检查服务

1.防火墙关闭

systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld

2.开启tftp并检查服务端口是否开启

[root@foundation xinetd.d]# systemctl start tftp.service
[root@foundation xinetd.d]# ss -anulpe | grep tftp
UNCONN 0 0 :::69 :::* users:((“in.tftpd”,pid=11738,fd=0),(“systemd”,pid=1,fd=49)) ino:43984 sk:ffff8800d6078000 v6only:0 <->

3.开启dhcp

systemctl start dhcpd.service 

如果服务启动有问题,可以先清空日志信息,再重启服务,查看日志信息定位错误

[root@foundation ~]>/var/log/messages
[root@foundation ~]systemctl start dhcpd.service 
[root@foundation ~]cat /var/log/messages

到这里基本的配置就算是完成了,接下来就是安装的选择部分了

启动选择

NCI的网络源要选择Bridge方式
Boot Options 将NIC选项放到首选启动方式,但是记得完成一次安装后要改回去,否则系统会进入循环安装过程
如果是通过物理机安装虚拟机请拔掉网线或者不要联网

PXE + KickStart实现全自动化系统安装_第5张图片

PXE + KickStart实现全自动化系统安装_第6张图片
以下为启动过程中的一些截图

进入pxe引导程序
PXE + KickStart实现全自动化系统安装_第7张图片

安装选择界面,可以看到标题是修改过的,这个的话可以在/var/lib/tftpboot/pxelinux.cfg/default这个文件中进行修改
PXE + KickStart实现全自动化系统安装_第8张图片

选择安装之后内核加载过程
PXE + KickStart实现全自动化系统安装_第9张图片

自动创建分区
PXE + KickStart实现全自动化系统安装_第10张图片

执行安装后脚本过程
PXE + KickStart实现全自动化系统安装_第11张图片

切记在完成一次安装之后需要把Boot Options 的NIC选项改回去,否则系统会进入循环安装过程

你可能感兴趣的:(shell脚本编程,linux,运维,运维开发)