相信不少人都有过装系统的经历,之前是用光盘,如今基本都是用U盘来装系统。咱们只须要制做一个U盘驱动便可,安装起来方便快捷。但若是是企业须要同时安装大量的系统时,U盘很显然不适合,它会耗费大量的时间。这时咱们就能够用到PXE远程安装服务了,它能够提供大量的客户机同时安装系统。可是,同时安装的客户机数量是受到带宽的限制的。并且在安装系统时,还须要手动进行部分设置。这时咱们就会用到Kickstart无人值守安装。linux
PXE:预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动能够不依赖本地数据存储设备(如硬盘)或本地已安装的操做系统。 工做于Client/Server的网络模式,支持工做站经过网络从远端服务器下载映像,并由此支持经过网络启动操做系统,在启动过程当中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操做系统。严格来讲,PXE 并非一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必需要有 PXE Client。PXE 协议可使计算机经过网络启动。此协议分为 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,那么它就能够经过 TFTP 协议到 TFTP Server 上下载所需的文件了。vim
Kickstart:是一种无人值守的安装方式。它的工做原理是在安装过程当中记录典型的须要人工干预填写的各类参数,并生成一个名为ks.cfg的文件。若是在安装过程当中(不仅局限于生成Kickstart安装文件的机器)出现要填写参数的状况,安装程序首先会去查找Kickstart生成的文件,若是找到合适的参数,就采用所找到的参数;若是没有找到合适的参数,便须要安装者手工干预了。因此,若是Kickstart文件涵盖了安装过程当中可能出现的全部须要填写的参数,那么安装者彻底能够只告诉安装程序从何处取ks.cfg文件,而后就去忙本身的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。centos
1. PXE Client 从本身的PXE网卡启动,向本网络中的DHCP服务器索取IP; 2. DHCP 服务器会分配给客户机的IP,同时告知PXE文件的放置位置(该文件通常是放在一台TFTP服务器上) ; 3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件; 4. PXE Client 取得pxelinux.0 文件后之执行该文件; 5. 根据pxelinux.0 的执行结果,经过TFTP服务器加载内核和文件系统 ; 6. 进入安装画面, 此时能够经过选择HTTP、FTP、NFS 方式之一进行安装(我用的是FTP)。
用VMware14 虚拟机来进行本次实验:安全
1.首先为了方便实验,须要一台CentOS7同时部署DHCP、TFTP、FTP服务来做为PXE服务端。服务端须要配置双网卡,一块为NAT模式,用来联网安装所需程序,一块为仅主机模式,配置一个固定IP用来与局域网互通。
2.新建一台虚拟机用来做为PXE客户端,用来进行远程安装,安装的系统也为CentOS7。bash
1.给客户端添加一块网卡,并将网络模式改成仅主机模式。服务器
2.进入“/network-scripts/”目录下,复制一份“ifcfg-ens33”配置文件,命名为“ifcfg-ens36”。“-p”为保留原有权限。网络
输入:cd /etc/sysconfig/network-scripts/ 输入:cp -p ifcfg-ens33 ifcfg-ens36
3.用vim编辑器对配置文件“ifcfg-ens36”进行编辑,将“dhcp”改成“static”,“ens33”改成“ens36”,删除“UUID”,同时添加IP地址、子网掩码、网关。app
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 UUID=7bdb3fdc-0c3b-4a92-918d-3815b0816b02 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.100 NETMASK=255.255.255.0 GATEWAY=192.168.100.1
4.重启网络服务,再查看一下网络配置。“ens36”网卡的固定IP已经设置成功。dom
输入:systemctl restart network 输入:ifconfig
5.安装DHCP服务所需软件包。编辑器
输入:yum install dhcp -y
6.复制一份DHCP主配置文件的模板,覆盖DHCP的主配置文件。
输入:cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
7.用vim编辑器对DHCP服务主配置文件进行编辑,添加一个“192.168.100.0”网段的配置文件,地址池可根据具体状况本身决定,主要是下一个TFTP服务器的路径和引导程序的位置。
添加: subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.20 192.168.100.30; option routers 192.168.100.100; option domain-name-servers 114.114.114.114; next-server 192.168.100.100; filename "pxelinux.0"; }
8.安装“syslinux”软件包和“tftp-server”软件包。
输入:yum install syslinux -y 输入:yum install tftp-server -y
9.查看一下“syslinux”和“tftp-server”软件包的配置文件,我将重要的配置文件标了出来。
输入:rpm -ql syslinux |grep pxelinux.0 输入:rpm -ql tftp-server
10.复制一份“pxelinux.0”文件到“/var/lib/tftpboot/”目录下,并查看是否复制成功。
输入:cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 输入:ls /var/lib/tftpboot/
11.用vim编辑器对TFTP服务的配置文件进行编辑,将“disable”后的“yes”改成“no”,开启TFTP服务。
输入:vim /etc/xinetd.d/tftp
12.安装FTP服务所需软件包。
输入:yum install vsftpd -y
13.进入到FTP服务的站点目录下,新建一个centos7目录。
输入:cd /var/ftp/ 输入:mkdir centos7
14.将PXE客户端所须要的光盘镜像挂载到刚才建立的centos7目录下,并查看挂载信息(你也能够直接复制过去)。
输入:mount /dev/sr0 /var/ftp/centos7/ 输入:df -h
15.进入到“centos7/images/pxeboot/”目录下(能够一步直接进入),将文件“initrd.img”和“vmlinuz”复制到“/var/lib/tftpboot/”目录下。
输入:cd centos7/images/pxeboot/ 输入:cp initrd.img vmlinuz /var/lib/tftpboot/
16.查看一下“ /var/lib/tftpboot/”目录,已经有了三个文件了,其中“pxelinux.0”是引导程序文件,“vmlinuz”是压缩内核文件,“initrd.img”是系统初始化文件。如今还差一个默认的启动菜单文件,因此咱们直接进入“/var/lib/tftpboot/”目录,建立一个目录“pxelinux.cfg”,而后在目录“pxelinux.cfg”内新建一个文件“default”。
输入:ls /var/lib/tftpboot/ 输入:cd /var/lib/tftpboot/ 输入:mkdir pxelinux.cfg 输入:cd pxelinux.cfg/ 输入:vim default
17.在“default”文件中,输入如下内容。
default auto //默认自动模式 prompt 1 //等待时间1s label auto //自动模式安装 kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux text //文本模式安装 kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue //进入救援模式 kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
18.关闭防火墙和加强性安全功能,同时开启DHCP、TFTP、FTP服务。
输入:systemctl stop firewalld.service 输入:setenforce 0 输入:systemctl start dhcpd 输入:systemctl start tftp 输入:systemctl start vsftpd
19.我们新建一个虚拟机,具体配置以下图,注意网络为仅主机模式。
20.打开新建的虚拟机做为PXE客户机,选择网络驱动。
21.客户机会获取到DHCP服务分配的IP地址,而后启动引导程序,加载默认的启动菜单。此时须要回车才会继续。
22.在回车后,稍做等待就会进入系统安装的设置界面。
23.咱们能够看到PXE远程安装服务,在安装过程当中任须要人工进行设置,而咱们须要的是无人值守安装,那么咱们能够配置“kickstart”程序。首先安装一个“system-config-kickstart”软件包。
输入:yum install system-config-kickstart -y
24.咱们进入图形化界面(能够用“init 5”命令进入),进入Kickstart的配置面板。
25.基本配置,设置好默认语言和时区,同时设置root用户密码,勾选安装后重启。
26.安装方法,选择FTP,同时输入FTP服务器的路径和存放镜像文件的目录。
27.引导装载程序选项,勾选安装引导装载程序便可。GRUB密码也能够设置,这样系统会更加安全。
28.分区信息,点击添加分别设置“/boot”、“/home”、“swap”、“/”等分区的大小。注意根分区“/”不用设置大小,直接勾选使用磁盘所有未使用空间便可。
29.网络配置,添加一块ens33网卡,网络类型默认的DHCP模式便可。
30.防火墙配置,禁用SELinux。
31.安装后脚本,选择使用解释程序,输入“/bin/bash”便可。
32.保存配置好的文件,将文件“ks.cfg”保存到FTP服务的站点目录”/var/ftp“下。
33.咱们先进入root的家目录,用vim编辑器进入“anaconda-ks.cfg”文件,这是“ks.cfg”的模板文件,咱们将其中的安装包命令复制,粘贴到“ks.cfg”文件中去。
输入:cd ~ 输入:vim anaconda-ks.cfg 输入:cd /var/ftp/ 输入:vim ks.cfg
34.咱们再进入“/var/lib/tftpboot/pxelinux.cfg/” 目录,用vim编辑器对“default”文件进行编辑,在自动模式的文件后面添加一个kickstart配置文件的路径。
default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
35.咱们再新建一台虚拟机,配置与以前的相同。
36.启动新建的虚拟机,操做与PXE远程安装同样,不过此次不须要在手动设置了,系统会自动执行咱们在“ks.cfg”文件中配置的内容。