由于考虑到公司以后会批量进行部署服务器,所以想去架构一个基于PXE的快速、批量安装系统的架构服务,后来在网络上搜索了一遍,但都是关于RHEL5的配置文档,但是其配置和在RHEL6上有很大的出入,所以决定自己摸索着把相关配置过程进行一遍,先把其配置过程发布出来,以供自己和各位linux爱好者查看、使用!其中写的不对的地方,还望各位大神指出~~谢谢!
一、PXE的介绍
PXE当初是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。
PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。
二、PXE的工作过程
1.客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP
2.DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上)
3.客户机向本网络中的TFTP服务器索取bootstrap文件
4.客户机取得bootstrap文件后之执行该文件
5.根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统
6.进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装 从这里我们不难得到实现PXE网络安装必需的4个要素
1.客户机的网卡必须为PXE网卡
2.网络中必须要有DHCP和TFTP服务器,当然这两个服务器可以是同一台物理主机
3.所安装的操作系统必须支持网络安装,即必须提供自己的bootstrap
4.必须要有FTP,HTTP,NFS至少一个服务器,当然也可以和DHCP和TFTP服务器同为一台物理主机
三、RHEL6-64bits基于PXE的实例实现
1、配置相关环境,这里使用yum安装,把本地的磁盘做成yum源
本机IP设置
DEVICE="eth0" BOOTPROTO="static" IPADDR="192.168.7.1" NETMASK="255.255.255.0" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet"
service network restart #重启网络服务,使配置的IP地址生效!www.it165.net
yum配置
[root@localhost ~]# vim /etc/yum.repos.d/server.repo 增加yum配置文件,添加如下内容: [base] name=base baseurl=file:///media/Server gpgcheck=0 enabled=1 [HighAvailability] name=HighAvailability baseurl=file:///media/HighAvailability gpgcheck=0 enabled=1 [LoadBalancer] name=LoadBalancer baseurl=file:///media/LoadBalancer gpgcheck=0 enabled=1 [ResilientStorage] name=ResilientStorage baseurl=file:///media/ResilientStorage gpgcheck=0 enabled=1 [ScalableFileSystem] name=ScalableFileSystem baseurl=file:///media/ScalableFileSystem gpgcheck=0 enabled=1 挂载光盘到指定的挂载点 [root@localhost ~]# mount /dev/cdrom /media
2、安装所需的软件包
[root@localhost ~]# yum -y install dhcp tftp-server nfs-utils syslinux vsftpd
3、配置dhcpd服务器
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 添加如下内容 default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; authoritative; subnet 192.168.7.0 netmask 255.255.255.0 { range 192.168.7.80 192.168.7.90; next-server 192.168.7.1; #tftp服务器 filename "pxelinux.0"; #PXE客户端访问时候的文件 } [root@localhost ~]# service dhcpd start #启动HDCP服务
4、配置tftp服务,此处使用xinetd超级进程来管理tftp服务
[root@localhost ~]# vim /etc/xinetd.d/tftp #修改配置文件 service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #只需把此处修改为no即可 per_source = 11 cps = 100 2 flags = IPv4 } [root@localhost ~]# service xinetd restart #重启服务,使其配置生效
5、设置tftp服务,并设置安装系统的磁盘挂载目录
[root@localhost ~]# vim /etc/xinetd.d/tftp #修改配置文件 service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #只需把此处修改为no即可 per_source = 11 cps = 100 2 flags = IPv4 } [root@localhost ~]# service xinetd restart #重启服务,使其配置生效
提供kickstart文件
提供ks.cfg文件
[root@localhost tftpboot]# cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
这是使用的本机的anaconda-ks.cfg文件,当然,如果我们需要自己定制,可用安装yum install system-config-kickstart软件包,然后利用命令system-config-kickstart启动一个gui界面进行相关的配置生成kickstart配置文件,这里使用本机的kickstart文件进行测试了~
其配置文件详细命令如下
# Firewall configuration firewall --enabled --ssh # Install OS instead of upgrade install # Use network installation url --url="ftp://192.168.7.1/pub/rhel6" # Root password rootpw --iscrypted $6$bgA6iounYImIucBq$8xtCdixNgcLPBsLOrFmtmrfPezUd.DAgDPBJDYzKYCegvj2oxUF3UGRWWXPaEitnPyckBInZ.RJXG4Vj.uTZd1 # System authorization information auth --useshadow --passalgo=sha512 # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone --isUtc Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --asprimary --fstype="ext4" --size=256 part swap --asprimary --fstype="swap" --size=2048 part / --asprimary --fstype="ext4" --size=10000 part /data --asprimary --fstype="ext4" --size=20000 %packages @base @chinese-support %end
注意:需要给其文件增加权限:
chmod 644 /var/ftp/pub/ks.cfg
然后复制PXE的cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/目录下,到处我们的配置已经完成!重启相关服务即可:
service vsftpd restart service dhcpd restart service xinetd restart
6、新建一个虚拟机,让其使用PXE进行安装系统,测试如下
在我们部署的时候还有基于http、nfs等方式的架构,其大致内容都是相似的,只是在指定kickstart的配置文件的时候不同而已~
最后把一键配置所用功能的脚本分享给大家~只需在PXE和kickstart服务器上执行以下这个脚本,就可以自动完成上面的所有配置,具体如下:
#!/bin/bash #NAME:pxeinstallos.rhel6.1.sh #DESCRIPTION:NULL #AUTHOR:Beck #VERSION:0.0.1 #DATATIME:2013-05-17 18:24:37 #USAGE:pxeinstallos.rhel6.1.sh pxeip="192.168.2.30" vsftpip="192.168.2.30" dhcpip="192.168.2.30" subnetip="192.168.2" rangeip="192.168.2.50 192.168.2.60" #准备工作需将rhel6的安装光盘放进光驱 mount /dev/cdrom /media cat > /etc/yum.repos.d/localcdrom.repo << EOF [base] name=base baseurl=file:///media/Server gpgcheck=0 enabled=1 [HighAvailability] name=HighAvailability baseurl=file:///media/HighAvailability gpgcheck=0 enabled=1 [LoadBalancer] name=LoadBalancer baseurl=file:///media/LoadBalancer gpgcheck=0 enabled=1 [ResilientStorage] name=ResilientStorage baseurl=file:///media/ResilientStorage gpgcheck=0 enabled=1 [ScalableFileSystem] name=ScalableFileSystem baseurl=file:///media/ScalableFileSystem gpgcheck=0 enabled=1 EOF yum clean all && yum repolist yum -y install dhcp tftp-server syslinux vsftpd system-config-kickstart.noarch func_tftp() { sed -i "s@disable.*@disable = no@" /etc/xinetd.d/tftp cp -a /media/isolinux/* /var/lib/tftpboot mkdir /var/lib/tftpboot/pxelinux.cfg #cp -a /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #vim /var/lib/tftpboot/pxelinux.cfg/default cat > /var/lib/tftpboot/pxelinux.cfg/default << EOF default vesamenu.c32 #prompt 1 timeout 5 display boot.msg menu background splash.jpg menu title Welcome to Red Hat Enterprise <a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a> 6.4! 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=ftp://$pxeip/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 - EOF cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot service xinetd restart } func_dhcp() { mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak cat > /etc/dhcp/dhcpd.conf <<EOF ddns-update-style interim; ignore client-updates; next-server $pxeip; filename "pxelinux.0"; subnet $subnetip.0 netmask 255.255.255.0 { option routers $pxeip; option subnet-mask 255.255.255.0; option nis-domain "beckli.com"; option domain-name "beckli.com"; option domain-name-servers $pxeip; option ntp-servers $pxeip; option time-offset -18000; # Eastern Standard Time allow bootp; allow booting; range dynamic-bootp $rangeip; default-lease-time 21600; max-lease-time 43200; } EOF service dhcpd restart } func_vsftp() { service vsftp restart umount /media mkdir /var/ftp/rhel6 mount /dev/cdrom /var/ftp/rhel6 cat > /var/ftp/ks.cfg <<EOF #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --enabled --ssh # Install OS instead of upgrade install # Use network installation url --url="ftp://$pxeip/rhel6" # Root password rootpw --iscrypted $6$bgA6iounYImIucBq$8xtCdixNgcLPBsLOrFmtmrfPezUd.DAgDPBJDYzKYCegvj2oxUF3UGRWWXPaEitnPyckBInZ.RJXG4Vj.uTZd1 # System authorization information auth --useshadow --passalgo=sha512 # System keyboard keyboard us # System language lang en_US # SE<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a> configuration selinux --disabled # Do not configure the X Window System skipx # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone --isUtc Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --asprimary --fstype="ext4" --size=256 part swap --asprimary --fstype="swap" --size=2048 part / --asprimary --fstype="ext4" --size=10000 part /data --asprimary --fstype="ext4" --size=20000 %packages @base @chinese-support %end EOF } func_tftp func_vsftp func_dhcp
源地址:http://www.it165.net/os/html/201306/5331.html#comment_iframe
转载于:https://blog.51cto.com/baojizsy/1550036