一、原理与概念:
事实上把PXE称作是一种引导方式而不是安装方式似乎更加准确。 PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提条件是计算机的网卡必须具有引导功能,这个网卡中要有一个PXE客户端。 当计算机POST自检成功以后,BIOS把网卡中ROM的PXE客户端调入内存执行,PXE客户端通过网络中的DHCP服务器获取一个IP地址,拿到IP地址以后PXE继续引导计算机与网络中的TFTP客户端建立连接,从而从TFTP服务器中获取开机引导文件之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。
1.1 PXE工作步骤简介:
1):PXE客户端通过网络中的DHCP服务器拿到自己的IP地址。 2):拿到IP地址以后与网络中的TFTP服务器建立连接,请求下载计算机安装程序启动所需文件,其中包括pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件. 3):拿到计算机安装启动程序所需文件以后,在pxelinux.0的引导下启动安装程序,并读取pxelinux.cfg/default文件,得到安装程序所需的应答文件,既ks.cfg文件的存放位置。 4):计算机根据配置文件指定的位置的得到并且读取应答文件,开始按照应答文件的安装策略安装操作系统。同时应该文件有会指定系统安装所需要的配置文件以及二进制程序包的文件的位置。 5):计算机根据应答文件指定的位置获取系统安装所需要的配置文件以及二进制程序包,完成操作系统的自动安装。
1.2 总结
根据上边介绍的PXE的工作原理以及步骤,我们不难总结出部署PXE安装操作系统之前所需要做的准备工作,这里只谈软件环境:
在网络中配置DHCP服务器,用来给计算机自动分配IP地址 在网中配置TFTP服务器,为PXE提供安装程序启动所需要的文件 ks应答文件,配置操作系统的安装策略以及指明系统安装所需文件 配置存放系统安装文件的服务器,可以是NFS、HTTP 或 FTP 服务器,接下来将会以FTP服务作为示例。
二、实际操作
以下所有实验均采用 centos7.2009 版镜像 请提前关闭 firewalld 和 selinux (可选以下方法)
- __set_config() {
- firewall-cmd --state
- systemctl stop firewalld.service
- systemctl disable firewalld.service
- setenforce 0
- sed -i 's,^SELINUX=.*$,SELINUX=disabled,' /etc/selinux/config
- }
- __set_config
复制代码
2.1 搭建ftp服务器,将yum源拷贝到ftp上 - yum -y install autofs vsftpd
- systemctl enable --now autofs
- systemctl enable --now vsftpd
复制代码
将整个yum源拷贝至FTP服务器,不仅仅是Packages - mkdir /media/cdrom/
- mount /dev/cdrom /media/cdrom/
- cd /var/ftp
- mkdir yum
- cd yum
- cp -rf /media/cdrom/* ./
复制代码
测试 本机windows测试FTP服务器是否搭建正常,ftp://ip/ 看到我们复制过去的 yum 文件夹可以正常显示,并且可以正常访问;说明FTP服务器没有问题。
2.2 安装并配置DHCP - yum -y install dhcpd
- cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- vim /etc/dhcp/dhcpd.conf
- #删除其中所有内容,添加如下内容
- default-lease-time 600;
- max-lease-time 7200;
- log-facility local7;
- subnet 192.168.0.0 netmask 255.255.255.0{ #设置DHCP网段
- range 192.168.0.2 192.168.0.200; #设置DHCP地址池的范围
- next-server 192.168.0.95; #设置FTP服务器的地址
- filename "pxelinux.0";
- }
- systemctl enable --now dhcpd #设置DHCP开机自启动
复制代码
2.3 安装 tftp-server,xinetd,syslinux - yum -y install tftp-server syslinux xinetd
- vim /etc/xinetd.d/tftp
- " disable = no "
- systemctl enable --now xinetd
复制代码
2.4 配置系统启动文件 - cd /var/lib/tftpboot/
- cp /usr/share/syslinux/pxelinux.0 ./
- cp /var/ftp/yum/isolinux/vmlinuz ./
- cp /var/ftp/yum/isolinux/initrd.img ./
- cp /var/ftp/yum/isolinux/vesamenu.c32 ./
- cp /var/ftp/yum/isolinux/boot.msg ./
- mkdir /var/lib/tftpboot/pxelinux.cfg
- cp /var/ftp/yum/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- vim /var/lib/tftpboot/pxelinux.cfg/default
- #找到 label linux 在它上面添加如下内容,并注释掉下面标签中的menu default:
- label centos
- menu label ^Install CentOS Linux 7 PXE
- menu default
- kernel vmlinuz
- append initrd=initrd.img inst.stage2=ftp://192.168.0.95/yum inst.ks=ftp://192.168.0.95/ks.cfg quiet
复制代码
2.5 配置system-config-kickstart
如果是最小化安装的系统先安装图形化界面 - yum groupinstall -y "GNOME Desktop" -y
复制代码
进入图形化界面的命令行 - yum -y install system-config-kickstart
- 打开命令行执行
- system-config-kickstart
复制代码
1 2 3 4 5 6 7 其他的选项保持默认即可。(注意修改FTP服务器的地址!!!!) - #最后一项配置在安装后配置yum源
- mkdir /etc/yum.repos.d/old
- cp -rf /etc/yum.repos.d/* /etc/yum.repos.d/old/
- rm -f /etc/yum.repos.d/*
- echo '[base]
- name=CentOS-$releasever - Base
- #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
- baseurl=ftp://192.168.0.95/yum
- enabled=1
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/etc/yum.repos.d/CentOS-Base.repo
复制代码
注意把这个文件保存到 /root/ 目录下即可
2.6 配置 ks.cfg - #在root目录下找到anaconda-ks.cfg,在这个文件中找到下列内容并加入到 ks.cfg 中
- %packages
- @^minimal
- @core
- kexec-tools
- %end
- #将其加到 ks.cfg 配置yum的脚本之前,文件后面部分如下:
- ########################################################################################
- # Disk partitioning information
- part /boot --fstype="xfs" --size=1024
- part / --fstype="xfs" --size=20480
- %packages
- @^minimal
- @core
- kexec-tools
- %end
- %post --interpreter=/bin/bash
- mkdir /etc/yum.repos.d/old
- cp -rf /etc/yum.repos.d/* /etc/yum.repos.d/old/
- rm -f /etc/yum.repos.d/*
- echo '[base]
- name=CentOS-$releasever - Base
- #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
- baseurl=ftp://192.168.0.95/yum
- enabled=1
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/etc/yum.repos.d/CentOS-Base.repo
- %end
复制代码
2.7 将ks.cfg拷贝至 /var/ftp/ 下
三、测试
新建虚拟机,测试自动安装操作系统 (不要设置镜像地址;为空即可) 出现这个直接跳过就行 弹出安装页面选择第一个选项 这里需要我们手动点击下一步 (已识别到我们的yum源) 这里必须设置密码,否则不可下一步 安装完毕之后重启即可 如果出现这个问题,可以选择重新启动进入系统 重新启动之后可以正常进入,显示内核版本。 出现登录页面,显示安装成功 |