前记:

有同学请教我了PXE的相关问题,一方面好多朋友还不太懂,另一方面记不住,所以决定连夜赶制此文,讲解下小技巧助想学会的同学一臂之力,也为自己巩固一下知识

本文总共分六个部分,理论概述,环境准备,思维关系,实验,验证,常见错误


        RHEL6.2-PXE+DHCP+FTP+TFTP+Kickstart

〇·基本技能

配置yum仓库:(不懂的同学先去学习,后文不再提及其原理)

mount /dev/cdrom /mnt

vim /etc/yum.repos.d/rhel-source.repo

[St1skbase]

name=This is base of pxe to use for

baseurl=file:///mnt/

enabled=1

gpgcheck=0

一·理论概述

启动安装--要求pxe网卡和主板的支持

PXE不是一种安装方式,是一种引导的方式pxe方式要求安装的计算机中必须包含一个 支持PXE 的网卡,且主板支持网络引导,PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动

PXE协议通过client来server上下载文件

PXE协议分为 client 和 server 端,PXE client 在网卡Rom

当计算引导时,cpu通过加载bios映射到内存中的片段,然后检查计算机的健康状况(如cpu风扇,网卡等)继而 把网卡Rom中的PXE client 调入内存引导执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行

                              wKioL1W7smGR-Y2CAABdxJKP-oc163.jpg

client通过tftp协议下载server上的文件,前提是必须有相应的dhcp为其分发ip地址

PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。

DHCP 服务器用来给 PXE client分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的设置。

在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

注:一方面tftp可以达到32M,对于系统内核,引导程序等小文件,足以达到

另一方面tftp使用udp协议69号端口,速度也快

足以满足要求速度也可以,何乐而不为


wKiom1W7sHDwd4yAAAIJHEwgBnM160.jpg

Kickstart简介:kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;


二·环境准备

客户端:要获得ip

传输文件需要tftp客户端(网卡rom内置有)

服务端:提供ip(安装dhcp服务器)--》并引导告诉其tftp所在位置

传输文件需要tftp服务端(安装tftp服务器

提供引导程序默认为pxelinux.0 (安装syslinux软件包)

存放安装的压缩包需要ftp服务端(安装ftp服务器

总共需要安装4个软件包:我们可以yum安装下

wKioL1W7sMHhCwjBAACdR8ggAAQ137.jpg

三·思维关系:

本人擅长看图说话,所以,许多要说的话都在图中仔细看图

不论做什么实验,思维最重要,最反对的就是没思路就去乱做了,即使做出来也不知道什么意思和没做一样,浪费时间和力气,你所要做的就是读懂下面4项含义

1、dhcp-->配置文件指定了为计算机分配的信息,tftp-server及boot loader(pxelinux.0)

只需在配置文件中加入俩行如下所示:

只留一个subnet多余的去掉,以免出错

wKiom1W7rtHTPjRfAAFZbCTNPrs720.jpg

只有安装了syslinux软件包,才会有/usr/share/syslinux目录及目录中的文件

pxelinux.0位于此目录中,后期需要拷贝


2、tftp-->配置文件指定了根目录,及开关选项,重启服务后生效,或直接chkconfig tftp on 启动


wKiom1W7rtTh_9hwAAHls4JQyws777.jpg

3、pxelinux.0中定义了/tftpboot/pxelinux.cfg/default为默认的启动菜单文件,及内核,如何加载初始化镜像等,所以后期需要创建pxelinux.cfg目录,并拷贝或手动创建default文件

注:后期生成了kickstart文件后,在/tftpboot/pxelinux.cfg/default中指定了kickstart文件的网络位置(可以ftp,http,nfs等形式指定)

只需在append后面加上ks=如:

append initrd=initrd.imgdevfs=nomount ramdisk_size=8192 linux ks=ftp://192.168.10.220/ks.cfg或append ks=http://192.168.10.220/ks.cfg initrd=initrd.img

append ks=nfs:192.168.200.104:/pub/ks.cfg initrd=initrd.img 

 

4、 ks.cfg文件提供ftp所在的位置



四·实验

知道了如上的思维关系后,我们即可以开始真正的实验了

创建目录并拷贝文件

确定一共创建俩个目录并拷贝4个文件

要知道为什么创建这俩目录,以及拷贝哪些文件,哪些文件需要修改,添加配置


wKioL1W7sMiSDG6IAAH3ln1wgaY658.jpg

chmod 644 /tftpboot/pxelinux.cgf/default       修改为读写权限,默认只读

先指定ks.cfg安装包所在位置,随后我们生成ks.cfg和挂载镜像到ftp下对应的目录

1、我们先挂载光盘到/var/ftp/pub下作为我们的安装程序

目录在生成ks.cfg时候注意一下安装方法处的填写即可:看下面的ks.cfg安装方法

wKiom1W7rtjC27rjAAFnCpFpHkg456.jpg

经过实验,此处挂载也可以用bind -o命令把/mnt 目录挂过来,方法很多,达到目的即可

2、修改ks.cfg的路径,并在保存的时候,指定放在路径下这里放在ftp的根目录

并修改配置加入思维关系3中所述的append ks=ftp://192.168.10.220/ks.cfg

更改default 为linux,如图第1行和第22行

wKiom1W7rtqz5H10AAFD41F4Z9k733.jpg

生成ks.cfg

用于生成ks.cfg自动化配置文件(system-config-kickstart工具

yum -y install system-config-kickstart

system-config-kickstart &

基本配置

wKioL1W7sM3Qcr_iAACwFenPMoY516.jpg

安装方法(与前面挂载到ftp目录一致)

wKioL1W7sNCBgJOxAAB_Bac0ADA557.jpg

引导装载程序选项

wKiom1W7rt3z7CYQAACKcWpmPO8373.jpg

分区信息

wKioL1W7sMCgtUK6AACnBvSXbS8562.jpg

网络配置

wKioL1W7sM-xq5XEAABiRPCPOTM092.jpg

验证省略

防火墙selinux关闭

wKiom1W7rsyjPrK3AABYB050HCM873.jpg

显示配置

wKiom1W7rs3ShKYOAABpzJDUvg0986.jpg

软件包选择

wKiom1W7rt6hzxCmAAB_IDmp6P4711.jpg

安装后程序执行的脚本,这里配置一个yum仓库,注意单引号不要丢了

wKioL1W7sL6DdcovAAB4XQq-lYQ344.jpg

保存(ctrl+s),注意保存到的目录

wKiom1W7rt_T7evRAADi8VfRGmk470.jpg

重启所有服务


五·验证结果

以下为安装界面:

wKiom1W7ruHToqOAAABiPE2crP8932.jpgwKioL1W7sMqS6NtmAAA6Xf8pVno749.jpg

进入系统后查看yum源是否配置好:

wKioL1W7sL3itojMAAD10tZbqXU169.jpg

六·我的错误总结

1、配置错误

经常装机的时候一开始就提示找不见dhcp,经过三反五次的犯错发现,基本是由于自己在配置dhcp.conf的时候有没有删干净的比如subnet上面的一堆子,如果不删掉会进行报错,

而且每次都是,经常找错误就找好长时间,所以尽量没用的一定都删除掉,只留一个subnet即可,所以盆友们一定要注意这种类型的错误

2.获得ip后获取不到tftp上的文件,有服务没有启动或被防火墙拦截,通常重新启动守护进程即可,所以做完实验服务要同一重启(这里包括xinetd vspd dhcpd)

wKioL1W7sNLzRhr7AACcvqFb3Y4086.jpg

下面是常出现的其他错误:

问题:使用system-config-kickstart来配置ks.cfg文件时,在软件包选择栏中提示

"由于下载软件包信息失败,软件包选择被禁止"

解决方法:

创建一个yum仓库名字一定要是“base”

[base]

name=Red Hat Enterprise Linux 6

baseurl=ftp://192.168.19.254/rhel6

gpgcheck=0


结语:实验要多做,孰能生巧,预祝大家实验成功。