目录
在大规模的Linux应用环境中,当数量达到十几至上百台服务器裸机实现快速安装系统,使用PXE就能高效批量网络装机,还能使用Kickstart无人值守安装,大大减少了管理员的负担。下面就简单介绍一下PXE和Kickstar配置方式。
一、部署PXE远程安装服务原理
1、PXE原理
PXE是由Intel公司开发的网络引导技术,工作在 Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
2、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上下载所需的文件。
3、PXE优点
(1)规模化:同时装配多台服务器;
(2)自动化:安装系统、配置各种服务;
(3)远程实现:不需要光盘、U盘等安装介质。
4、部署PXE的前提条件
(1)客户端的网卡支持PXE协议(集成 BOOTROM芯片),且主板支持网络引导。
(2)服务端中有一台DHCP服务器以便为客户机自动分配地址、指定引导文件位置。服务器通过TFTP (Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
(3)其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数PC都能够提供此支持,只需在BTOS设置中允许从Network或LAN启动即可。
5、KickStart概述
(1)KickStart是一种无人职守安装方式。
(2)KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件。
(3)在其后的安装过程中(不只局限于生成KickStart安装文件的机器),当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
(4)如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
6、PEX服务的构建过程
(1)PXE客户端会向DHCP服务器发送申请IP地址的请求。
(2)DHCP服务端会响应PXE客户端的请求,自动从IP地址池中分配一个IP地址给PXE客户端,并且告知PXE客户端,TFTP服务器的IP地址和PXE引导程序文件“pxelinux.0”,默认在TFTP共享目录/var/lib/tftpboot/下
(3)PXE客户端向TFTP服务器发起获取“pxelinux.0”引导程序文件的请求。
(4)TFTP服务端响应PXE客户端的请求,将其共享的“pxelinux.0”文件传输给PXE客户端。
(5)PXE客户端通过网络来启动到系统安装主界面。
(6)PXE客户端向文件共享服务器(ftp、http、nfs等)发起获取Centos或Windows系统安装文件的请求。
(7)文件共享服务响应PXE客户端的请求,将共享的系统安装文件传输给PXE客户端。
(8)PXE客户端进入到安装提示向导界面,用户需要手动来完成系统安装的操作。
7、TFTP
(1)TFTP(全称:Trivial File Transfer Protocol)是一个小而易于实现的文件传送协议。
(2)TFTP是基于UDP数据报,需要有自己的差错改正措施。
(3)TFTP只支持文件传输,不支持交互,没有庞大的命令集。也没有目录列表功能,以及不能对用户进行身份鉴别。但它的代码所占内存较小,不需要硬盘就可以固化TFTP代码,很适合较小的计算机和特殊用途的设备。
(4)TFTP和FTP一个主要的区别就是它没有交互式,且不进行身份验证。
(5)TFTP一般用于传输小文件
8、xinetd
xinetd(全称:extended internet daemon),用来托管tftp,是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。
9、vmlinuz(可引导的、压缩的内核)
其中“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。
10、initrd(系统初始化文件)
initrd是“initial ramdisk”的简写。 initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。initrd.img主要是用于加载ext4等文件系统及scsi设备的驱动。
11、pxelinux.0(启动菜单文件)
(1)启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载驱动。
(2)默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作自动或手动建立。
(3)/var/lib/tftpboot/pxelinux.cfg/default文件,因为是由pxelinux.0这个文件决定好的。
二、搭建PXE远程安装服务器步骤
1、所需安装包
(1)dhcp.x86_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos:用来给客户机分配ip地址
(2)syslinux-4.05-15.el7.x86_64.rpm:用来提供pxe的引导程序
(3)tftp-server.x86_64 0:5.2-22.el7.rpm:用来提供引导镜像文件的下载
(4)xinetd.x86_64 2:2.3.15-14.el7:用来托管tftp
2、安装步骤
(1)安装并启用DHCP服务
[root@localhost ~]# yum install dhcp -y #(安装dhcp的软件包)
[root@localhost ~]# cp -rfp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #(拷贝)
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf #(配置文件)
ddns-update-style none; #(禁止动态更新)
subnet 192.168.100.0 netmask 255.255.255.0 { #(配置网段)
range 192.168.100.150 192.168.100.200; #(配置地址池)
option routers 192.168.100.100; #(配置网关)
next-server 192.168.100.100; #(指定tftp服务器的地址)
filename "pxelinux.0"; #(指定pxe引导程序的文件名)
}
[root@localhost ~]# systemctl start dhcpd #(开启dchp服务)
[root@localhost ~]# systemctl enable dhcpd #(开机自启动dhcp服务)
(2)安装并启用TFTP服务
[root@localhost ~]# yum install tftp-server -y #(安装tftp-server和 xinetd的软件包)
[root@localhost ~]# mount /dev/sr0 /mnt/ #(光盘挂载)
[root@localhost ~]# vim /etc/xinetd.d/tftp #(配置文件)
disable = no #(开启TFTP服务)
[root@localhost ~]# cd /mnt/images/pxeboot/ #(进入到pxeboot目录下)
[root@localhost pxeboot]# ls #(查看pxeboot目录下文件)
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/ #(将两个文件拷贝到tftpboot目录下)
[root@localhost pxeboot]# ls /var/lib/tftpboot/ #(查看tftpboot目录下文件)
initrd.img vmlinuz
[root@localhost ~]# systemctl start tftp #(开启tftp服务)
[root@localhost ~]# systemctl status tftp #(查看tftp服务状态)
[root@localhost ~]# systemctl enable tftp #(开机自启动tftp服务)
(3)准备PXE引导程序pxelinux.0
[root@localhost ~]# yum install syslinux -y #(安装syslinux的软件包)
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0 #(查看pxe引导程序所在的位置)
/usr/share/syslinux/pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #(拷贝文件系统引导文件到tftpboot目录下)
[root@localhost ~]# cd /var/lib/tftpboot/ #(到tftpboot目录下)
[root@localhost tftpboot]# mkdir pxelinux.cfg #(创建一个pxelinux.cfg目录)
[root@localhost tftpboot]# ls #(查看创建pxelinux.cfg的目录)
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# vim pxelinux.cfg/default #(配置启动菜单文件)
default auto #(指定默认入口名称 ,对应下面的label auto)
prompt 0 #(设置是否等待用户选择,1 表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式)
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 #(文本安装模式,出现boot:时输入linux text)
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg #(指定网络路径)
label linux rescue #(救援模式,出现boot:时输入linux rescue)
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg #(指定网络路径)
(4)安装ftp服务,准备CentOS7安装源
[root@localhost ~]# yum install vsftpd -y #(安装vsftpd的软件包)
[root@localhost ~]# mkdir /var/ftp/centos7 #(创建centos7目录)
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/ & #(将mnt目录下的所有文件拷贝到centos7目录下)
[root@localhost ~]# systemctl start vsftpd #(开启vsftpd服务)
[root@localhost ~]# systemctl status vsftpd #(查看vsftpd服务状态)
[root@localhost ~]# systemctl enable vsftpd #(开机自启动vsftpd服务)
三、实现Kickstart无人值守安装
1、所需安装包
(1)system-config-kickstart.noarch 0:2.9.7-1.el7.rpm:用来无人值守安装
2、安装步骤
(1)准备安装应答文件
在CentOS 7系统中安装system-config-kickstart工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑CentOS 7安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。
[root@localhost ~]# yum install system-config-kickstart.noarch -y
(2)Kickstart配置程序下配置
(3)配置ks.cfg文件
[root@localhost ~]# cd /var/ftp/ #(到ftp目录下)
[root@localhost ftp]# ls #(查看ks.cfg文件)
centos7 ks.cfg pub
[root@localhost ftp]# vim ks.cfg #(编辑ks.cfg文件)
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install #(全新安装)
# Keyboard layouts
keyboard 'us' #(英文键盘)
# Root password
rootpw --iscrypted $1$QeQPBKWP$GJCl.NA7aYxOarXGweqXy. #(root密码)
# Use network installation
url --url="ftp://192.168.100.100/centos7" #(网络安装路径)
# System language
lang zh_CN #(系统语言,zh_CN表示中文)
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical #(字符模式安装,graphical表示图形化安装)
firstboot --disable
# SELinux configuration
selinux --disabled #(禁用selinux)
# Firewall configuration
firewall --disabled #(禁用防火墙)
# Network information
network --bootproto=dhcp --device=ens33 #(网卡配置)
# Reboot after installation
reboot #(安装完重启)
# System timezone
timezone Asia/Shanghai #(时区:上海)
# System bootloader configuration
bootloader --location=mbr #(mbr引导 )
# Partition clearing information
clearpart --all #(清除所有分区信息和初始化分区标签)
# Disk partitioning information
part /boot --fstype="xfs" --size=500 #(分区配置)
part swap --fstype="swap" --size=4096 #(分区配置)
part / --fstype="xfs" --grow --size=1 #(分区配置)
%packages
@^gnome-desktop-environment #(安装桌面环境)
@base #(安装基础软件包)
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
kexec-tools
%end
总结
1、实现PXE远程装机要求网卡支持PXE功能,且必须有Linux安装源,以及可用的TFTP、DHCP服务器。
2、无人值守的应答文件可通过Kickstar配置程序来完成,该程序由system-config-kickstart软件包提供。