PXE(Pre-boot Execution Environment,预启动执行环境)是由Inter公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统


PXE远程装机的好处:

*规模化:同时装配多台服务器

*自动化:安装系统、配置各种服务

*远程实现:不需要光盘、U盘等安装介质


杨书凡16.png


搭建PXE网络环境的前提条件

    既然是通过网络传输,那么计算机在启动时,它的IP地址有谁来分配;又是怎样下载到Linux内核和给文件系统的呢?

网卡:客户机的网卡支持PXE协议,且主板主持网络引导,并设置BIOS中允许从Network或LAN启动

DHCP:网络中有一台DHCP服务器为客户机分配地址、指定引导文件,并添加相应的PXE特有配置

TFTP:通过TFTP服务器提供引导镜像文件的下载


搭建PXE远程装机服务器

    本案例PXE远程装机服务器集成了RHEL安装源、TFTP、DHCP服务

案例:随着公司业务不断发展,服务器数量也迅速增长,需要重新安装RHEL6操作系统。为了提高服务器装机效率,要求基于PXE网络实现全自动无人值守批量安装

需求描述:

1. 服务器的IP地址为192.168.1.10,所在网段为192.168.1.0/24

2. 搭建PXE网络装机服务器,为新采购的10台服务器裸机安装RHEL操作系统

3. 新装的系统必须包括基本组件、开发工具、LAMP平台,默认语言为中文

4. 为新装的系统自动配置好YUM仓库,root设置密码为password


实验步骤:

1. 准备RHEL6安装源

    RHEL安装源一般通过HTTP、FTP协议发布,也支持NFS协议。本例采用FTP发布安装源,并配置YUM软件仓库,YUM软件仓库的配置方法请参阅我的上一篇博客,这里不在赘述

[root@localhost ~]# yum -y install vsftpd           //安装vsftpd服务
[root@localhost ~]# mount /dev/cdrom /media/        //挂载系统光盘
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cp -rf /media/* /var/ftp/rhel   //准备安装源
[root@localhost ~]# service vsftpd restart          //开启vsftpd服务

 

2. 安装并启用TFTP服务

    TFTP服务默认由超级服务xinetd超级服务器进行管理

[root@localhost ~]# yum -y install tftp-server     //安装tftp服务
[root@localhost ~]# vim /etc/xinetd.d/tftp         //修改以下配置项,将yes改为no
        disable                 = no
        
[root@localhost ~]# service xinetd start           //开启xinetd服务


3. 准备Linux内核、初始化镜像文件

[root@localhost media]# cd /media/images/pxeboot/      //将这两个文件复制到tftp服务的根目录下
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/


4. 准备PXE引导程序、启动菜单文件

[root@localhost ~]# yum -y install syslinux   //安装PXE引导程序,并复制到tftp根目录下
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto           //指定默认入口名称
prompt 1               //1表示等待用户控制,0表示不等待用户控制
label auto             //图形安装
      kernel vmlinuz 
      append initrd=initrd.img devfs=nomount ramdisk_size=8192
label linux text       //文本安装
      kernel vmlinuz
      append text initrd=initrd.img devfs=nomount ramdisk_size=8192
label linux rescue     //救援模式
      kernel vmlinuz
      append rescue initrd=initrd.img devfs=nomount ramdisk_size=8192


5. 安装并启用DHCP服务

[root@localhost ~]# yum -y install dhcp          //安装dhcp服务
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf     //修改配置文件分配地址,并指定引导文件位置
# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {       //定义网段
  range 192.160.1.100 192.168.1.200;             //分配地址池
  option domain-name-servers 192.168.1.10;       //DNS服务器地址
  option domain-name "yangshufan.com";           //域名
  option routers 192.168.1.10;                   //路由地址
  option broadcast-address 192.168.1.255;        //广播地址
  default-lease-time 600;                        //默认租约时间
  max-lease-time 7200;                           //最大租约时间
  next-server 192.168.1.10;                      //PXE服务器IP地址
  filename "pxelinux.0";                         //PXE引导程序的文件名
}
[root@localhost ~]# service dhcpd start          //开启dhcpd服务,需要配置静态IP地址


    现在就可以在客户机上进行安装测试了,然而安装期间仍需手动选择语言、键盘类型、指定安装源等一系列交互操作,十分不方便,通过Kickstart工具配置安装应答文件,自动完成安装中的各种设置,从而无需手动干预,提高网络装机效率

杨书凡17.png

杨书凡18.png


6. 实现Kickstart无人值守安装

(1)安装system-config-kickstart工具

[root@localhost ~]# yum -y install system-config-kickstart


(2)准备安装应答文件

    通过桌面菜单“应用程序”\“系统工具”\“Kickstart”即可打开“Kickstart配置窗口”,对各种安装设置进行指定

1)基本配置

杨书凡19.png


2)安装方法

杨书凡26.png


3)分区信息

杨书凡21.png


4)网络配置

杨书凡22.png


5)防火墙设置

杨书凡23.png


6)软件包选择

    根据需要选择需要安装的软件包分组,本例选择“基本”、“万维网服务”、“X窗口系统”、“字体”、“桌面”、“开发工具”、“中文支持”等

杨书凡24.png


7)安装脚本

杨书凡28.png



(3)保存自动应答文件

杨书凡27.png


(4)启动自动应答文件

[root@localhost ~]# vim ks.cfg 
[root@localhost ~]# cp ks.cfg /var/ftp/rhel/ks.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 0               //修改为0,表示不等待用户控制
label auto
      kernel vmlinuz      //添加引导参数,指定ks.cfg文件的URL路径
      append ks=ftp://192.168.1.10/rhel/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192


7. 验证无人值守安装

杨书凡29.png