虚拟机CentOS7下PXE批量安装系统CentOS7

PXE原理

虚拟机CentOS7下PXE批量安装系统CentOS7_第1张图片

PXE工作原理示意图说明:
   1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否
      合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地
      址,同时将启动文件pxelinux.0的位置信息一并传送给Client。
   2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到
      消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当
      TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
   3. Client执行接收到的pxelinux.0文件。
   4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录
      下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操
      作。
   5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发
      送给Client。
   6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件
      系统。
   7. Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。
   8. Client通过NFS下载镜像文件,读取autoyast自动化安装脚本。
   至此,Client正式进入自动化安装模式开始安装系统直到完成。

准备工作

准备一个带有CentOS系统的光盘
注意Vmware上启动的虚拟机启动前进入固件将硬盘启动调为第一启动项
然后把需要批量安装的CentOS系统放在光盘上
启动虚拟机

挂载光盘到/mnt
mount /dev/cdrom /mnt

开启各项所需服务

安装并开启dhcp http tftp xinetd 
yum install tftp httpd httpd-devel tftp-server xinetd dhcp* -y

修改/etc/xinetd.d/tftp 将disable = yes 改为 no

重启tftp httpd xinetd 服务
service tftp restart
service httpd restart
service xinetd restart

准备所需文件

安装syslinux 引导程序
yum install syslinux-devel -y

在根目录下做一个/var/lib/tftpboot/的软链接
ln -s /var/lib/tftpboot/

创建tftpboot/pxelinuxl.cfg文件夹,将所需要的文件拷贝至tftpboot目录下
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
修改default权限
chmod 644 /var/lib/tftpboot/pxelinux.cfg/default 

修改default文件
vim /tftpboot/pxelinux.cfg/default 

按 :%d 清空内容,复制粘贴以下内容
default vesamenu.c32
timeout 10
display boot.msg
menu clear
menu background splash.png
menu title CentOS Linux 7
label linux
  menu label ^Install CentOS Linux 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.repo=http://10.10.10.133/centos7 quiet ks=http://10.10.10.133/ks.cfg
label check
  menu label Test this ^media & install CentOS Linux 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
EOF

修改ks.cfg文件
vim /var/www/html/ks.cfg
install
text
keyboard 'us'
rootpw rootroot
timezone Asia/Shanghai
url --url=http://10.10.10.133/centos7
reboot
lang zh_CN
firewall --disabled
network --bootproto=dhcp --device=ens33
auth --useshadow --passalgo=sha512
firstboot --diasble
selinux --disabled
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=300
part / --fstype="ext4" --grow
part swap --fstype="swap" --size=512
%packages
@core
%end

启动新虚拟机,自动完成安装

新建虚拟机,开启电源进入固件,把硬盘启动调为第一启动项,网络启动调为第二启动项,否则会无限重装
一定要关闭防火墙!!!

 

你可能感兴趣的:(linux)