博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PXE自动化安装centos6和centos7
阅读量:4708 次
发布时间:2019-06-10

本文共 8930 字,大约阅读时间需要 29 分钟。

PXE(Preboot Excution Environment): 预启动执行环境,Intel公司研发,基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。 PXE可以引导和安装Windows,linux等多种操作系统

PXE工作原理:
  客户端向PXE服务器上的dhcp服务发送IP地址请求消息,dhcp服务检测客户端请求是否合法,主要是检测客户机的网卡MAC地址,如果合法则分配给客户端IP地址,同时将启动文件名pxelinux.0和启动文件位置信息一并传送给客户端。
  客户端向PXE 服务器上的tftp服务发送获取启动文件pxelinux.0请求消息,tftp服务在接收到消息之后向客户端发送pxelinux.0大小信息,询问客户端是否同意使用,当tftp服务收到客户端发回的同意使用信息之后,正式向客户端发送pxelinux.0文件。
  客户端执行接收到的pxelinux.0文件。
  客户端向tftp服务器发送针对本机的配置信息文件(在tftp 服务器的pxelinux.cfg目录下),tftp服务器将配置文件发回客户端,继而客户端根据配置文件执行后续操作。
  客户端向tftp服务器发送Linux内核请求信息,tftp服务器在接收到消息之后将内核文件发送给客户端
  客户端向tftp服务器发送根文件请求信息,tftp服务器接收到消息之后返回Linux根文件系统给客户端。
  客户端启动Linux内核,下载安装源文件,读取自动化安装脚本

环境准备:  

  关闭防火墙

  systemctl stop firewalld.service
  systemctl disable firewalld.service

  systemctl stop iptables

  systemctl disable iptables

  关闭selinux

  setenforce 0 
  vim /etc/selinux/config修改SELINUX=disabled

  设置静态IP

  vim /etc/sysconfig/network-scripts/ifcfg-ens33

1 TYPE=Ethernet 2 BOOTPROTO=static #网络协议 3 NAME=ens33 4 UUID=c7c0aaf8-2a87-4217-819b-fdbc1d08a7e8 5 DEVICE=ens33 6 ONBOOT=yes         #开机启动 7 DNS1=114.114.114.114 8 DNS2=8.8.8.8 9 IPADDR=192.168.121.1010 NETMASK=255.255.255.011 GATEWAY=192.168.121.2

安装相关软件包

  yum install -y dhcp tftp-server httpd syslinux

启动httpd服务

  systemctl enable httpd
  systemctl start httpd

cp /etc/xinetd.d/tftp /etc/xinetd.d/tftp.bak

vim /etc/xinetd.d/tftp

1 service tftp  2 {  3     socket_type             = dgram  4     protocol                = udp  5     wait                    = yes  6     user                    = root  7     server                  = /usr/sbin/in.tftpd  8     server_args             = -s /var/lib/tftpboot  9     disable                 = no 10     per_source              = 11 11     cps                     = 100 2 12     flags                   = IPv4 13 }

启动tftpd服务

  systemctl enable tftp.socket
  systemctl start tftp.socket

cp -f /usr/share/doc/dhcp*/dhcpd.conf.example  /etc/dhcp/dhcpd.conf.bak

vim /etc/dhcp/dhcpd.conf

1 ddns-update-style interim;      2 ignore client-updates; 3 subnet 192.168.121.0 netmask 255.255.255.0 { 4  5     option routers                  192.168.121.2; 6     option subnet-mask              255.255.255.0; 7  8     filename "pxelinux.0"; 9     next-server 192.168.121.10;10     range dynamic-bootp 192.168.121.11 192.168.121.100;11     default-lease-time 21600;12     max-lease-time 43200;13 }

启动dcpd服务

  systemctl enable dhcpd

  systemctl start dhcpd

制作centos7和centos6的安装源文件

  mkdir -pv /var/www/html/centos/{6,7}

  mkdir -pv /media/cdrom{6,7}

  mount /dev/sr0 /media/cdrom6/

  cp /media/cdrom6 /* /var/www/html/centos/6/ -r
  mount /dev/sr1 /media/cdrom7/
  cp  /media/cdrom7/* /var/www/html/centos/7/ -r

制作centos6和centos7的kickstart文件 

  修改anaconda.cfg文件,此文件会在每次装完系统后生成于/root/目录下.

  使用system-config-kickstart命令生成(需要安装X Windows 和Desktop)
    yum groupinstall "X Window System"
    yum groupinstall Desktop

  mkdir /var/www/html/ksdir/

  vim /var/www/html/ksdir/ks7-1.cfg

1 #version=DEVEL 2 # System authorization information 3 auth --enableshadow --passalgo=sha512 4 # Use CDROM installation media 5 url --url=http://192.168.121.10/centos/7 6 # Use graphical install 7 graphical 8 # Run the Setup Agent on first boot 9 firstboot --enable10 ignoredisk --only-use=sda11 # Keyboard layouts12 keyboard --vckeymap=us --xlayouts='us'13 # System language14 lang en_US.UTF-815 16 # Network information17 network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate18 network  --hostname=localhost.localdomain19 20 # Root password21 rootpw --iscrypted $6$SNhR8RU2Euwg1ydI$gPITLqKSRMfm11hIyaIqPbmRo579k7hhpsOp4cQRhBO/dEH8vWt2b4upxYiQEXKzgzS55FccpqcWiz/7/LL4w.22 # System timezone23 timezone Asia/Shanghai --isUtc --ntpservers=0.centos.pool.ntp.org24 # System bootloader configuration25 bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda26 # Partition clearing information27 zerombr28 clearpart --all29 reboot30 # Disk partitioning information31 part /boot --fstype="xfs" --ondisk=sda --size=20032 part swap  --fstype="swap" --ondisk=sda --size=2048 33 part /  --fstype="xfs" --ondisk=sda --grow --size=1 34 35 36 %packages37 @^minimal38 @core39 kexec-tools40 41 %end42 43 %addon com_redhat_kdump --enable --reserve-mb='auto'44 45 %end46 47 %anaconda48 pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty49 pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok50 pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty51 %end52 53 %post54 systemctl restart  network.service55 yum install vim wget net-tools  xorg-x11-xauth    screen -y56 cd /etc/yum.repos.d/57 rm -rf *58 wget -c http://mirrors.163.com/.help/CentOS7-Base-163.repo59 systemctl disable firewalld.service60 cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak61 sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens33.bak62 echo 'IPADDR=192.168.121.121'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak63 echo 'NETMASK=255.255.255.0'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak64 echo 'GATEWAY=192.168.121.2'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak65 echo 'DNS1=114.114.114.114' >> /etc/sysconfig/network-scripts/ifcfg-ens33.bak66 sed -i 's/enforcing/disabled/g' /etc/selinux/config67 %end

vim /var/www/html/ksdir/ks6-1.cfg

1 #version=DEVEL 2 install 3 url --url=http://192.168.121.10/centos/6 4 lang en_US.UTF-8 5 keyboard us 6 network --onboot yes --device eth0 --bootproto dhcp --noipv6 7 rootpw  --iscrypted $6$55ArpbZ9EoUhTKt5$pYnhDc2zbpdOt1aR4rIf7keHxy0aZ7hi/C.1XmLV5IOpYgkv5zTC61trhk3oDfDocracX6CtpBx2kZ7frHvP0. 8 firewall --service=ssh 9 authconfig --enableshadow --passalgo=sha51210 selinux --enforcing11 timezone Asia/Shanghai12 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"13 # The following is the partition information you requested14 # Note that any partitions you deleted are not expressed15 # here so unless you clear all partitions first, this is16 # not guaranteed to work17 zerombr18 clearpart --all19 reboot20 part /boot --fstype=ext4 --size=20021 part swap --size=200022 part / --fstype=ext4 --grow --size=20023 24 #repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=10025 26 %packages27 @core28 %end29 30 %post31 service  network  restart  32 yum install vim wget net-tools -y33 cd /etc/yum.repos.d/34 rm -rf *35 wget -c http://mirrors.163.com/.help/CentOS6-Base-163.repo36 chkconfig iptables off37 cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak38 sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens33.bak39 echo 'IPADDR=192.168.121.121'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak40 echo 'NETMASK=255.255.255.0'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak41 echo 'GATEWAY=192.168.121.2'>> /etc/sysconfig/network-scripts/ifcfg-ens33.bak42 echo 'DNS1=114.114.114.114' >> /etc/sysconfig/network-scripts/ifcfg-ens33.bak43 sed -i 's/enforcing/disabled/g' /etc/selinux/config44 %end

 

检验ks文件

  yum install system-config-kickstart -y

  ksvalidator /var/www/html/ksdir/ks7-1.cfg
  ksvalidator /var/www/html/ksdir/ks6-1.cfg

制作PXE相关文件

  mkdir /var/lib/tftpboot/centos{6,7}

  mkdir /var/lib/tftpboot/pxelinux.cfg/

  cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/

  cp /var/www/html/centos/7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos7
  cp /var/www/html/centos/6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/centos6
  cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

tree /var/lib/tftpboot/

  /var/lib/tftpboot/
  ├── centos6
  │ ├── initrd.img
  │ └── vmlinuz
  ├── centos7
  │ ├── initrd.img #伪文件系统文件
  │ └── vmlinuz #内核文件
  ├── menu.c32 #纯文本菜单
  ├── pxelinux.0 #引导文件,相当于grub。
  └── pxelinux.cfg
   └── default #启动菜单文件

制作启动菜单

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

1 default menu.c32 2 timeout 600 3 menu title CentOS Linux  PXE Install 4  5 label centos7     #自动安装centos7 6       menu label Auto Install CentOS Linux ^7 7       menu default    #默认启动项 8       kernel centos7/vmlinuz 9       append initrd=centos7/initrd.img ks=http://192.168.121.10/ksdir/ks7-1.cfg  #应答文件所在路径10 11 label centos6      #自动安装centos612       menu label Auto Install CentOS Linux ^613       kernel centos6/vmlinuz14       append initrd=centos6/initrd.img ks=http://192.168.121.10/ksdir/ks6-1.cfg15 16 label manual7     #手动安装centos717       menu label ^Manual Install CentOS Linux 718       kernel centos7/vmlinuz19       append initrd=centos7/initrd.img inst.repo=http://192.168.121.10/centos/720 21 label manual6      #手动安装centos622       menu label Manual ^Install CentOS Linux 623       kernel centos6/vmlinuz24       append initrd=centos6/initrd.img inst.repo=http://192.168.121.10/centos/625 26 label local     #本地硬盘启动27      menu label Boot from ^local drive28      localboot 0xffff29 menu end

转载于:https://www.cnblogs.com/chenxiaoweiworkinghard/p/9746197.html

你可能感兴趣的文章
JavaScript简介
查看>>
php.ini中safe_mode开启对PHP系统函数的影响
查看>>
gdb
查看>>
字符串与整数、浮点数、无符号整数之间的转换常用函数
查看>>
ubuntu清理旧内核
查看>>
有关UIImageView+AFNetworking 下载图片的线程问题
查看>>
Node之安装篇
查看>>
Android的Animation之LayoutAnimation使用方法
查看>>
二分图最大匹配算法-Hopcroft-Karp模板
查看>>
发布和订阅的删除
查看>>
如何使用qtp12 utf进行功能测试
查看>>
使用LinQ进行增删改查
查看>>
索引作用 和缺点
查看>>
eclipse 背景颜色
查看>>
Tomcat连接池配置-DBCP
查看>>
aliyun阿里云Maven仓库地址和其他地址
查看>>
Mercedes-Benz won’t start| Step by Step Troubleshooting Guide
查看>>
.gitignore文件过滤规则
查看>>
C++程序设计之四书五经[转自2004程序员杂志]--上篇
查看>>
解决vs2010无法找到html页的问题
查看>>