目录
一、PXE原理和概念
1.1 PXE概述
1.2 优点
1.3 前提条件
二、KickStart
2.1KickStart 概述
2.2 PXE服务的构建过程
三、PXE装机实例
3.1安装并启动DHCP服务
3.2 安装TFTP服务
3.3 安装syslinux 服务
3.4 安装 vsftp 服务
3.5 进行测试是否成功
四、实现Kickstart无人值守安装
五、总结
一、PXE原理和概念
1.1 PXE概述
PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
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 上下载所需的文件。
1.2 优点
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U 盘等安装介质
1.3 前提条件
客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。
二、KickStart
2.1KickStart 概述
KickStart 是一种无人职守安装方式。
KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉
安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。
2.2 PXE服务的构建过程
1.PXE客户机发出DHCP请求,向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客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作。
三、PXE装机实例
3.1安装并启动DHCP服务
添加一块网卡,并设置成仅主机模式
配置网卡
安装DHCP服务
[root@localhost network-scripts]#yum install dhcp -y
[root@localhost network-scripts]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost network-scripts]#cd /etc/dhcp/
[root@localhost dhcp]#vim dhcpd.conf #
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.70; option routers 192.168.100.1;
next-server 192.168.100.100;
filename "pxelinux.0";
}
3.2 安装TFTP服务
TFTP(简单文件传输协议):内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口
[root@localhost dhcp]#yum install -y tftp-server
[root@localhost dhcp]#rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
[root@localhost dhcp]#vim /etc/xinetd.d/tftp
disable = no
3.3 安装syslinux 服务
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
[root@localhost dhcp]#yum install -y syslinux [root@localhost dhcp]#rpm -ql tftp-server /var/lib/tftpboot //记住这个站点,所有的配置文件都在此站点下 [root@localhost dhcp]#rpm -ql syslinux |grep 0 /usr/share/syslinux/pxelinux.0 //在最后一行,复制此文件 [root@localhost dhcp]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ //将复制的文件拷贝到刚刚说的站点下 [root@localhost dhcp]#ls /var/lib/tftpboot/ pxelinux.0
确保成功的将pxelinux.0放入
3.4 安装 vsftp 服务
安装系统镜像文件获取方式
[root@localhost dhcp]#yum install -y vsftpd [root@localhost dhcp]#rpm -ql vsftpd /var/ftp //此站点为vsftpd的站点,一会挂载在此站点下 [root@localhost dhcp]#cd /var/ftp/ [root@localhost ftp]#ls pub [root@localhost ftp]#mkdir centos7 //创建目录,作为光盘挂载点 [root@localhost ftp]#mount /dev/sr0 centos7/ //将光盘挂载到当前目录的centos7/下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost centos7]#cd images/ [root@localhost images]#ls efiboot.img pxeboot TRANS.TBL [root@localhost images]#cd pxeboot/ [root@localhost pxeboot]#ls initrd.img TRANS.TBL vmlinuz [root@localhost pxeboot]#cp initrd.img vmlinuz /var/lib/tftpboot/ //将两个文件拷贝到站点/var/lib/tftpboot下。所有的配置文件都在此站点 [root@localhost pxeboot]#cd /var/lib/tftpboot/ //切换至站点目录 [root@localhost tftpboot]#ls initrd.img pxelinux.0 vmlinuz [root@localhost tftpboot]#mkdir pxelinux.cfg //创建文件夹 pxelinux.cfg [root@localhost tftpboot]#cd pxelinux.cfg/ [root@localhost pxelinux.cfg]#vim default //在 pxelinux.cfg目录下创建文件default #这个文件不会写,没关系,可以再开一个会话,可以在isolinux.cfg文件去复制 #默认选项 default auto //开机不等待,也可以设置timeout 600,默认等到60秒 prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 label test kernel vmlinuz append test=initrd.img method=ftp://192.168.100.100/centos7 label rescue kernel vmlinuz append rescue=initrd.img method=ftp://192.168.100.100/centos7 ##再开一个终端会话,查看isolinux.cfg 的配置文件 [root@localhost isolinux]#cd /var/ftp/centos7/ [root@localhost centos7]#cd isolinux/ [root@localhost isolinux]#ls boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32 [root@localhost isolinux]#vim isolinux.cfg #将以下内容复制到刚刚那个终端的default文件下去,并修改 label linux menu label ^Install CentOS 7 kernel vmlinuz append initrd=initrd.img #开启以下服务,关闭防火墙,pxe就装完成了 [root@localhost pxelinux.cfg]#systemctl start dhcpd [root@localhost pxelinux.cfg]#systemctl start vsftpd [root@localhost pxelinux.cfg]#systemctl start tftp [root@localhost pxelinux.cfg]#systemctl stop firewalld.service [root@localhost pxelinux.cfg]#setenforce 0
结束所有操作后启动所有服务,关闭防火墙和增强就可以开始测试了
3.5 进行测试是否成功
典型创建一台虚拟机
结束之后点击开机
加载完成之后就进入了以下界面
四、实现Kickstart无人值守安装
安装图形化界面
[root@localhost ~]#yum install system-config-kickstart -y
配置kickstart
回到xshell进入ks文件
[root@localhost ~]#cd /var/ftp/ [root@localhost ftp]#ls centos7 ks.cfg pub [root@localhost ftp]#vim ks.cfg #可以在[root@localhost ~]#vim anaconda-ks.cfg 文件下复制 %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 chrony kexec-tools %end [root@localhost ftp]#cd /var/lib/tftpboot/ [root@localhost tftpboot]#ls initrd.img pxelinux.0 pxelinux.cfg vmlinuz [root@localhost tftpboot]#cd pxelinux.cfg/ [root@localhost pxelinux.cfg]#vim default label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg //在后面添加ks
之后进行重启测试
五、总结
kickstart 无人值守安装主要用于大量机器同时安装



