PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。pxe的技术内容很多,在次不做过多赘述。有需要了解的可以去Google或者看官方文档。

 

      本次实验所用的网络拓扑如图所示。

拓扑图

     本次实验实现过程简述:

     本次实验主要有3个角色:启动服务器,安装服务器,客户端。

1、启动服务器:给clinet提供启动的相关参数和连接安装服务器使用的IP地址。
2、安装服务器:提供安装所需的配置文件和安装文件,yum源。
3、客户端:需要无人职守安装的机器。

此次实验启动服务器与安装服务器为同一服务器,在此服务器上安装有DHCP,TFTP,PXE,HTTP服务器。

    工作流程简述:

1、pxe启动,然后广播寻找dhcp服务器获取ip地址和pxelinux.0文件,成功以后进入第二步(DHCP提供IP地址,还有pxelinux.0配置文件的位置)

2、client通过tftp连接到服务器,下载pxelinux.0文件。(此文件在安装PXE后自动生成,在/usr/share/syslinux/pxelinux.0,如果不知道就用locate 查询)

3、client下载成功pxelinux.0文件后,还会去下载控制pxelinux.0的配置文件,叫default。然后client就会按照default的配置来执行pxelinux.0文件。(当你挂载光盘后去光盘下可以查询到isolinux.cfg文件 ,我的主机上在/mnt/cdrom/isolinux/isolinux.cfg)

4、现在client端会再获取一次IP地址。并且根据DHCP服务器配置文件找到kickstart配置文件并下载。也是使用的tftp协议。
5、然后client根据pxelinux.0文件定义的向服务器请求linux内核,根文件系统之类的参数。运行这个文件,client就会向服务器请求相关的文件并下载,都里使用的都是tftp协议。
6、文件下载文成后,client就会启动linux内核,这就进入了我们安装时候看见的第一个图形界面,这个界面和自己安装看见的第一个画面一样,回车就是图形安装,输入text就是文本安装那里。因为使用了kickstart,这个界面消失很快,可能看不见。到这里PXE启动就完成了。
7、下面就是kickstart起作用。其实kickstart在第四步已经出现了,当按照default要求运行pxelinux.0文件,系统读取内核,挂在根文件系统以后的任务就都交给了kickstart了。包括安装介质来源、语言、时区、分区、安装哪些包等,都是在kickstart文件中定义。
只要进入这一步,kickstart配置文件正确,我们的无人值守安装已经成功了。

   本次实验具体步骤:

1 安装配置dhcp服务器(如果已安装dhcp则此步骤跳过)
1)yum install dhcp

拷贝配置文件
cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
要是不知配置文件在哪里
则:# updatedb
# locate dhcpd.conf

[root@test65 dhcp]# rpm -ql dhcp |less

2)遇到问题及解决方法:

  对于dhcp启动不了情况 修改关于dhcpd服务的属主属组
vim  /etc/rc.d/init.d/dhcpd
将权限user=dhcpd   改为 user=root;  group=dhcpd改为group=root 。
将dhcp相关配置文件的用户和组都改为root
如: chown root:root /var/lib/dhcpd/dhcpd.leases

而后重启dhcp服务,启动成功。
配置文件核心内容:
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.20 192.168.1.110;
  option routers 192.168.1.11;
  option subnet-mask   255.255.255.0;
  next-server  192.168.1.11;
  filename "pxelinux.0";
}

2 安装tftp 服务器
# yum install tftp-server
默认主页在/var/lib/tftpboot/
编辑/etc/xinetd.d/tftp文件,将 disable = yes改为:disable = no。
# chkconfig tftp on
# service xinetd restart
# ss -unl | grep :69

3 安装pxe
# yum install syslinux

# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/ (将pxelinux.0 文件拷到tftp服务器)

4 将引导内核等文件copy 至tftp 服务器
挂载系统光盘,假设位置为/mnt/cdrom/

# cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/

# cp /mnt/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg}  /var/lib/tftpboot

# mkdir /var/lib/tftpboot/pxelinux.cfg/

# cp /mnt/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default (这就是default文件的来源)
修改 cfg文件 vi /var/lib/tftpboot/pxelinux.cfg/default
添加append initrd=initrd.img  ks=http://192.168.1.11/ks6.cfg (告诉客户端ks文件在哪。)

5 基于http 服务器提供安装源

# yum -y install httpd
# mkdir -pv /var/www/html/centos/6
# mount --bind /mnt/cdrom /var/www/html/centos/6/

6、提供ks.cfg文件

cp /root/anaconda-ks.cfg(系统装好后会自动生成的文件)  /var/www/html/ks6.cfg

修改ks6.cfg 文件

K8TX0E@OI`W~MHSP{CB1PFV 

在系统安装界面有报错

J36Y9@ABB8PX`SA05Y7F9TF

这是因为在ks6.cfg文件中的repo光盘本身的yum源忘记注销掉,将repo name=”CentOS”  --baseurl=cdrom sr0 --cost=100 这行注销,

重启后,引导安装成功