zoukankan      html  css  js  c++  java
  • 【Linux】使用 PXE+Kickstart 无人值守批量安装系统

    一、PXE背景知识

      通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统。

      PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主

    要用于在无人值守安装系统中引导客户端主机安装 Linux 操作系统。

      Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件。所以只要Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。

    二、PXE开始部署

    #本次pxe server为centos74系统,要安装的pxe client操作系统也是centos74;

    #关闭firewalldNetworkManagerselinux

    [root@foryou_hg ~]# systemctl stop firewalld

    [root@foryou_hg ~]# systemctl disable  firewalld

     

    [root@foryou_hg ~]# systemctl stop NetworkManager

    [root@foryou_hg ~]# systemctl disable  NetworkManager

    [root@foryou_hg ~]# vim /etc/selinux/config

    [root@foryou_hg ~]# setenforce 0

    setenforce: SELinux is disabled

    [root@foryou_hg ~]# getenforce

    Disabled

     

    #查看yum源是否安装成功:

    1、配置 DHCP 服务程序

    # DHCP 服务程序用于为客户端主机分配可用的 IP 地址,而且这是服务器与客户端主机进行文件传输的基础。

    1)yum安装dhcp

    [root@foryou_hg ~]# yum install -y dhcp

    2)配置dhcp配置文件

    [root@foryou_hg ~]# vim /etc/dhcp/dhcpd.conf #添加如下内容

    allow booting;

    allow bootp;

    ddns-update-style interim;

    ignore client-updates;

    subnet 192.168.1.0 netmask 255.255.255.0 {

          option subnet-mask 255.255.255.0;

          option domain-name-servers 192.168.1.30;

          range dynamic-bootp 192.168.1.100  192.168.1.200;

          default-lease-time 21600;

          max-lease-time 43200;

          next-server 192.168.1.30

          filename "pxelinux.0";

    }

    3)重启dhcp并将其加入开机启动

    [root@foryou_hg ~]# systemctl restart dhcpd

    [root@foryou_hg ~]# systemctl enable  dhcpd

    2、配置 TFTP 服务程序

    #TFTP 是一种非常精简的文件传输服务程序,它的运行和关闭是由 xinetd 网络守护进程服务来管理的。 xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启 TFTP 服务程序,只需在 xinetd 服务程序的配置文件中把 disable 参数改成 no 就可以了。保存配置文件并退出,然后重启 xinetd服务程序,并将其加入到开机启动项中(在 RHEL 7 系统中,已经默认启用了 xinetd 服务程序,因此在将其添加到开机启动项中的时候没有输出信息属于正常情况)。

    #vsftpd 是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而 TFTP 作为一种基于 UDP 协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此可以配置 TFTP 服务程序,为客户端主机提供引导及驱动文件当客户端主机有了基本的驱动程序之后,再通过 vsftpd 服务程序将完整的光盘镜像文件传输过去。(只要能将系统安装镜像成功传输给客户端即可,因此也可以使用 httpd 来替代 vsftpd 服务程序。)(TFTP 协议不具备 FTP 的许多功能(例如列出目录,密码认证等等),但 TFTP 协议配置非常简单,而且资源消耗更低,非常适合传输不敏感的文件。)

    1)yum安装tftp-server

    [root@foryou_hg ~]# yum install -y tftp-server

    2)配置tftp-server配置文件

    [root@foryou_hg ~]# vim /etc/xinetd.d/tftp  #只需要把 disable 参数改成 no 就可以了

    service tftp

    {

            socket_type             = dgram

            protocol                = udp

            wait                    = yes

            user                    = root

            server                  = /usr/sbin/in.tftpd

            server_args             = -s /var/lib/tftpboot

            disable                 = no

            per_source              = 11

            cps                     = 100 2

            flags                   = IPv4

    }

    3)重启xinetd并将其加入开机启动

    [root@foryou_hg ~]# systemctl restart xinetd

    [root@foryou_hg ~]# systemctl enable  xinetd

    3、配置 SYSLinux 服务程序

    #SYSLinux 是一个用于提供引导加载的服务程序。与其说 SYSLinux 是一个服务程序,不如说更需要里面的引导文件,在安装好 SYSLinux 服务程序软件包后, /usr/share/syslinux 目录中会出现很多引导文件。

    1)yum安装syslinux

    [root@foryou_hg ~]# yum install -y syslinux

    2)复制必要文件到tftpboot默认目录下

    #1.我们首先需要把 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中,也就是前文提到的文件 pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。    2.另外在 RHEL7 系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/mnt目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到 TFTP 服务程序的默认目录中。

    [root@foryou_hg pub]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    直接复制镜像中的isolinux/*到此目录即可;

    [root@foryou_hg pub]#cp -rp  /mnt/isolinux/* /var/lib/tftpboot/

    然后在 TFTP 服务程序的目录中新建 pxelinux.cfg 目录,将系统光盘中的开机选项菜单复制到该目录中,并命名为 default。这个 default 文件就是开机时的选项菜单,如图 下图 所示。

     

    [root@foryou_hg tftpboot]# mkdir pxelinux.cfg

    [root@foryou_hg tftpboot]# cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

    我这里就不在原有基础上进行更改了,而采取精简配置,自定义编写default文件

    [root@foryou_hg pxelinux.cfg]# chmod 777 default #修改default文件权限为777

     

    #default 1代表:这里默认按1选项的方式进行安装系统,prompt参数代表需要手动安装按1键后才会开始安装系统:

    [root@foryou_hg pxelinux.cfg]# vim default

    default 1

    #default rescue

    #prompt 1

    timeout 100

     

    display boot.msg

     

    label rescue

      kernel vmlinuz

      append load_ramdisk=1 initrd=initrd.img rescue

     

     

    label 1

      kernel vmlinuz

      append ks=ftp://192.168.1.30/pub/ks.cfg  initrd=initrd.img

     

    label rhel6

      kernel vmlinuz

      append ks=ftp://192.168.1.30/pub/dashuju6_4.cfg ksdevice=eth4 initrd=initrd.img

     

    4、配置 vsftpd 服务程序

    1)yum安装vsftpd

     [root@foryou_hg ~]# yum install -y tftp-server

    2)在确认系统光盘镜像已经正常挂载到/mnt/目录后,把目录中的光盘镜像文件全

    部复制到 vsftpd 服务程序的工作目录中。

    [root@foryou_hg pub]# pwd

    /var/ftp/pub

    [root@foryou_hg pub]# cp -rp /mnt/* /var/ftp/pub/centos74/

    5、创建 KickStart 应答文件

    在 root 管理员的家目录中有一个名为 anacondaks.cfg 的文件,它就是应答文件。

     

    [root@foryou_hg ~]# cp /root/anaconda-ks.cfg /var/ftp/pub/ #我这里采用自定义编辑ks.cfg文件

    [root@foryou_hg ~]# cd /var/ftp/pub/

    [root@foryou_hg pub]# chmod 777 ks.cfg

    [root@foryou_hg pub]# vim ks.cfg

      1 #platform=x1, AMD64, or Intel EM64T
      2 #version=DEVEL
      3 text
      4 firewall --disabled
      5 install
      6 #nfs --server=192.168.1.30 --dir=/var/ftp/pub/v_install_dir
      7 url --url=ftp://192.168.1.30/pub/centos74
      8 rootpw   zxl520
      9 auth  --useshadow  --passalgo=sha512
     10 #graphical
     11 firstboot --disable
     12 keyboard us
     13 lang en_US
     14 selinux --disabled
     15 logging --level=info
     16 reboot
     17 timezone  Asia/Shanghai
     18 network --bootproto=dhcp --onboot yes 
     19 bootloader --location=mbr
     20 zerombr
     21 #clearpart --all --initlabe 
     22 clearpart --all --drives=sda --initlabe 
     23 part /boot --fstype=xfs --size=500 --ondisk=sda
     24 #part /biosboot --fstype=biosboot --size=1
     25 part pv.008002 --grow --size=1  --ondisk=sda
     26 volgroup sys_vg00 --pesize=4096 pv.008002
     27 logvol swap --name=swap_lv00 --vgname=sys_vg00 --size=4096
     28 logvol / --fstype=xfs --name=root_lv00 --vgname=sys_vg00  --size=10240
     29 #logvol /home --fstype=ext4 --name=home_lv00 --vgname=sys_vg00 --size=204800
     30 logvol /app --fstype=xfs --name=data_lv00 --vgname=sys_vg00 --grow --size=1
     31 
     32 %post
     33 chkconfig --list|awk '{print chkconfig --level 345  off}'|grep -v :|grep -v 345 off|bash && chkconfig NetworkManager off && chkconfig --level 345 crond on && chkconfig --level 345 haldaemon on && chkconfig --level 345 irqbalance on && chkconfig --level 345 lvm2-monitor on && chkconfig --level 345 messagebus on && chkconfig --level 345 network on && chkconfig --level 345 ntpd on && chkconfig --level 345 rsyslog on && chkconfig --level 345 sshd on && chkconfig --level 345 sysstat on && chkconfig --level 345 udev-post on
     34 
     35 chkconfig --levels 35 acpid           off
     36 chkconfig --levels 35 atd             off
     37 chkconfig --levels 35 auditd          off
     38 chkconfig --levels 35 autofs          off
     39 chkconfig --levels 35 bluetooth       off
     40 chkconfig --levels 35 cpuspeed        off
     41 chkconfig --levels 35 cups            off
     42 chkconfig --levels 35 firstboot       off
     43 chkconfig --levels 35 gpm             off
     44 chkconfig --levels 35 iptables        off
     45 chkconfig --levels 35 lvm2-monitor    off
     46 chkconfig --levels 35 mdmonitor       off
     47 chkconfig --levels 35 netfs           off
     48 chkconfig --levels 35 nfs             off
     49 chkconfig --levels 35 nfslock         off
     50 chkconfig --levels 35 psacct          off
     51 chkconfig --levels 35 rdisc           off
     52 chkconfig --levels 35 rhnsd           off
     53 chkconfig --levels 35 rpcgssd         off
     54 chkconfig --levels 35 rpcidmapd       off
     55 chkconfig --levels 35 rpcsvcgssd      off
     56 chkconfig --levels 35 saslauthd       off
     57 chkconfig --levels 35 smartd          off
     58 chkconfig --levels 35 wdaemon         off
     59 chkconfig --levels 35 winbind         off
     60 chkconfig --levels 35 wpa_supplicant  off
     61 chkconfig --levels 35 ypbind          off
     62 chkconfig --levels 35 conman          off
     63 chkconfig --levels 35 dnsmasq         off
     64 chkconfig --levels 35 httpd           off
     65 chkconfig --levels 35 ip6tables       off
     66 chkconfig --levels 35 kdump           off
     67 chkconfig --levels 35 netconsole      off
     68 chkconfig --levels 35 pcscd           off
     69 chkconfig --levels 35 restorecond     off  
     70 
     71 
     72 #disable NetworkManager
     73 systemctl stop NetworkManager
     74 systemctl disable  NetworkManager
     75 
     76 sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config
     77 #echo # Added for history display >> /etc/profile
     78 #echo export HISTTIMEFORMAT="%F %T " >> /etc/profile
     79 #echo  >> /etc/rsyslog.conf 
     80 #echo # Added for Fjtelecom Log Server >> /etc/rsyslog.conf
     81 #echo *.* @134.128.177.202 >> /etc/rsyslog.conf
     82 
     83 
     84 wget ftp://192.168.1.30/pub/install.tar.gz
     85 tar -zxvf install.tar.gz
     86 
     87 cd install
     88 #sh install.sh
     89 
     90 > /etc/resolv.conf
     91 
     92 #sh ssh.sh
     93 #sh disk.sh
     94 sh Agent-Core-RedHat_EL7-9.6.2-8708.x86_64.rpm 
     95 cd ..
     96 rm -rf install
     97 rm -rf install.tar.gz
     98 
     99 ####1.openssh update######
    100 sed -i "s/#PermitRootLogin/PermitRootLogin/g" /etc/ssh/sshd_config 
    101 systemctl restart sshd 
    102 %end
    103 
    104 
    105 %packages
    106 @^minimal
    107 @core
    108 wget
    109 net-tools                                
    110 vim
    111 %end
    View Code

    开始部署pxe client

    #此时PXE server的ip及vmwareworkstation虚拟网络编辑器的配置情况如下:

    #此时新建pxe client虚机,创建磁盘大小为20G,网络模式为主机模式:

     

    重启虚机,进入PXE安装系统模式:

     

    ctrl alt f2进入shell模式:(按ctrl alt f1返回)

     

    三、验证PXE部署结果

    The end!

  • 相关阅读:
    windown 下最简单的安装mysql方式
    mac 重置mysql密码
    开发过程中用到的软件
    Springboot 热部署问题。亲测可用。
    时间转换~
    java 流转换BASE64的一些问题
    SpringMvc 使用Thumbnails压缩图片
    SpringMVC Get请求传集合,前端"异步"下载excel 附SpringMVC 后台接受集合
    Mac 笔记本 开发日记
    RabbitMQ入门:路由(Routing)
  • 原文地址:https://www.cnblogs.com/520ZXL/p/10527818.html
Copyright © 2011-2022 走看看