Linux高级篇--运维自动化之PXE安装系统

Linux高级篇–运维自动化之PXE安装系统

一、 PXE安装系统

PXE介绍

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

PXE工作原理

  • Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
  • Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
  • Client执行接收到的pxelinux.0文件
  • Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
  • Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
  • Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
  • Client启动Linux内核
  • Client下载安装源文件,读取自动化安装脚本

PXE自动化安装CentOS7

  • 安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
  • 安装软件包
    yum -y install httpd tftp-server dhcp syslinux system-config-kickstart
  • 配置文件共享服务,配置基于http服务的yum仓库:
systemctl enable httpd        把http服务设置为开机自启动
systemctl start httpd         启动http服务
mkdir -p /var/www/html/centos/{7,ks}    创建挂载光盘以及存放kickstart的目录
mount /dev/sr0 /var/www/html/centos/7    挂载光盘

登录http服务进行测试,是否搭建成功

  • 准备kickstart文件
    使用系统自带的模板文件/etc/anaconda-ks.cfg,推荐使用图形工具system-config-kickstart制作。
    注意:在centos7系统选择安装包时无法选择,需要把本地yum仓库名更改[development]
    把kickstart文件ks7.cfg复制到/var/www/html/ksdir目录下
    cp ks7.cfg /var/www/html/ksdir
    注意:要根据情况更改应答文件中指向yum仓库的路径
    注意更改文件权限:
    chmod 644 /var/www/html/ksdir/ks7.cfg
  • 配置DHCP服务
dhcp配置文件默认为空,使用模板文件进行修改
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
更改内容:域名、dns、subnet本地网卡所在网段,dhcp分配地址池范围、网关
最重要的是:filename "pxelinux.0" 
            next-server 192.168.32.129   指向本机(本机作为tftp服务器)
vim /etc/dhcp/dhcpd.conf  
 27 subnet 192.168.32.0 netmask 255.255.255.0 {
 28   range 192.168.32.10 192.168.32.100;
 29   filename "pexlinux.0";                                                          
 30   next-server 192.168.32.129;
 31 } 
systemctl enable dhcpd
systemctl start dhcpd
  • 配置tftp服务
systemctl enable tftp.socket    把tftp服务设置为开机自启动
systemctl start tftp.socket     开启tftp服务
  • 准备相关文件
mkdir /var/lib/tftpboot/pxelinux.cfg/  
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/  
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/  
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  

/var/lib/tftpboot目录下文件列表如下:  
tree /var/lib/tftpboot/  
├── initrd.img  
├── menu.c32  
├── pxelinux.0  
├── pxelinux.cfg  
│   └── default  
└── vmlinuz  
  • 自定义启动菜单
vim  /var/lib/tftpboot/pxelinux.cfg/default
  1 default menu.c32
  2 timeout 60
  3 
  4 menu title PXE CentOS 7
  5 
  6 label linux
  7   menu label Auto Install ^Mini CentOS 7
  8   kernel vmlinuz
  9   append initrd=initrd.img ks=http://192.168.32.129/ksdir/ks7.cfg                 
 10 
 11 label local
 12   menu default
 13   menu label Boot from ^local drive
 14   localboot 0xffff
重启tftp服务
systemctl restart tftp

查看三个服务端口68,67,80是否启动
测试是否能够通过网络启动

PXE自动化安装CentOS6

  • 安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP
  • 1.安装相应软件包,开启服务,设置为开机自启动
yum install dhcp httpd tftp-server syslinux  
chkconfig tftp on  
chkconfig xinetd on  
chkconfig httpd on  
chkconfig dhcpd on  
service httpd start  
service xneted start  
  • 2.准备Yum源和相关目录
mkdir -pv /var/www/html/centos/{6,ks}  
mount /dev/sr0 /var/www/html/centos/6  
把光盘挂载到/var/www/html/centos/6
mkdir /var/www/html/centos/6
mount /dev/sr0 /var/www/html/centos/6
  • 3.准备kickstart文件
    使用系统自带的模板,推荐使用图形界面制作。
    把kickstart文件ks6.cfg复制到/var/www/html/ksdir目录下
    cp ks6.cfg /var/www/html/ksdir
    注意:要根据情况更改应答文件中指向yum仓库的路径
    注意权限:
    chmod 644 /var/www/html/centos/ks/ks6.cfg
  • 4.准备相关的启动文件
配置tftp服务,复制文件到/var/lib/tftpboot
复制pxelinux.0文件到/var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
不使用自定义菜单,使用系统默认菜单
复制/mnt/cdrom/isolinux/下启动菜单用到的文件到/var/lib/tftpboot目录下
mkdir  /var/lib/tftpboot/pxelinux.cfg
cp  /mnt/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
其他文件:
cp  /mnt/cdrom/isolinux/{boot.msg,initrd.img,splash.jpg,vesamenu.c32,vmlinuz}  /var/lib/tftpboot

/var/www/tftpboot目录结构如下:  
tree /var/lib/tftpboot/  
/var/lib/tftpboot/  
├── boot.msg  
├── initrd.img  
├── pxelinux.0  
├── pxelinux.cfg  
│     └── default  
├── splash.jpg  
├── vesamenu.c32  
└── vmlinuz  
1 directory, 7 files  

  • 5.准备启动菜单文件
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  
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 wang CentOS 6  
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 ^Auto Install  an Mini  system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.32.128/ksdir/ks6.cfg
  最小化安装系统指定应答文件路径ks=http://192.168.32.128/ksdir/ks6.cfg
label vesa
  menu label ^Manual Install an system
  kernel vmlinuz
  append initrd=initrd.img repo=http://192.168.32.128/centos/6
  手动安装,类似于救援模式,只需去掉rescue单词即可
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue repo=http://192.168.32.128/centos/6
  救援模式要使用救援模式,需要指定仓库路径repo=http://192.168.32.128/centos/6
label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff
  本地安装 更改系统默认启动项为本地启动  
  • 6.配置dhcp服务
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf  
vim /etc/dhcp/dhcpd.conf  
subnet 192.168.32.0 netmask 255.255.255.0 {
  range  192.168.32.10 192.168.32.100
  next-server 192.168.32.128
  filename "pxelinux.0"
}
service dhcpd start  

查看三个服务端口68,67,80是否启动
测试是否能够通过网络启动

你可能感兴趣的:(Linux高级篇--运维自动化之PXE安装系统)