PXE(Pre-boot Execution Environment,预启动执行环境)是由Inter公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统
PXE远程装机的好处:
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
搭建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软件仓库的配置方法请参阅我的上一篇博客,这里不在赘述
1
2
3
4
5
|
[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超级服务器进行管理
1
2
3
4
5
|
[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内核、初始化镜像文件
1
2
|
[root@localhost media]
# cd /media/images/pxeboot/ //将这两个文件复制到tftp服务的根目录下
[root@localhost pxeboot]
# cp vmlinuz initrd.img /var/lib/tftpboot/
|
4. 准备PXE引导程序、启动菜单文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[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服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[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工具配置安装应答文件,自动完成安装中的各种设置,从而无需手动干预,提高网络装机效率
6. 实现Kickstart无人值守安装
(1)安装system-config-kickstart工具
[root@localhost ~]# yum -y install system-config-kickstart
(2)准备安装应答文件
通过桌面菜单“应用程序”\“系统工具”\“Kickstart”即可打开“Kickstart配置窗口”,对各种安装设置进行指定
1)基本配置
2)安装方法
3)分区信息
4)网络配置
5)防火墙设置
6)软件包选择
根据需要选择需要安装的软件包分组,本例选择“基本”、“万维网服务”、“X窗口系统”、“字体”、“桌面”、“开发工具”、“中文支持”等
7)安装脚本
(3)保存自动应答文件
(4)启动自动应答文件
1
2
3
4
5
6
7
8
|
[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. 验证无人值守安装