简单的说,这就是一个通过PEX网卡自动安装系统的过程。整个启动的过程大概可以理解为这样:计算机从PEX网卡设备启动,通过网卡与DHCP服务之间的4次互相广播后获得DHCP服务器提供的IP地址,并且DHCP服务器会告诉该网卡TFTP服务的位置,从而使PXE网卡可以获得“pxelinux.0”的启动文件,然后通过该文件可以读取TFTP服务器中的一些相应的配置文件,从而使该计算机可以进入系统安装界面,而这里我们想通过自动化的方法安装,所以我们就需要kickstart文件,而为了能够获得源,在这里我采用了HTTP服务进行设置。
下面我们可以将PXE配置的过程分为5部:
1、配置dhcp服务
2、配置tftp server
3、提供PXE的工作环境
4、基于http服务提供安装源
5、提供kickstart文件,即ks.cfg文件
下面我们就以Centos6.5为例来实现一次。
本机的IP为172.16.106.1
1、配置dhcp服务
首先还是得先安装DHCP包
安装好之后可以查看生成了哪些文件(这里就不全部列出来了)
其中/etc/dhcp/dhcpd.conf是我们的配置文件
配置文件的时候可以参考其中的一个配置模型
参照这个我们配置自己所需要的一些东西
下面是我的一些配置;
其中主要是对subnet进行配置,网段以及掩码,还有就是作为DHCP服务器可以给出的地址段,以及option routers网关,而next-server指向的是下面的TFTP服务器,以及filename指向该服务器中的启动文件。
这样我们的DHCP服务就配置好了,为了确认配置文件中的语法格式是否正确我们还可以用一下命令进行测试。
#service dhcpd configtest
一切正常后我们就可以启动DHCP服务了。
#service dhcpd start
2、配置tftp server
由于TFTP需要依赖于xinetd,所以如果你的机器上没有的话也要安装起来,建议同时安装tftp客户端(方便调试tftp服务器)
#yum install xinetd #yum install tftp-server tftp
按了之后需要把TFTP开启
# chkconfig tftp on
当然要使他生效的话还得让xinetd重启,如果成功的可以查看tftp的69号端口是否开启。
# service xinetd restart # ss -unl | grep :69 查看69号端口是否打开
3、提供PXE的工作环境
首先我们要安装syslinux,这个东西这个东西有我们所要用到的引导文件,类似于grub的功能。
可以先检查有没有装这个东西:
# rpm -q| grep syslinux
如果没有则安装:
# yum install syslinux
安装好之后我们需要把生成的pxelinux.0 文件放到我们的tftp服务器的路径下面,还有一些相关的文件也必须一起复制过去。在这里,我们顺便把内核等文件一并复制过去。
注:这里我把centos的镜像光盘挂载在了/media/cdrom/下。
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ 内核及根文件系统 # cp /media/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot 安装界面的图形界面及背景图片等 # mkdir /var/lib/tftpboot/pxelinux.cfg/ # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 配置文件
有了这些文件之后,PXE网卡就可以进入安装界面。
4、基于http服务提供安装源
为了给安装系统时配置源,这里我用的是HTTP服务,将本机作为一个HTTP服务器。
首先还是得安装HTTP包:
同样我们也可以先查看下是否安装过HTTP服务,若没装过则开始安装。
# rpm -q httpd 查看是否安装 # yum -y install httpd
这里我们只需把本地的镜像磁盘挂载绑定到HTTP服务的默认路径下就可以了,为了方便以后操作我们不直接将磁盘挂载在/var/www/html/路径下,而是挂载在其子目录下,因为磁盘是只读挂载的,不能修改,一旦挂在/var/www/html/的话将不能对这里内容进行修改,放在其子目录下的话可以使服务器更有灵活性。
# mkdir /var/www/html/centos6 先创建一个名为centos6的子目录 # mount --bind /media/cdrom /var/www/html/centos6/ 将磁盘绑定挂载到该子目录下
这样我们的一个HTTP环境也安装好了。
5、提供ks.cfg文件
这里我们先介绍一下kickstart文件的格式,一般系统创建好之后都会在管理员的家目录/root/下生产一个anaconda-ks.cfg文件,你可以把它当做你的ks文件模板。
该文件可以分为3段:
1、命令段
2、软件包段 :%packages
pack_name 直接是一个包的名字
@group 包组的名字
-pack_name: 不安装的包,但如果被依赖,也会被安装
3、脚本段
%pre:安装前脚本
%post:安装后脚本
ks文件也可以通过图形化界面安装,首先我们还是得安装kickstart包:
# yum install system-config-kickstart 安装好之后进行配置 # system-config-kickstart
进入这个图形化界面后,配置一些你所需要的。
配置完成之后点击左上角的file选项,然后点击save即可,保存时,会有交互,问你保存在哪里,文件名称,一般直接保存为/var/www/html/ks.cfg
这样我们的一个PXE安装环境就OK了。
但是需要注意的是,我们这样设置的话在安装的时候我们还必须直接指定KS文件的位置,如
如果你想要更加的自动化,那么你也可以将KS的路径直接写进配置文件,即/var/lib/tftproot/pxelinux.cfg/default文件
可以你想要用的label的最后一行加上ks=http://172.16.106.1/ks.cfg
如果你也一切正常的话,那么我们的PXE环境就成功了。好的那么我们今天就到这里了!