name: 基于BCLinux7.1搭建PXE网络安装环境
1. PXE介绍
PXE(Pre-boot Execution Environment)是由Intel公司开发的技术,支持主机(客户机)通过 远程主机提供的安装服务 安装操作系统。
1.1 PXE的基本工作原理
- PXE客户机从 支持PXE功能的网卡 启动,向本网络中的DHCP服务器获取IP地址。
- DHCP服务器返回分配给客户机的IP地址以及pxelinux.0文件的存放位置。
- PXE客户机向本网络中的TFTP服务器索取pxelinux.0文件,并执行。
- 从TFTP服务器获取pxelinux的配置文件pxelinux.cfg。
- 客户机选择启动项,从TFTP服务器下载内核文件和initrd。
- 加载内核,并启动安装过程。
为了提供PXE安装服务,需要在本地网络中开启如下服务:
- DHCP服务
为待安装机器分配IP地址,以及提供PXE安装所需要的其他信息。
- TFTP服务
用于提供PXE安装所需要的bootloader,内核镜像等文件。
- HTTP(S)、NFS、FTP服务
提供安装过程中所使用的安装源,支持HTTP(S)、NFS和FTP多种协议,本文以HTTP服务为例。
1.2 kickatart基本知识介绍
1、 红帽创建了kickstart安装方法,kickstart是一个利用Anconda工具实现服务器自动化安装的方法(对于anconda工具本文将不展开介绍,它其实就是RedHat、CentOS、Fedora等Linux系统的安装管理程序,大家在安装系统时进行的配置操作都是anconda工具提供的,请大家建立这个概念,不要与本文的内容相混淆)。
2、 通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;
3、 要开始kickstart安装,必须从制作的 引导介质 中引导系统,并输入在引导提示下 输入特殊的引导命令 。例如适用光盘安装系统(ks文件已在光盘中),在引导系统时的提示下输入:linux ks=cdrom:/ks.cfg
或者 修改 光盘启动引导配置文件 /isolinux/isolinux.cfg
,实现光盘启动后自动安装,配置后的isolinux.cfg
文件如下。
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.1.8/ks.cfg //ks.cfg是kickstart安装配置文件,系统是按照ks.cfg来安装
4、 kickstart配置文件适用的场景众多,常用的主要包括以下2中情况:
(1) 基于网络的文件服务器(网络服务器),支持HTTP、FTP、NFS方式获取文件;例:
ks=ftp://192.168.0.254/pub/kistart/ks.cfg
ks=http:// 192.168.0.254/pub/kistart/ks.cfg
ks=nfs:ip_addr:/path/to/ks.cfg
(2) 基于本地的安装方式,需要依次指定设备名,路径,文件名等;例如:
文件在光盘中:ks=cdrom:/ks.cfg
文件在软盘中: ks=floppy:/filedirectory/ks.cfg
文件在硬盘中:ks=hd:/sdb1/myfile/ks.cfg
文件也可被打包进initrd根文件系统中:ks=file:/ks.cfg
5、 只有当ks命令行参数被传递给内核,安装程序才会主动去寻找kickstart文件,并按照kickstart给出的参数来自动化安装系统。 如果需要读取ks的配置,一般是在isolinux、pxelinux、extlinux等引导介质(bootloader)中进行设置,设置的内容如上述第4点中所阐述。
1.3 PXE+Kickstart 无人值守安装操作系统完整过程
简单来讲,PXE实现了网络化安装操作系统功能,kickstart配置文件提供了安装系统时所需的配置信息,二者结合,即实现了网络自动化安装系统。具体的PXE+kickstart环境实现过程请见下文。

2. PXE服务的搭建
下面将在基于VMware Workstation 12 Pro 创建的 BCLinux7.1的虚拟机 上搭建pxe安装操作系统环境(kickstart无人值守自动化安装功能的设置将在第3节讲述)。考虑到一般机房物理机资源紧张的情况,本次将dhcp、tftp及http都安装在同一台虚拟机上。
同时请注意,在搭建pxe环境时,请先关闭host机上的SELINUX和防火墙,以免相关服务不能正常运行。
# systemctl stop firewalld.service #关闭防火墙
# setenforce 0
# vi /etc/selinux/config
SELINUX=disabled #设置此行如左
2.1 HTTP服务搭建与配置
在使用PXE安装目标系统时,目标系统的ISO安装源文件的 提供方式 可以选择HTTP、FTP、 NFS,我们这里以HTTP方式为例来介绍。
2.1.1 安装HTTP软件包
[root@bclinux71 ~]# yum install httpd -y
2.1.2 配置HTTP服务
[root@bclinux71 ~]# systemctl start httpd #运行http服务
[root@bclinux71 ~]# systemctl enable httpd #开机自启动
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
2.1.2 准备待安装的系统的ISO镜像文件
将目标系统的安装iso文件挂载至/mnt/cdrom
,并复制光盘全部内容至http 的根目录/var/www/html/bclinux7.1
下:
[root@bclinux71 ~]# cp -r /mnt/cdrom/ /var/www/html/bclinux7.1
2.2 TFTP服务的搭建与配置
本文将TFTP服务作为提供 PXE安装方式的引导介质 和 目标系统启动文件 的服务,相关安装配置过程如下。
2.2.1 安装TFTP软件包
因为tftp服务是挂载在超级进程xinetd下的,故需要安装xinetd、tftp-server这两个软件包。
[root@bclinux71 ~]# yum install tftp-server xinetd -y
2.2.2 配置TFTP服务
[root@bclinux71 ~]# vi /etc/xinetd.d/tftp
disable = no #设置此行如左
[root@bclinux71 ~]# systemctl restart xinetd.service #重新启动xinet服务,从而重启tftp
[root@bclinux71 ~]# systemctl enable xinetd.service #设置xinet开机启动,从而是tftp开机启动
2.2.3 准备PXE安装引导介质
1、为了获得PXE安装引导介质,此处我们选择安装syslinux工具,此工具包含了isolinux、pxelinux、floppylinux等引导介质,关于syslinux的信息请参考这里。
[root@bclinux71 ~]# yum install syslinux -y
省略的信息...
Installed:
syslinux.x86_64 0:4.05-12.el7
Dependency Installed:
mtools.x86_64 0:4.0.18-5.el7
Complete!
完成syslinux的安装后,将 pxelinux.0 (即pxe安装时使用的引导介质)复制到tftp服务目录/var/lib/tftpboot/
下:
[root@bclinux71 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
**说明:**syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
2.2.4 准备目标安装系统的initrd.img、vmlinux等相关文件
复制目标安装系统的iso文件中的/image/pxeboot/initrd.img
和 vmlinux
至/var/lib/tftpboot/
文件夹
[root@bclinux71 ~]# cp /var/www/html/bclinux7.1/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/ #取得Linux系统驱动和内核文件
[root@bclinux71 ~]# cp /var/www/html/bclinux7.1/isolinux/*.msg /var/lib/tftpboot/ #取得boot.msg文件,此文件用于显示“Press the <Enter> key to begin installation process.”启动提示信息。
2.2.5 创建pxe引导程序的配置文件
在/var/lib/tftpboot
目录下创建一个pxelinux.cfg
目录(/var/lib/tftpboot
目录下的网络引导程序 pexelinux.0 默认是会进入pxelinux.cfg这个目录来加载配置文件)。
[root@bclinux71 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
在/var/lib/tftpboot/pxelinux.cfg
目录下创建pxe的引导配置文件,以下是一个典型的pxe配置文件,需要注意的是,其中引入了ks=http://192.168.19.132/ks.cfg
选项,用于加载存放在前文搭建的http服务下的ks配置文件(对于ks文件的内容,将在第3节描述)。
[root@bclinux71 ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 1
timeout 60
display boot.msg
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.19.132/ks.cfg
label local
localboot 1
label memtest86
kernel memtest
append -
到此TFTP提供的相关服务搭建完毕,其目录结构如下:
[root@bclinux71 ~]# cd /var/lib/tftpboot/
[root@bclinux71 tftpboot]# ll
total 42680
-r--r--r--. 1 root root 84 Mar 17 20:15 boot.msg
-r--r--r--. 1 root root 38508192 Mar 17 20:14 initrd.img
-rw-r--r--. 1 root root 26771 Mar 17 20:12 pxelinux.0
drwxr-xr-x. 2 root root 4096 Apr 7 19:52 pxelinux.cfg
-r-xr-xr-x. 1 root root 5156528 Mar 17 20:14 vmlinuz
2.3 DHCP服务的搭建与配置
DHCP服务用于给当前的局域网机器分配IP地址,以便于PXE安装的进行。
2.3.1 安装DHCP服务
[root@bclinux71 ~]# yum -y install dhcp
省略的信息....
Installed:
dhcp.x86_64 12:4.2.5-42.el7.centos
Dependency Updated:
dhclient.x86_64 12:4.2.5-42.el7.centos dhcp-common.x86_64 12:4.2.5-42.el7.centos dhcp-libs.x86_64 12:4.2.5-42.el7.centos
Complete!
2.3.2 配置DHCP服务
修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.19.0 netmask 255.255.255.0 {
option routers 192.168.19.132;
option subnet-mask 255.255.255.0;
range 192.168.19.2 192.168.19.253; #可以动态获取的地址范围
next-server 192.168.19.132; # tftp服务器的地址
filename "pxelinux.0"; #网络引导程序
allow booting;
allow bootp;
}
2.3.3 启动DHCP服务
[root@bclinux71 ~]# systemctl start dhcpd.service
[root@bclinux71 ~]# ss -uln | grep 67 #查看dhcp服务是否开启
3. kickstart自动化安装
按照前面的步骤,在本地局域网内搭建上述PXE服务后,将客户机重启并从网卡启动,就会启动PXE安装。在安装过程中,需要对待安装系统做一些配置,例如时区、磁盘分区等。为了实现这部分的自动化,可以使用kickstart安装方式。
kickstart可以解析配置文件,其中可以给出了安装过程中所有需要回答的问题。安装程序解析这个配置文件,就可以实现完全的自动化安装。
为了实现kickstart安装,需要完成以下步骤。
3.1 创建kickstart文件
kickstart文件是一个文本文件,通过关键字指定了安装过程中需要配置的选项。可以使用图形化的工具Kickstart Configurator生成kickstart文件,也可以手动写。在系统安装结束后,安装程序也会创建一个kickstart文件在/root/目录下,文件名是anaconda-ks.cfg,这个文件保存的是安装系统时的配置参数。
由于kickstart支持的选项非常多,这里就不一一列举,可以参考kickstart选项说明。
[root@bclinux71 ~]# vi /var/www/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use network installation
url --url=http://192.168.1.250/cdrom
# Use text mode install
text
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Firewall configuration
firewall --disabled
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Network information
network --bootproto=dhcp --device=eth0
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $1$cvFfAjvk$aeLfyXCKeZBkZrkD4lPxZ1
#rootpw --plaintext cmss#1
# System timezone
timezone Asia/Shanghai --isUtc #此时钟配置有待确认(全通反映,最小化安装时若采用此种设置,则系统时间会比当前时间慢半个小时,增加两条命令即可:hwlock –x localtime hwlock –w localtime)
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=500
part / --fstype="ext4" --size=51200
part /home --fstype="ext4" --size=10240
part swap --fstype="swap" --size=16384
part /var --fstype="ext4" --grow --size=1
%packages
@^minimal
@core
@security-tools
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
3.2 使得安装源可以被访问
无论使用kickstart安装还是其他方式安装,都必须访问安装源。安装源可以在光盘上,也可以在磁盘和网络上,其内容包含了待安装的软件包,一般是从安装光盘中复制而来的。
3.3 使得kickstart文件可以被访问
在使用PXE安装时,为了使用自动化安装,需要访问kickstart文件。此时需要将kickstart文件放置在网络服务器上,在安装过程中通过网络获取文件,开启自动化安装。
现在支持三种形式的网络服务:nfs、http、https,分别需要在启动参数中添加如下配置项:
ks=nfs:<server>:/<path>
ks=http://<server>/<path>
ks=https://<server>/<path>
对于PXE安装,启动的配置文件是pxelinux.cfg/default。假设ks文件被放置HTTP服务上的根目录下,pxelinux.cfg/default文件需要被修改为2.2.5节中所示。
4. 测试PXE+kickstart环境
以上PXE+Kickstart 无人值守安装操作系统环境已经搭建完毕。
接下来可以在VMware Workstation中新建虚拟机(选择NAT网络模式),建好后启动虚拟机,选择从网卡启动测试自动安装操作系统,如果上述配置正确,其将自动开始安装操作系统。
5. 外部引用
<span id="ks">1. kickstart选项</span>