一、什么是PXE


   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网卡启动

       

       ②从DHCP服务器获得IP

       

       ③通过TFTP到服务器上下载pxelinux.0和它的配置文件default

       

       ④根据配置文件default指定的vmlinuz、initrd.img启动系统内核,并下载指定的ks.cfg文件

       

       ⑤跟据ks.cfg去(HTTP/FTP/NFS)服务器下载RPM包并安装系统

       

       ⑥完成安装

   


三、实战过程


  1、安装配置DHCP

       ①、安装DHCP

           yum -y install dhcp*        

       ②、配置/etc/dhcp/dhcpd.conf

          vim /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
option domain-name "example.org";
option domain-name-servers 172.16.12.100;
default-lease-time 600;
max-lease-time 7200;
subnet 172.16.0.0 netmask 255.255.0.0 {
  range 172.16.12.100 172.16.12.130;
  option routers 172.16.0.1;
  next-server 172.16.12.100;
  filename "pxelinux.0";
}

           查看开启端口(DHCP服务工作于udp 67号端口)

           ss -unl | grep 67

   

   2、安装配置tftp

       安装tftp服务相关的包

           yum -y install xinetd tftp-server tftp

           超级守护进程:xinetd

           功能:

           为那些极少接收用户请求的服务,专门提供监听功能

           瞬时(非独立)守护进程:

           它们无须定义在运行级别下,只需要一次性地定义xinetd的运行级别

           独立(standalone)守护进程:

           能自我管理,无须xinetd提供监听服务的进程;

       

       添加开机启动xinetd、tftp并启动

       chkconfig xinetd on

       chkconfig tftp on

       service xinetd start

       PXE自动网络引导安装Linux操作系统_自动安装linux

   

  3、准备安装树

       挂载光盘

       mkdir /mnt/cdrom

       mount -r /dev/cdrom /mnt/cdrom

       mkdir /var/www/html/centos6                                                

       mount --bind /mnt/cdrom /var/www/html/centos6

       service httpd start  

       PXE自动网络引导安装Linux操作系统_自动安装linux_02


   4、准备/var/lib/tftpboot下文件

       yum -y install syslinux

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

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

       cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

       mkdir /var/lib/tftpboot/pxelinux.cfg

       cp /mnt/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

       PXE自动网络引导安装Linux操作系统_网络安装linux_03



   5、制作kickstart文件ks.cfg,放到/var/www/html目录下

       注意:url及repo后的路径要修改为可用安装树的路径

       我们以root家目录下的anaconda-ks.cfg文件为kickstart文件模板

        cp anaconda-ks.cfg /var/www/html/ks.cfg

        vim /var/www/html/ks.cfg

# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url --url="http://172.16.12.100/centos6"
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --mtu=1500 --bootproto dhcp
rootpw  --iscrypted $1$iRHppr42$VMlsh73oBqhMTjKp6OYOD.
# Reboot after installation
reboot
firewall --disabled
authconfig --useshadow  --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda,sdb --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --all
#part /boot --fstype=ext4 --size=200
#part pv.008002 --size=61440
#volgroup vg0 --pesize=8192 pv.008002
#logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
#logvol swap --name=swap --vgname=vg0 --size=2048
#logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
#logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
repo --name="CentOS"  --baseurl=http://172.16.12.100/centos6 --cost=100
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp
screen
tree
%end
%post
echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue
[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh
cat >> /root/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@server.magelinux.com
EOF
# Set the hostname
ClientName=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'`
sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks
# set hosts
echo '172.16.0.1  server.magelinux.com server' >> /etc/hosts
mv /boot/grub/grub.conf /var/tmp/.grub.test
let Test=$[$RANDOM%2]
if [ $Test -eq 0 ]; then
  sed -i 's@id:[0-9]:initdefault:@id:6:initdefault:@g' /etc/inittab
else
  echo '*/10 * * * * /sbin/init 6' >> /var/spool/cron/root
fi
touch /.12th_lock
%end


   6、配置引导程序能自动加载kickstart文件

       在下面19行后面加上ks=http://192.168.2.3/ks.cfg

       vim /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://172.16.12.100/ks.cfg
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -


   7、新建一个虚拟机,网卡改到和172.16.12.100的服务器同一网络。

PXE自动网络引导安装Linux操作系统_自动安装linux_04


   8、启动并自动安装

   PXE自动网络引导安装Linux操作系统_网络安装linux_05

   下面进入全自动安装


以上就是PXE自动网络引导安装Linux操作系统