一、什么是PXE
PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 PXE可以引导多种操作系统,如:Windows 95/98/2000/xp/2003/vista/2008,linux等
二、KickStart+DHCP+NFS+TFTP+PXE的工作原理
无光软驱服务器通过PXE网卡启动,从dhcp服务器获取IP,通过tftp下载pxelinux.0文件找到pxelinux.cfg里的配置文件,按配置文件找着vmlinuz引导centos进入安装界面,之后选择NFS方式安装系统
首先:架设Linux网络安装服务器
第1步:关闭iptables与SElinux [root@Install ~]# chkconfig iptables off; service iptables stop [root@Install ~]# setenforce 0
==================================================================== 第2步:搭建tftp与dhcp服务器,并配置这两个服务器(PXE需要用到这两个) #DHCP服务器需要安装:dhcp-3.0.5-21.el5.i386.rpm #TFTP服务器需要安装:tftp-server-0.49-2.el5.centos.i386.rpm [root@Install ~]# rpm –ivh tftp-server-0.49-2.el5.centos [root@Install ~]# rpm –ivh dhcp-3.0.5-23.el5 #配置TFTP服务器(配置文件:/etc/xinetd.d/tftp) [root@Install ~]# vi /etc/xinetd.d/tftp #只需要修改两个地方,如下 server_args = -u nobody -s /tftpboot (指定tftp服务的根目录) disable = no
#配置DHCP服务器(配置文件:/etc/dhcpd.conf) [root@Install ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf [root@Install ~]# vi /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; authourtative; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.55 192.168.1.66; option routers 192.168.1.1; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.1.100; option domain-name "33cn.com"; option netbios-name-servers 192.168.1.100; option time-offset -18000; option broadcast-address 192.168.1.255; default-lease-time 6000; max-lease-time 11400; next-server 192.168.1.100; filename "pxelinux.0"; } 特别注意的是添加的filename这一项,这里的意思相当于指示启动文件的位置的一个标签,这里是指/tftpboot/pxelinux.0(就是tftp的主目录下)
另外需要指定next-server参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件,这里我把安装包文件放在了和启动文件相同的机器上。 =====================================================================
第3步:创建一个目录,用于存放系统安装文件,并把光盘中的系统安装文件拷贝到该目录下 [root@Install ~]# mount /dev/cdrom /mnt
[root@Install ~]# mkdir /disk [root@Install ~]# cp -rf /mnt/* /disk/
====================================================================
第4步:安装NFS服务器,并配置 #查看是否已经安装了NFS服务器需要的安装包 [root@Install ~]# rpm -qa | grep "nfs\|portmap" #如果没有安装nfs相关的那些包,那么现在就安装它们 [root@Install ~]# rpm –ivh tftp-server-0.49-2.el5.centos.i386.rpm [root@Install ~]# rpm –ivh portmap-4.0-65.2.2.1 [root@Install ~]# vi /etc/exports /disk *(ro,sync) 或者如下: /disk 192.168.111.0/255.255.255.0(ro,syc) (也可以把它共享给指定的网段) [root@Install ~]# service nfs restart [root@Install ~]# exportfs (输出NFS配置文件,检查是否生效)
====================================================================
第5步:启动dhcpd服务、nfs服务、tftpd服务 ################立即启动下面这些服务################### [root@Install ~]# service dhcpd start [root@Install ~]# service portmap start [root@Install ~]# service nfs start [root@Install ~]# chkconfig --level 345 tftp on [root@Install ~]# service xinetd start |
|
第6步:ks.cfg配置:如果你的 “Linux网络安装服务器“ 没有安装桌面环境,那么可以通过启动一台客户机从网络安装Linux来生成一个安装配置文件:ks.cfg,这种方式需要增加几条语句,才能实现自动化的安装(熟练者使用)
注意:本文使用的是这种方法来生成一个安装配置文件:ks.cfg
===================================================================
第7步: 编辑ks.cfg安装配置文件,并使用NFS共享出该文件,由于之前已经共享了/disk目录了,只要把该文件放到该目录下即可(或者直接共享光盘镜像的方式为:/mnt) #将客户机上新生成的安装配置脚本文件(/root/anaconda-ks.cfg),重命名为ks.cfg,然后将其上传到 ”linux网络安装服务器“ 上的/disk目录下,然后并共享出/disk目录 [root@Install ~]# cp ks.cfg /disk [root@Install ~]# exportfs -a; service nfs restart [root@Install ~]# vi /disk/ks.cfg # Kickstart file automatically generated by anaconda. install nfs --server=192.168.1.100 --dir=/disk lang en_US.UTF-8 keyboard us network --device eth0 --bootproto dhcp rootpw --iscrypted $1$Fjy9Zn3F$TVdnSzmnBmh66outBemYi1 firewall --disabled firstboot --disable authconfig --enableshadow --enablemd5 selinux --disabled timezone --utc Asia/Shanghai bootloader--location=mbr--driveorder=sda --md5pass=$1$t.hy0XQB$2o4sTrilDhARD8cNKJKf1. zerombr clearpart --all --initlabel text part /boot --bytes-per-inode=4096 --fstype="ext3" --size=150 part swap --bytes-per-inode=4096 --fstype="swap" --size=512 part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1000 %packages @base @chinese-support @core @development-libs @development-tools @dialup @editors @printing @text-internet keyutils trousers fipscheck device-mapper-multipath imake
注意:比较重要的是下面这两行 nfs --server=NFS服务器的位置 --dir=光盘的位置 或 系统安装文件存放的位置 network --device eth0 --bootproto dhcp(使用DHCP来实现自动分配IP地址) clearpart --all --initlabel #如果ks.cfg脚本中不添加该语句,将不能实现自动化安装 注意:ks.cfg文件权限,o+r,因为客户端要读取本文件。 ===================================================================
第8步:配置支持PXE,即:复制PXE启动时所需要的文件
(1)复制必要的文件 #确保/tftp目录存在,如果不存在,手工创建它 [root@Install ~]# ls -d /tftpboot || make /tftpboot [root@Install ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ 注意:如果找不到syslinux目录与pxelinux.0文件,那么你就必须安装软件包:syslinux-3.11-4.i386.rpm [root@Install ~]# mkdir /tftpboot/pxelinux.cfg [root@Install ~]# cp /media/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default [root@Install ~]# cp /media/cdrom/isolinux/* /tftpboot/ 注意:最主要的是这两个文件:initrd.img与vmlinuz
(2)修改PXE的引导配置文件:/tftpboot/pxelinux.cfg/default [root@Install ~]# chmod u+w /tftpboot/pxelinux.cfg/default [root@Install ~]# vi /tftpboot/pxelinux.cfg/default default linux prompt 1 timeout 10 #超时的时间改小点:10秒 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz #引导Linux时,加载kickstart安装配置脚本文件,实现自动安装 append ks=nfs:192.168.1.100:/disk/ks.cfg initrd=initrd.img label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img label local localboot 1 label memtest86 kernel memtest append -
(3)然后再重启一下这些服务,确保它们正常工作 [root@Install ~]# service nfs restart [root@Install ~]# service dhcpd restart [root@Install ~]# service xinetd restart
===================================================================
|
转载于:https://blog.51cto.com/gaofubin/1202806