zoukankan      html  css  js  c++  java
  • Linux_PXE服务器_RHEL7

    目录

    前言

    PXE(preboot execute environment预启动执行环境 ),支持Client通过网络从Server下载映像,并由此支持通过网络启动操作系统,在启动过程中,Client要求Server分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到Client内存中执行,由这个启动软件包完成Client上的基本软件设置,从而引导预先安装在Sserver上的操作系统,即”推机”。本篇介绍在RHEL7上的PXE服务器搭建。

    PXE原理

    1、Client首先要获取 IP(进行网络连接)
    PXEserver中要含有DHCPservice,为Client提供p-netmask-gw-dns。
    2、Client想要得到安装界面,PXEserver必须为其提供系统引导
    Client从PXEserver中获得 pxelinux.0(实际上就是 grub)、vmlinuz(内核文件),initrd(内存驱动盘)这3个文件。先通过引导 grub,再加载其余2个文件来实现Client的系统引导。
    3、通过TFTPserver以广播的形式发送系统引导所需要的3个文件给Client
    PXEserver告知TFTPserver Client的IP,再由TFTPserver将系统引导的3个文件发送给Client。
    4、TFTPserver共享Client安装系统所需要的软件包
    通过FTP(RHEL6)、HTTP(RHEL7)、 nfs(RHEL5)等服务实现CS之间的文件共享。
    4、安装系统时设置Hostname :如果没有设置Client的hostname,默认为localhost.localdomain。若想给每个Client都设置唯一的hostname,需要DNSserver,再利用DNSserver的反向解析,为Client分配Hostname。
    5、批量部署:使用 Kickstart无人值守服务批量部署服务器。
    总结:PXE服务器需要提供下列服务
    (1)DHCP
    (2)TFTP
    (3)FTP|HTTP|NFS
    (4)DNS
    (5)Kickstart
    下面几种不同OS平台上的部署方案均使用了Kickstart无人值守服务:
    1)Sattlle
    2)RH401 卫星服务器(walkspace centos)
    3)windows WDS

    搭建PXE服务器

    本篇的实验是搭建all-in-one的PXE服务器,即将上述所有的服务搭建在用一台服务器上。

    关闭SELinux和防火墙

    setenforce0  
    systemctl stop firewalld.service 
    systemctl mask iptables.service
    systemctl mask ebtables.service

    配置DHCP

    安装DHCP软件包

    yuminstall dhcp  

    编辑DHCP服务配置文件
    Copy模版得到配置文件

    cat /usr/share/doc/dhcp*/dhcpd.conf.example > /etc/dhcp/dhcpd.conf

    vim /etc/dhcp/dhcpd.conf

    log-facility local7;
    subnet 192.168.0.0 netmask 255.255.255.0 { 
      range 192.168.0.10 192.168.0.100; 
      option domain-name-servers 192.168.0.1; 
      option domain-name "fan.com"; 
      option routers 192.168.0.1;
      next-server 192.168.0.1;  #指定TFTPserver ip,现在为本机IP
      filename "/pxelinux.0";   #此"/"指的是TFTP共享的根目录/var/lib/tftpboot下
      option broadcast-address 192.168.0.255; 
      default-lease-time 600;
      max-lease-time 7200; 
    }

    重启DHCP服务加载配置

    systemctl  restart dhcpd
    netstat -anplut|grep dhcp
    systemctl enable dhcpd.service

    配置TFTP

    安装TFTP软件包

    yum install tftp-server

    安装syslinux软件包
    获取pxelinux.0文件

    cd /var/lib/tftpboot         #TFTP共享跟目录
    yum install syslinux
    rpm -ql syslinux | grep pxelinux.0   #查询软件包文件的安装位置 
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

    从OS光盘中获取initrd.img、vmlinuz文件

    mount /dev/cdrom /mnt/cdrom
    cd /mnt/cdrom/images/pxebootcp initrd.img vmlinuz /var/lib/tftpboot

    获取pxelinux的配置文件
    在推机的过程中,Pxelinux会以IP地址的16进制表示来搜索配置文件,如果没找到,就去除最低一位数后继续找。如果所有匹配都失败,就使用default文件。

    mkdir /var/lib/tftpboot/pxelinux.cfg
    cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 
    chmod u+w /var/lib/tftpboot/pxelinux.cfg/default  
    cp /mnt/isolinux/boot.msg /var/lib/tftpboot/     #引导图片
    chmod u+w /var/lib/tftpboot/boot.msg

    编辑pxelinux的配置文件
    vim /var/lib/tftpboot/pxelinux.cfg/default

    default linux#第一个label改为linux
    
    append    #扩充无人值守功能
    initrd=initrd.img inst.repo=ftp://192.168.0.1/cdrom ks=ftp://192.168.0.1/ks.cfg quiet   #指定无人值守文件ks.cfg

    编辑TFTP服务配置文件
    vim /etc/xinetd.d/tftp

    disable=no 

    重启TFTP :

    systemctl restart xinetd.service
    netstat -anplut |grep :69  #检查xinetd服务是否启动

    配置FTP

    将OS光盘中的软件包共享给Client。
    安装vsftpd软件包

    yuminstall vsftpd

    挂载光盘到FTP跟目录下

    mkdir /var/ftp/cdrom
    mount /dev/cdrom /var/ftp/cdrom

    重启FTP服务

    systemctl restart vsftpd 
    systemctl enable vsftpd

    配置Kickstart

    使用用图形化界面system-config-kickstart 建立自动应答Kickstart文件。
    安装图形化界面

    yum install system-config-kickstart

    再次编辑Kickstart无人值守文件
    vim /root/ks.cfg
    加入你未来部署系统的软件包(%packages 软件包名 %end)
    通过FTP服务共享ks.cfg文件

    cp /root/ks.cfg /var/ftp 
    systemctl restart xinetd.service  

    Jmilk

    相关阅读:

  • 相关阅读:
    C语言printf语法
    Android动画
    【转】Android内存(内存溢出 内存不足 内存低 .)优化详解
    Android dialog在有的手机上宽度不能充满屏幕的问题
    ios单例模式(Singleton)
    给ImageButton设置按下的效果
    Dynamics CRM Entity Relationship Many to Many (N:N)
    Python实现Mysql数据库连接池
    python获取指定时间差的时间
    Visual studio debug—Process with an Id of 5616 is not running的解决方法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13311019.html
Copyright © 2011-2022 走看看