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自动安装系统所需组件
1、DHCP服务
DHCP动态主机配置协议会在预引导加载操作系统的时候动态自动分配一个IP地址,同时完成网络加载的主机的设定;需要在其地址池subnet配置中配置一下参数:
filename "";:基于网卡引导时要加载的initial boot file的文件名; next-server HOST;:要是一个tftp-servr,简单文件传输协议
2、tftp-server服务
TFTP:trivialfile transfer protocol,简单文件传输协议服务器。基于UDP文件传输,一般该服务器仅用于PXE预引导加载环境。用于提供预引导加载文件pxelinux.0的读取。相关程序包:Server:tftp-server;Client: tftp,监听端口 69/udp,
安装tftp程序 ]# yum install tftp-server tftp 默认的提供文件服务的根目录: /var/lib/tftpboot/ 服务启动运行方式: CentOS6: # chkconfig tftp on # service xinetd restart CentOS7: # systemctl start tftp.socket
3、syslinux包
提供适用于不同的操作系统的各种bootloader文件,支持DOSFATfilesystems、Linux ext2/ext3 ,filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);基于网卡引导的bootloader由其提供文件Wie/usr/share/syslinux/pxelinux.0
4、file server(yum repository)yum仓库
基于网络引导加载文件的时候会根据脚本,引导到指定的路径加载yum仓库进行安装程序或者镜像文件,存储此yum仓库的位置称为file server。该file server可以通过http对外通过程序包或者镜像,实现引导之后的安装操作。 file server可以creatrepo命令手动创建;可以直接复制或者挂载光盘的完整镜像作为通过程序包的文件存储源服务
基于PXE自动安装系统服务配置(CentOS 7)
环境为CentOS 7系统,自动化安装的系统镜像为CentOS 7
1、安装相关程序包
]# yum install httpd -y 安装httpd服务 为了提供安装程序包路径 ]# yum install tftp-server -y 安装tftp服务 ]# yum install syslinux -y 安装提供pexlinux.0文件的程序包 ]# yum install dhcp -y 安装dhcp服务
2、准备file server(yumrepository):yum仓库
]# mount /dev/cdrom /media 挂载Centos7 光盘镜像 ]# mkdir /var/www/html/centos7 创建安装程序文件放置位置 ]# cp anaconda-ks.cfg /var/www/html/ 将配置好的kickstart文件复制到安装程序文件目录,这里我直接使用了当前系统的文件 ]# chmod 666 /var/www/html/anaconda-ks.cfg 给文件加权限 ]# vim /var/www/html/anaconda-ks.cfg 编辑kickstart文件 url --url="http://192.168.25.128/ anaconda-ks.cfg ]# mount -o --bind/media/cdrom /var/www/html/centos7 通过目录绑定的方式挂载光盘镜像 注意:也可以使用
3、提供预引导加载等相关文件
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 复制pxelinux.0文件到tftp服务的文件目录 ]# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ 复制内核启动文件到tftp文件目录 ]# cp /usr/share/syslinux/{chain.c32,memdisk,menu.c32,mboot.c32} /var/lib/tftpboot/ 复制与pxe启动和加载相关的文件
4、配置tftp文件
tftpboot]# mkdir pxelinux.cfg 在/var/lib/tftpboot目录下创建pxelinux.cfg目录为 ]# vim /var/lib/tftpboot/pxelinux.cfg/default 创建为menu.c32提供菜单的配置文件,即菜单加载时用到的配置文件信息 default menu.c32 prompt 5 菜单显示时间 timeout 30 退出时间 MENU TITLE CentOS 7 PXE Menu 标题 LABEL linux 标签 MENU LABEL Install CentOS 7 x86_64 菜单名 KERNEL vmlinuz 指明要加载的内核文件 APPEND initrd=initrd.img inst.repo=http://192.168.25.128/centos7 ks=http://192.168.25.128/anaconda-ks.cfg 指明initrd文件位置,和安装程序所在的yum仓库和kickstart文件路径
5、配置dhcp文件
]# cd /etc/dhcp/ ]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf 复制配置文件 ]# vim dhcpd.conf 编辑dhcp配置文件,如下, subnet 192.168.25.0 netmask 255.255.255.0 { range 192.168.25.100 192.168.25.105; filename "pxelinux.0"; next-server 192.168.25.128; 此处指向tftp服务地址,这里是本机 } :.,$d vim命令行删除subnet配置段以后所有无用配置
6、启动服务
]# systemctl start httpd ]# systemctl start dhcpd.service ]# systemctl start tftp.socket
7、客户端开机自动安装
CentOS 6和CentOS 7的配置有部分不同;
cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp/media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}/var/lib/tftpboot/ mkdir/var/lib/tftpboot/pxelinux.cfg/ cp/media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 内容如下所示: display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.7 MageEdu! 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 autoinst menu label ^Auto Install CentOS menu default kernel vmlinuz append initrd=initrd.img ks=ftp://192.168.10.16/pub/centos6.cfg label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img 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 -
原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/58175