• centos7 PXE自动安装环境搭建


    原理:


       要进行自动安装的主机A,加电启动时以网卡为第一启动设备

       1.启动时会向网络广播,找到dhcp服务器B请求分配IP地址信息,服务器B除了给其分配基本的IP信息(ip、netmask、geteway、dns、domain,主要为前2者),并给出pxe引导文件地址

       2.主机B根据A提供的pxe相关文件的tftp地址下载这些文件然后启动这个引导装载器(为什么用tftp而不用ftp因为前者是后者的精简版,访问资源不用用户认证!!)

       3.主机B在引导装载器的命令行交互模式中告诉其kickstart文件的http地址,由引导装载器下载此文件 (本文将该ks地址写入到引导装载器的配置文件中,从而略去命令行的交互)

       4.引导装载器根据kickstart上提供的主机安装步骤以及centos7安装包所在的http地址来完成自动安装


    实验环境:


    1.CentOS7光盘镜像一张

    2.主机A(centos7)、B(centos6或7)、C(centos7)位于同一网络中


    主机A:192.168.56.6

        dhcp服务:

       提供地址:192.168.56.0/24内分配192.168.56.20-254

       提供pxe启动服务器文件地址 : 192.168.56.6 pxelinux.0

        tftp服务:

       提供pxe文件、引导文件(含图形界面),tftp服务器在数据目录/var/lib/tftpboot/提供pxelinux.0文件和centos7安装光盘上的相关文件

    .

    ├── boot.msg

    ├── initrd.img

    ├── pxelinux.0

    ├── pxelinux.cfg

    │   └── default

    ├── splash.jpg

    ├── vesamenu.c32

    └── vmlinuz

        http服务

           提供软件包库: centos7安装盘的内容放在/var/www/html/centos/7/iso/x86_86

           提供kickstart文件: ks文件放在/var/www/html/centos/7/iso/ks_c7_x86_64.cfg


    主机B:192.168.56.12

        负责验证主机A上的网络服务是否正常

    测试dhcp服务是否正常

        dhclient -d 192.168.56.6 

        测试pxe引导文件是否能下载

        tftp 192.168.56.6 -c get pxelinux.0

        测试软件包库地址:

        elinks http://192.168.56.6/centos/7/iso/x86_86

        测试kickstart文件地址:

        elinks http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg

    主机C:要进行自动安装centos7的主机



    实验步骤:


    一、主机A的环境准备


    1.关闭selinux服务和防火墙服务

    # grep "^SELINUX=" /etc/selinux/config 

    SELINUX=disabled

    # systemctl disable firewalld

    # systemctl stop firewalld


    2.设置yum源,以便安装其他服务软件

    # cat /etc/yum.repos.d/CentOS-dvd.repo 

    [dvd]

    name=CentOS-7 - dvd

    baseurl=file:///media/dvd

    gpgcheck=1

    enabled=1

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    # tail -1 /etc/fstab 

    /dev/cdrom /media/dvd iso9660 defaults,ro 0 0

    在第一个的光驱插入centos7的安装盘,然后执行

    # mount -a

    如下看到挂载已成功

    # mount | grep /media

    /dev/sr0 on /media/dvd type iso9660 (ro,relatime)


    二、主机A搭建DHCP服务,并用主机客户端B测试


    a.安装和配置DHCP

    # yum -y install dhcp

    # vim /etc/dhcp/dhcpd.conf

    # cat /etc/dhcp/dhcpd.conf

    ##########################dhcpd.conf文件开始##########################

    #设置客户端的搜索域名,也就是/etc/resolv.conf中的search指令

    option domain-name "tangsw.comg";

    #设置客户端的DNS

    option domain-name-servers 192.168.56.6, 192.168.56.11;

    #IP地址的最小、大租约时间

    default-lease-time 600;

    max-lease-time 7200;

    #日志设置

    log-facility local7;

    #给客户端分配的地址段,以及指定客户机从哪个地址下载pxe文件来启动引导装载器

    subnet 192.168.56.0 netmask 255.255.255.0 {

      range 192.168.56.20 192.168.56.254;

      option routers 192.168.56.6;

      next-server 192.168.56.6;

      filename "pxelinux.0";

    }

    ##########################dhcpd.conf文件开始##########################


    b.启动并设置开机启动

    # systemctl start dhcpd

    # systemctl enable dhcpd


    c.用主机B验证能否从服务器A获取IP租约信息

    [root@localhost ~]# yum install -y dhclient

    [root@localhost ~]# dhclient -d eth0

    Internet Systems Consortium DHCP Client 4.1.1-P1

    Copyright 2004-2010 Internet Systems Consortium.

    All rights reserved.

    For info, please visit https://www.isc.org/software/dhcp/


    Listening on LPF/eth0/08:00:27:85:73:30

    Sending on   LPF/eth0/08:00:27:85:73:30

    Sending on   Socket/fallback

    DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x4b5bbd38)

    DHCPACK from 192.168.56.6 (xid=0x4b5bbd38)

    bound to 192.168.56.104 -- renewal in 277 seconds.

    ^C

    从输出的信息可以看到eth0能从192.168.56.6获取到IP 192.168.56.104


    三、主机A上tftp服47务的安装,准备tftp要提供文件,以及主机B客户端测试、主机C测试


    1. 安装tftp,tftp是依赖于超级守护进程xinetd的,由xinetd负责管理tftp的启动和运行

    # yum -y install tftp-server

    ...........(略去).........

    ================================================================================

     Package             Arch           Version                   Repository   Size

    ================================================================================

    Installing:

     tftp-server         x86_64         5.2-11.el7                dvd          44 k

    Installing for dependencies:

     xinetd              x86_64         2:2.3.15-12.el7           dvd         128 k

    ...........(略去).........

    tftp的配置文件以及数据文件路径

    # rpm -ql tftp-server | egrep "^(/etc|/var)"

    /etc/xinetd.d/tftp

    /var/lib/tftpboot


    2.设置xinetd和tftp开机启动

    # systemctl enable xinetd

    # systemctl start xinetd

    # vim /etc/xinetd.d/tftp 

    # grep disable /etc/xinetd.d/tftp 

    disable = no


    3..准备pxelinux.0 (来自syslinux包)

    # yum -y install syslinux

    # rpm -ql syslinux | grep '/pxelinux.0'

    /usr/share/syslinux/pxelinux.0

    # cd /var/lib/tftpboot/

    [root@c7 tftpboot]# cp /usr/share/syslinux/pxelinux.0 .


    4.准备pxe引导相关的引导装载器

    [root@c7 tftpboot]# mkdir pxelinux.cfg

    [root@c7 tftpboot]# cp /media/dvd/images/pxeboot/{initrd.img,vmlinuz} .

    [root@c7 tftpboot]# cp /media/dvd/isolinux/{boot.msg,vesamenu.c32,splash.png} .

    [root@c7 tftpboot]# cp /media/dvd/isolinux/isolinux.cfg pxelinux.cfg/default

    [root@c7 tftpboot]# vim /media/dvd/isolinux/isolinux.cfg pxelinux.cfg/default

    label linux

      menu label ^Install CentOS 7

      kernel vmlinuz

      append initrd=initrd.img inst.ks=http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg ip=dhcp

    #  append initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 quiet ,上一行对本行(源文件)做了修改,告诉引导装载器从哪里下载ks文件进行自动安装。


    5.通过工具tftp测试客户端B能否正常访问服务器A上的tftp服务

    注意:客户端要关闭防火墙,否则可能tftp能连接上去但是下载不了文件

    [root@localhost ~]# yum -y install tftp

    [root@localhost ~]# tftp 192.168.56.6 -c get pxelinux.0

    如果pxelinux.0文件能下载,则表示TFTP服务正常


    6.测试主机c能否正常通过网络引导(主机A上提供的DHCP以及TFTP)

    设置主机c的网卡设备为第一启动设备,加电开机,如果能看到安装引导界面则表示DHCP、TFTP服务正常,并且用于pxe引导的文件部署正常。



    四、主机A上http服务的安装,部署安装源,部署kickstart文件,以及主机B客户端测试、主机C测试


    1.安装httpd服务,设置开机启动,启动该服务

    # yum -y install httpd

    # systemctl enable httpd

    ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'

    # systemctl start httpd


    2.在httpd服务上部署pxe安装的安装包库

    # mkdir -p  /var/www/html/centos/7/iso/x86_64

    # vim /etc/fstab 

    # tail -2 /etc/fstab 

    /dev/cdrom /media/dvd iso9660 defaults,ro 0 0

    /media/dvd /var/www/html/centos/7/iso/x86_64 none bind,ro 0 0

    # mount -a

    关盘镜像先挂载在/media/dvd作为服务器A的yum源,再通过该目录绑定到A的httpd目录,作为pxe自动安装的安装包,一举两得

    在测试换


    3.通过工具elinks,让客户端B测试服务器A上所部署的安装源是否正常

    [root@localhost ~]# yum -y install elinks  

    [root@localhost ~]# elinks http://192.168.56.6/centos/7/iso/x86_64


    4.在httpd服务上部署kickstart文件

    # yum -y install system-config-kiskstart

    # system-config-kiskstart &

    如果是用xshell之类的远程登录工具,则需要配置才能显示system-config-kiskstart命令弹出的窗口,否则在A的桌面环境执行该命令。

    在这个kickstart文件创建的程序中导入/root/anacodor-ks.cfg,基于这个文件来修改,然后将修改后的文件放到http的目录,保存路径为/var/www/html/centos/7/iso/ks_c7_x86_64.cfg,并用ksvalidator校验语法是否正确

    # ksvalidator /var/www/html/centos/7/ks_c7_x86_64.cfg

    # cat /var/www/html/centos/7/ks_c7_x86_64.cfg

    ##########################ks_c7_x86_64.cfg文件开始##########################

    [root@c7 iso]# cat /var/www/html/centos/7/iso/ks_c7_x86_64.cfg

    #platform=x86, AMD64, or Intel EM64T

    #version=DEVEL

    # Install OS instead of upgrade

    install

    # X Window System configuration information

    xconfig  --startxonboot

    # Keyboard layouts

    # old format: keyboard us

    # new format:

    keyboard --vckeymap=us --xlayouts='us'

    # Reboot after installation

    reboot

    # Root password

    rootpw --iscrypted $1$KHH8cH8b$1O7rrwphchrB2AE0GGku/0

    # System timezone

    timezone Asia/Shanghai --isUtc

    # Use network installation

    url --url="http://192.168.56.6/centos/7/iso/x86_64"

    repo --name="CentOS" --baseurl="http://192.168.56.11/centos/6/iso/x86_64" --cost=100 

    # System language

    lang en_US

    # Firewall configuration

    firewall --disabled

    # Network information。如果根据安装主机的网卡数来重复指令的次数很可能安装不了

    network  --bootproto=dhcp --device=link

    # System authorization information

    auth  --useshadow  --passalgo=sha512

    # Use graphical install

    graphical

    # Run the Setup Agent on first boot

    firstboot --enable

    # SELinux configuration

    selinux --disabled


    ignoredisk --only-use=sda

    # System bootloader configuration

    bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda

    autopart --type=lvm

    # Clear the Master Boot Record

    zerombr

    # Partition clearing information

    clearpart --all --initlabel 


    %packages

    @base

    @core

    @desktop-debugging

    @dial-up

    @directory-client

    @fonts

    @gnome-desktop

    @guest-agents

    @guest-desktop-agents

    @input-methods

    @internet-browser

    @java-platform

    @multimedia

    @network-file-system-client

    @networkmanager-submodules

    @print-client

    @x11

    kexec-tools


    %end

    ##########################ks_c7_x86_64.cfg文件结束##########################


    5.通过工具elinks,让客户端B测试服务器A上所部署的安装源是否正常

    [root@localhost ~]# elinks http://192.168.56.6/centos/7/iso/ks_c7_x86_64.cfg


    验证


    将主机C在bios设置第一启动设备为网卡,开机后显示引导界面,选择"Install CentOS 7",按enter,如果能自动安装centos7,说明成功了。





  • 相关阅读:
    poj 1087 A Plug for UNIX
    poj 1149 : PIGS
    自己制作的我们学校的校园无线网自动登录程序(C#实现)
    poj 1067取石子(威佐夫博奕)
    poj 1088滑雪
    SQL Server 2005 系统数据介绍:sys.dm_exec_requests
    一票难求:我为铁道部献计献策!
    Integration Services 学习(7):包部署
    Integration Services 学习(8):事务
    Integration Services包部署常见问题汇总
  • 原文地址:https://www.cnblogs.com/tsw1107/p/5974135.html
Copyright © 2020-2023  润新知