您的位置:新葡亰496net > 电脑系统 > 新葡亰496net:运行自动化之系统安装,无人值守

新葡亰496net:运行自动化之系统安装,无人值守

发布时间:2019-08-31 20:12编辑:电脑系统浏览(53)

     

    • DHCP服务
    • DHCP实现
    • PXE(Preboot Excution Environment) 预启动执行环境
    • Cobbler

    Cobbler 介绍

    • 快速网络安装linux操作系统的服务,支持众多的Linux版本,也支持网络安装windows系统
    • PXE的二次封装,将多种安装参数封装到一个菜单
    • 它是由Python编写的
    • 还可以用CLI和WEB来管理

    一、 准备工作

    1 概述

    环境准备

    • 准备两台主机,如centos6和centos7
    • centos7当作server服务器
    • 关闭selinux
    • 关闭防火墙

    一、DHCP服务

    • DHCP (Dynamic Host Configuration Protocol)
      动态主机配置协议,是一种局域网协议,属于UDP协议

    • 应用:为局域网内的主机分配ip地址,同时也作为内网的管理手段

    • 使用场景:自动化安装系统,解决ipv4地址不足的问题

    • DHCP报文:共有八种报文

      • DHCP DISCOVER:客户端到服务器
      • DHCP OFFER :服务器到客户端
      • DHCP REQUEST:客户端到服务器
      • DHCP ACK :服务器到客户端
      • DHCP NAK:服务器到客户端,通知用户无法分配合适的IP地址
      • DHCP DECLINE :客户端到服务器,指示地址已被使用
      • DHCP RELEASE:客户端到服务器,放弃网络地址和取消剩余的租约时间
      • DHCP INFORM:客户端到服务器,客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,极少用到
    • 续租:

      • 50% :租赁时间达到50%时续租,向DHCP服务器发送新的DHCP REQUEST请求。如果dhcp服务没有拒绝的理由,则回应DHCP ACK信息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
      • 87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求

    *DHCP服务必须基于本地,

    • DHCP服务器一般来说应该与需要DHCP服务的客户端处于同一个网段中

    • 这是因为DHCP服务过程基于广播,而广播只能在同一个网段内传送

    • 实现跨网段的DHCP服务

      • 需要在客户机网段指定一台代理(dhcrelay:中继)负责客户机与另一个网段的DHCP服务器的通信,实现IP地址的分配
      • 符合RFC 1542 Compliant Routers标准的路由器可以直接实现中继的功能

    Cobbler 配置目录说明

    安装:yum install cobbler

    配置文件目录 /etc/cobbler

    style="font-size: large; font-family: 宋体;">/etc/cobbler/settings : cobbler 主配置文件

    /etc/cobbler/iso/: iso模板配置文件

    /etc/cobbler/pxe: pxe模板文件

    /etc/cobbler/power: 电源配置文件

    style="font-size: large; font-family: 宋体;">/etc/cobbler/user.conf: web服务授权配置文件

    style="font-size: large; font-family: 宋体;">/etc/cobbler/users.digest: web访问的用户名密码配置文件

    style="font-size: large; font-family: 宋体;">/etc/cobbler/dhcp.template : dhcp服务器的的配置末班

    style="font-size: large; font-family: 宋体;">/etc/cobbler/dnsmasq.template : dns服务器的配置模板

    style="font-size: large; font-family: 宋体;">/etc/cobbler/tftpd.template : tftp服务的配置模板

    style="font-size: large; font-family: 宋体;">/etc/cobbler/modules.conf : 模块的配置文件

    • anaconda程序的运行配置文件 kickstart 文件,root用户家目录下的anaconda.cfg即ks.cfg文件。
    • CentOS6与CentOS7系统镜像文件
    • 软件/工具:httpd 、tftp-server 、dhcp 、syslinux 包

    本文中将介绍基于PXE和cobbler两种方式的自动化安装。两种方式实现的效果是一样的,但是cobbler是PXE的二次封装,在使用上更加方便,集成多个软件进行实现。关于自动化安装中的相关概念和ks文件等的介绍,详见博客:http://www.linuxidc.com/Linux/2017-10/147225.htm

    安装

    cobbler包光盘里是没有的,要配置epel源,这里就说怎么配置epel源了,在yum.repos.d/目录下照葫芦画瓢就可,配置好后执行如下命令安装

    yum install –y cobbler
    #
    #
    

     

    安装成功后,我们发现它还安装了其他的服务

    新葡亰496net 1

    备注:我们搭建cobbler-系统部署需要用到httpd、tftp-server、dhcp服务,从图上可以看出它没有安装dhcp服务,所以我们要安装下dhcp服务

    yum install –y dhcp
    #
    #
    

    二、DHCP实现

    • Linux DHCP协议的实现程序:dhcp, dnsmasq(包含dhcp, dns功能)

    • 端口:
      dhcp_server: 67/udp
      dhcp_client: 68/udp

    • 配置DHCP服务器端

      • DHCP服务的配置文件位于:/etc/dhcp/dhcpd.conf,打开文件后如下图:

      新葡亰496net 2

      • 提示模板文件/usr/share/doc/dhcp*/dhcpd.conf.sample和帮助参考位置:man 5 dhcpd.conf

      • 直接赋值模板文件覆盖配置文件,在模板基础上修改配置
        cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

      新葡亰496net 3

      • 修改配置文件:vim /etc/dhcp/dhcpd.conf
        核心配置内容包含在subnet条目中,这里的配置属于全局配置
        基本格式如下:
      subnet SUBNET_IP netmask NETMASK_IP {
        range START_IP END_START;
        其余设置项
      }
      
      • 例如:DHCP服务器本机IP为192.168.136.229,子网掩码:225.225.225.0,分配的地址库范围:192.168.136.10-192.168.136.30,则配置文件格式如下:
      subnet 192.168.136.0 netmask 225.225.225.0 {
        range 192.168.136.10 192.136.136.30
      }
      

      新葡亰496net 4

      • 配置好后,启动dhcp服务service dhcpd start,在另一台同网段主机上可以看到被分配的ip地址,从192.168.136.10/24开始分配

      新葡亰496net 5

      • 可以查看/var/lib/dhcpd/dhcpd.leases文件内容,查询DHCP服务器地址分配记录

      新葡亰496net 6

    • 其它配置选项:
      filename:指明引导文件名称(用于网络安装系统)
      next-server:提供引导文件的服务器IP地址(用于网络安装系统)

    • 检查配置文件语法
      service dhcpd configtest

    • DHCP客户端(dhclient)
      自动获取的IP信息文件:/var/lib/dhclient目录下,可以看到被分配的地址、DHCP服务器、分配的租期时间等信息

    新葡亰496net 7

    cobbler 目录介绍

    数据目录:

    style="font-size: large; font-family: 宋体;">/var/lib/cobbler/config/: 用于存放distros,system,profiles 等信息配置文件
    /var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
    /var/lib/cobbler/kickstart/: 默认存放kickstart文件
    /var/lib/cobbler/loaders/: 存放各种引导程序

    镜像目录:

    style="font-size: large; font-family: 宋体;">/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
    /var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于远程网络启动
    /var/www/cobbler/repo_mirror/: yum 仓库存储目录

    日志目录:

    style="font-size: large; font-family: 宋体;">/var/log/cobbler/installing: 客户端安装日志
    /var/log/cobbler/cobbler.log : cobbler日志

    二、 安装软件包/工具,启用

    本文是对本地自动化安装系统的扩展。同时,本文在文档后部附上了关于自动化安装PXE系统环境的脚本。

    开启服务

    三、PXE(Preboot Excution Environment) 预启动执行环境

    cobbler 命令介绍

    cobbler check 核对当前设置是否有问题

    cobbler list 列出所有的cobbler元素

    cobbler report 列出元素的详细信息

    cobbler sync 同步配置到数据目录,更改配置最好都要执行下

    cobbler reposync 同步yum仓库

    cobbler distro 查看导入的发行版系统信息

    cobbler system 查看添加的系统信息

    cobbler profile 查看配置信息

    • yum install Packages { httpd , tftp-server , dhcp , syslinux }
    • 配置dhcpd.conf文件,示范文件地址:/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
    • 如果在自己实验,网卡选择主机模式,并且关闭DHCP服务
      新葡亰496net 8

    2 基于PXE 自动化安装

    http服务

    systemctl start httpd
    #开启服务
    systemctl enable httpd
    #设置开机自启动
    

    (一)简介

    • 基于C/S架构设计
    • 支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统

    cobbler 重要的参数

    style="font-size: large; font-family: 宋体;">/etc/cobbler/settings中重要的参数设置

    style="font-size: large; font-family: 宋体;">default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"

    manage_dhcp:1

    manage_tftpd:1

    style="font-size: large; font-family: 宋体;">pxe_just_once:1

    next_server:< tftp服务器的 IP 地址>

    style="font-size: large; font-family: 宋体;">server:<cobbler服务器的 IP 地址>

    ```
        subnet 192.168.163.0 netmask 255.255.255.0 {
                        range 192.168.163.40  192.168.163.60;#dhcp服务的ip地址范围
                        option routers 192.168.163.1;#网关
                        filename"pxelinux.0";#文件名写死,固定在tftp空间寻找这一个文件
                        next-server 192.168.163.20;#系统文件提供机器的地址
                        #详细dhcp配置请自行了解
    }
    ```
    

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

    tftp-server服务

    systemctl start tftp
    #开启服务
    systemctl enable tftp
    #开机自启动
    

    (二)工作原理

    • 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下载安装源文件,读取自动化安装脚本

    cobbler PXE启动错误报告-来自网络

    PXE-E00:Could not find enough free base memory.

              PXE主代码和UNDI运行时模块从闪存或上位内存拷贝至基本内存顶部480K(78000h)至640K(A0000h)的剩余空间位置,这段内存必须被系统BIOS填零,如果这些内存没有填零,PXE ROM里的重布置代码将认为这些内存已经被系统BIOS或其它启动ROM占用了。

    PXE-E01:PCI Vendor and Device IDs do not match!

              此信息在成品BIOS中不可能出现,当系统BIOS初始化基于PCI的ROM时,它将假设PCI总线/设备/模块(Bus/Device/Function)值已在AX寄存器里通过审核,如果AX寄存器里定义的PCI设备不匹配UNDI设备,将出现此错误代码。

    PXE-E04:Error reading PCI configuration space

              如果任何PCI BIOS调用导致PCI设置空间返回错误代码,此信息将出现,此信息将不会在成品BIOS和硬件上出现。

    PXE-E05:EEPROM checksum error

              如果网卡EEPROM内容被损坏,将出现此信息。EEPROM内容的损坏通常发生在正在对网卡EEPROM进行编程时系统突然复位(Reset)或掉电的情形下,如果出现此信息,PXE ROM将不执行引导。

    PXE-E06:Option ROM requires DDIM support

              此信息将不会在成品BIOS中出现,PCI可选ROM通常必须被设置为DDIM可选ROM(通常必须被安置在读/写上位内存中)

    PXE-E07:PCI BIOS calls not supported

              此信息将不会在成品BIOS中出现,PCI BIOS必须有PCI BIOS服务。

    PXE-E08:Unexpected API error.API:xxxxh Status:xxxxh

              如果PXE API返回一个运行时加载器(Runtime Loader)预料之外的状态代码,将出现此信息

    PXE-E09:Unexpected UNDI loader error.Status:xxxxh

              如果UNDI运行时加载器(Runtime Loader)返回预料之外的状态代码,将出现此信息

    • httpd服务使用

      • httpd服务目录地址 /ver/www/html/

        mkdir  -pv  centos/{6,7}  ksdir  
        #kickstart 文件放到 ksdir目录下,方便寻找;
        
      • 将系统镜像文件分别挂载到 centos/6和7的目录下

        mount /dev/sr0  /var/www/html/centos/6 #挂载7同法
        #导入的系统镜像文件,挂载加 -o loop  比较通用
        
      • 将所有共享出去的文件权限修改为 644 权限;不然无法获取到安装文件

    • 启动服务

      • 关闭SElinux 修改/etc/selinux/config文件 SELINUX=disabled
      • 关闭防火墙
      service iptables stop
      chkconfig iptables off  #开机不启动
      #centos6方法
      
      systemctl stop firewalld
      systemctl disable firewalld 
      #centos7方法
      
      • 启动服务

        systemctl enable httpd #开机自动启动http  dhcp  tftp 服务
        systemctl enable dhcpd
        systemctl enable tftp.socket
        

    PXE网络自动化安装:通过搭建网络yum源(http,ftp,nfs三者选一),tftp服务器,dhcp服务器,原理是,通过dhcp服务器,使得机器启动的时候,获取到相关的ip,在dhcp里指定了next-server,该next-server就是tftp服务器的ip,这样,机器获取到ip后,会到指定的tftp服务器的默认路径/var/lib/tftpboot下去下载相关的文件,首先是加载pxelinux.cfg目录下的default文件,该default文件就是安装机器的菜单选项,在这菜单里,指定kickstart文件路径和/var/lib/tftpboot下的initrd.img和vmlinuz的路径,使得需要安装的对应系统能够启动并加载kickstart文件进行安装。在kickstart文件里我们将指定了安装包的路径。

    cobbler服务

    systemctl start cobblerd
    #开启服务
    systemctl enable cobblerd
    #开机自启动
    

    (三)PXE自动化安装CentOS 7(CentOS7作为HTTP、DHCP、TFTP服务器)

    • (1)安装前准备关闭SELinux和防火墙,DHCP服务器设置为静态IP

    • (2)安装相关软件包httpd, tftp-server, dhcp, syslinux

      • httpd服务提供yum源服务,
      • tftp服务器为客户机提供安装系统所需的启动文件、启动菜单、内核文件、伪文件系统
      • dhcp服务器为客户机提供IP地址,并将tftp服务器的地址提供给客户机
      • 启动文件、启动菜单需要安装syslinux软件包后获得
      • 执行命令:yum install httpd tftp-server dhcp syslinux

      新葡亰496net 9

    • (3)配置yum源服务

      • 将httpd服务设置为开机自启动:systemctl enable httpd
      • 打开httpd服务:systemctl start httpd
      • 配置yum源1:建立centos7目录mkdir -p /var/www/html/centos/7
      • 配置yum源2:复制centos7光盘文件内容至centos7目录下,这里将光盘挂载至目录下,效果与前者相同,实际中应该复制至硬盘,保证系统安装执行效率
        mount /dev/sr0 /var/www/html/centos/7

    新葡亰496net 10

    • (4)准备kickstart文件

      • 准备桌面和最小化安装两份文件,可以根据/root/anaconda-ks.cfg文件修改
        注意:使用system-config-kickstart时,CentOS7环境下可能出现无法选择软件包的情况,此时需要将yum源配置文件的首个源配置信息的源标识符改名为"development",即可正常选择软件包

      新葡亰496net 11

      • 准备的kickstart文件:ks7.cfg为桌面安装使用,ks7-mini为最小化安装使用
        mkdir /var/www/html/ksdir 建立kickstart文件目录
        cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7.cfg 复制模板
        cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7-mini.cfg 复制模板

      • 两份kickstart文件示例如下:

      vim /var/www/html/ksdir/ks7.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'
      # Root password
      rootpw --iscrypted $1$B2Ve3zbv$S2d5TSE.8Iwbo4o3BoRxM1
      # Use network installation
      url --url="http://192.168.136.230/centos/7"
      # System language
      lang en_US
      user --name=hellopeiyang --password=$6$vFs7gFIqwNrxjVEx$UwrqEc4BanhssQpLa./g/ySepGSRLNll65NvI/PSJuavDVQJvVXukrUmHPHDX7tVyWb4uXlyEXBTYmVD0KxLK/ --iscrypted
      # Firewall configuration
      firewall --disabled
      # System authorization information
      auth  --useshadow  --passalgo=sha512
      # Use text mode install
      text
      # Run the Setup Agent on first boot
      firstboot --enable
      # SELinux configuration
      selinux --disabled
      # System services
      services --disabled="chronyd"
      ignoredisk --only-use=sda
      # Network information
      network  --bootproto=dhcp --device=ens33 --onboot=on
      # Reboot after installation
      reboot
      # System timezone
      timezone Asia/Shanghai --nontp
      # System bootloader configuration
      bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
      # Clear the Master Boot Record
      zerombr
      # Partition clearing information
      clearpart --all
      # Disk partitioning information
      part /app --fstype="xfs" --ondisk=sda --size=51200
      part / --fstype="xfs" --ondisk=sda --size=51200
      part swap --fstype="swap" --ondisk=sda --size=2048
      part /boot --fstype="xfs" --ondisk=sda --size=1024
      
      %post
      systemctl enable autofs
      rm -rf /etc/yum.repos.d/*
      cat > /etc/yum.repos.d/base.repo <<eof
      [base]
      name=base
      baseurl=file:///misc/cd
      gpgcheck=0
      eof
      %end
      
      %packages
      @^graphical-server-environment
      @base
      @core
      @desktop-debugging
      @dial-up
      @fonts
      @gnome-desktop
      @guest-agents
      @guest-desktop-agents
      @hardware-monitoring
      @input-methods
      @internet-browser
      @multimedia
      @print-client
      @x11
      wodim
      autofs
      %end
      
      vim /var/www/html/ksdir/ks7-mini.cfg
      #platform=x86, AMD64, or Intel EM64T
      #version=DEVEL
      # Install OS instead of upgrade
      install
      # Keyboard layouts
      # old format: keyboard us
      # new format:
      keyboard --vckeymap=us --xlayouts='us'
      # Root password
      rootpw --iscrypted $1$C8HufR6L$JuAxRzQnv7dGxVw.xDNLc0
      # Use network installation
      url --url="http://192.168.136.230/centos/7"
      # System language
      lang en_US
      user --name=hellopeiyang --password=$6$hbPuvZcl0TRrYyFG$Vb0pNhuS/uBLMpq6nbDzruRtZr0K1qGmCey6.PL3dyKA.iUvZds4JRgQ8LpzTJ.6STbuFD2Tu5xgXt68KIjrc/ --iscrypted 
      --gecos="hellopeiyang"
      # Firewall configuration
      firewall --disabled
      # System authorization information
      auth  --useshadow  --passalgo=sha512
      # Use text mode install
      text
      # Run the Setup Agent on first boot
      firstboot --enable
      # SELinux configuration
      selinux --disabled
      
      # System services
      services --disabled="chronyd"
      ignoredisk --only-use=sda
      # Network information
      network  --bootproto=dhcp --device=ens33 --onboot=on
      # Reboot after installation
      reboot
      # System timezone
      timezone Asia/Shanghai --nontp
      # System bootloader configuration
      bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
      # Clear the Master Boot Record
      zerombr
      # Partition clearing information
      clearpart --all
      # Disk partitioning information
      part /app --fstype="xfs" --ondisk=sda --size=51200
      part / --fstype="xfs" --ondisk=sda --size=51200
      part swap --fstype="swap" --ondisk=sda --size=2048
      part /boot --fstype="xfs" --ondisk=sda --size=1024
      
      %post
      systemctl enable autofs
      rm -rf /etc/yum.repos.d/*
      cat > /etc/yum.repos.d/base.repo <<eof
      [base]
      name=base
      baseurl=file:///misc/cd
      gpgcheck=0
      eof
      %end
      
      %packages
      @^minimal
      @core
      autofs
      %end
      
      • kickstart文件的权限可能不合适,为文件的所有用户增加读权限
        chmod r /var/www/html/ksdir/{rs7.cfg,rs7-mini.cfg}

      新葡亰496net 12

    • (5)配置TFTP服务

      • 设置tftp服务开机自启动:systemctl enable tftp.socket
      • 开启tftp服务:systemctl start tftp.socket

      新葡亰496net 13

    • (6)配置DHCP服务

      • 复制dhcp配置模板文件
        cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

      • 编辑/etc/dhcp/dhcpd.conf文件,subnet字段修改后如下:

      subnet 192.168.136.0 netmask 255.255.255.0 {
              range 192.168.136.10    192.168.136.30;
              next-server 192.168.136.230;
              filename "pxelinux.0";
      }
      
      • 将dhcp服务设置为自启动:systemctl enable dhcpd
      • 启动dhcp服务:systemctl start dhcpd

      新葡亰496net 14

    • (7)准备PXE相关文件

      • 建立PXE启动配置文件存放目录:mkdir /var/lib/tftpboot/pxelinux.cfg
      • 复制启动相关文件:
        cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
      • 复制内核, initrd文件:
        cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
      • 复制启动项设置文件(必须重命名为default):
        cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

      新葡亰496net 15

      • 文件目录结构如下:

      新葡亰496net 16

    • (8)修改启动菜单文件

    vim /var/lib/tftpboot/pxelinux.cfg/default
    
    default menu.c32     //启动菜单风格
    timeout 600 
    
    menu title CentOS Linux 7 PXE Install
    
    label desktop     //桌面自动安装 
      menu label Install CentOS Linux 7 ^Desktop
      kernel vmlinuz
      append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7.cfg
    
    label mini     //最小化自动安装
      menu label Install CentOS Linux 7 M^ini
      kernel vmlinuz
      append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7-mini.cfg
    
    label manual     //手动安装
      menu label Install CentOS Linux 7 ^Manual
      kernel vmlinuz
      append initrd=initrd.img inst.repo=http://192.168.136.230/centos/7
    
    label local     //本地硬盘启动
      menu default
      menu label Boot from ^local drive
      localboot 0xffff
    menu end 
    
    • (9)从网卡启动主机,正确进入PXE安装的启动项

      新葡亰496net 17

    ARP错误代码

    PXE-E11:ARP timeout PXE ROM

              将重试四遍ARP请求,如果无法获取任何有效的ARP答复,将出现此信息,此信息通常源于一些网络和服务设置错误,通常的原因有:

                      1.在DHCP主服务器上设置了DHCP类标识符(Option 60)却在另一台服务器上安装了ProxyDHCP服务。

                      2.使用了不响应ARP请求的路由器

    三、 文件配置

    PXE工作原理

    cobbler环境检查

    执行

    cobbler check
    #
    

    会出现如下提示,配置缺少的东西

    1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
    2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    5 : enable and start rsyncd.service with systemctl
    6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    

    OK 根据提示一步一步来解决

     

    (四)PXE自动化安装CentOS 6 (CentOS 6作为FTP、DHCP、TFTP服务器)

    • (1)安装前准备:关闭SELinux和防火墙,DHCP服务器设置为静态IP

    • (2)安装相关软件包vsftpd, tftp-server, dhcp, syslinux

      • 安装软件包:yum install vsftpd tftp-server dhcp syslinux
    • (3)配置yum源服务

      • 建立centos6目录:mkdir -p /var/ftp/pub/centos/6
      • 配置yum源:mount /dev/sr0 /var/ftp/pub/centos/6
      • 设置vsftpd服务为自启动:chkconfig vsftpd on
      • 启动vsftpd服务:service vsftpd start

      新葡亰496net 18

    • (4)准备kickstart文件

      • 与自动安装CentOS7相似,准备桌面和最小化安装两份文件

      • ks6.cfg为桌面安装使用,ks7-mini为最小化安装使用
        mkdir /var/ftp/pub/ksdir 建立kickstart文件目录
        cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6.cfg 复制模板
        cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6-mini.cfg 复制模板

      • 两份kickstart文件示例如下:

      vim /var/ftp/pub/ksdir/ks6.cfg
      
      #platform=x86, AMD64, or Intel EM64T
      #version=DEVEL
      # Firewall configuration
      firewall --disabled
      # Install OS instead of upgrade
      install
      # Use network installation
      url --url="ftp://192.168.136.229/pub/centos/6"
      #repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
      # Root password
      rootpw --iscrypted $1$QmHn/VZt$YE/c30khjQ1i1hSHeMN8h/
      # System authorization information
      auth  --useshadow  --passalgo=sha512
      # Use text mode install
      text
      firstboot --disable
      # System keyboard
      keyboard us
      # System language
      lang en_US
      # SELinux configuration
      selinux --disabled
      # Installation logging level
      logging --level=info
      # Reboot after installation
      reboot
      # System timezone
      timezone  Asia/Shanghai
      # Network information
      network  --bootproto=dhcp --device=eth0 --onboot=on
      # System bootloader configuration
      bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
      # Clear the Master Boot Record
      zerombr
      # Partition clearing information
      clearpart --all
      # Disk partitioning information
      part /boot --fstype="ext4" --size=1000
      part / --fstype="ext4" --size=50000
      part swap --fstype="swap" --size=2000
      part /app --fstype="ext4" --size=20000
      
      %post
      rm -rf /etc/yum.repos.d/*
      cat > /etc/yum.repos.d/base.repo <<eof
      [base]
      name=base
      baseurl=file:///misc/cd
      gpgcheck=0
      eof
      %end
      
      %packages
      @base
      @basic-desktop
      @core
      @debugging
      @desktop-debugging
      @desktop-platform
      @directory-client
      @fonts
      @general-desktop
      @graphical-admin-tools
      @input-methods
      @internet-applications
      @internet-browser
      @java-platform
      @legacy-x
      @network-file-system-client
      @office-suite
      @print-client
      @remote-desktop-clients
      @server-platform
      @server-policy
      @workstation-policy
      @x11
      abrt-gui
      certmonger
      device-mapper-persistent-data
      genisoimage
      krb5-workstation
      libXmu
      mtools
      oddjob
      pam_krb5
      pax
      python-dmidecode
      samba-winbind
      sgpio
      wodim
      %end
      
      vim /var/ftp/pub/ksdir/ks6-mini.cfg
      
      #platform=x86, AMD64, or Intel EM64T
      #version=DEVEL
      # Firewall configuration
      firewall --disabled
      # Install OS instead of upgrade
      install
      # Use network installation
      url --url="ftp://192.168.136.229/pub/centos/6"
      # Root password
      rootpw --iscrypted $1$H3QsWt7L$uezUXA.OuYFONmwP027tS.
      # System authorization information
      auth  --useshadow  --passalgo=sha512
      # Use text mode install
      text
      firstboot --disable
      # System keyboard
      keyboard us
      # System language
      lang en_US
      # SELinux configuration
      selinux --disabled
      # Installation logging level
      logging --level=info
      # Reboot after installation
      reboot
      # System timezone
      timezone  Asia/Shanghai
      # Network information
      network  --bootproto=dhcp --device=eth0 --onboot=on
      # System bootloader configuration
      bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
      # Clear the Master Boot Record
      zerombr
      # Partition clearing information
      clearpart --all
      # Disk partitioning information
      part /boot --fstype="ext4" --size=1000
      part / --fstype="ext4" --size=50000
      part swap --fstype="swap" --size=2000
      part /app --fstype="ext4" --size=20000
      
      %post
      rm -rf /etc/yum.repos.d/*
      cat > /etc/yum.repos.d/base.repo <<eof
      [base]
      name=base
      baseurl=file:///misc/cd
      gpgcheck=0
      eof
      %end
      
      %packages
      @core
      @server-policy
      @workstation-policy
      autofs
      %end
      
      • kickstart文件的权限可能不合适,统一增加写权限
        chmod r /var/ftp/pub/ksdir/*

      新葡亰496net 19

    • (5)配置TFTP服务

      • 启动tftp服务:
      chkconfig tftp on     //tftp服务自启动
      service xinetd restart     //xinetd服务重启服务,为tftp服务监听端口
      

      新葡亰496net 20

    • (6)配置DHCP服务

      • 复制dhcp配置模板文件
        cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

      • 编辑/etc/dhcp/dhcpd.conf文件,subnet字段修改后入下:

    subnet 192.168.136.0 netmask 255.255.255.0 {
            range 192.168.136.10    192.168.136.30;
            next-server 192.168.136.229;
            filename "pxelinux.0";
    }
    
    • dhcpd服务自启动:chkconfig dhcpd on
    • 启动dhcp服务:service dhcpd start

    新葡亰496net 21

    • (7)准备PXE相关文件

      • 建立PXE启动配置文件存放目录:mkdir /var/lib/tftpboot/pxelinux.cfg
      • 复制启动相关文件:cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
      • 复制内核,initrd文件:
        cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
      • 复制启动项设置文件(必须重命名为default):
        cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

      新葡亰496net 22

      • 文件目录结构如下:

    新葡亰496net 23

    • (8)修改启动菜单文件
    vim /var/lib/tftpboot/pxelinux.cfg/default
    
    default menu.c32
    timeout 600 
    
    menu title CentOS Linux 6 PXE Install
    
    label desktop 
      menu label Install CentOS Linux 6 ^Desktop
      kernel vmlinuz
      append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6.cfg
    
    label mini
      menu label Install CentOS Linux 6 M^ini
      kernel vmlinuz
      append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6-mini.cfg
    
    label manual
      menu label Install CentOS Linux 6 ^Manual
      kernel vmlinuz
      append initrd=initrd.img inst.repo=ftp://192.168.136.229/pub/centos/6
    
    label local
      menu default
      menu label Boot from ^local drive
     localboot 0xfffmenu end 
    menu end 
    
    • (9)从网卡启动主机,正确进入PXE安装的启动项

    新葡亰496net 24

    BIOS和BIS错误代码

    PXE-E20:BIOS extended memory copy error.AH==nn

              如果BIOS扩展内存拷贝服务返回一个错误信息,此信息将出现,在成品BIOS中将不会遭遇此信息,代码"nn"为BIOS扩展内存拷贝服务(Int 15h,AH=87h)返回的错误代码。

    PXE-E21:BIS integrity check failed

              如果在扩展内存中的BIS映像损坏,则将显示此信息

    PXE-E22:BIS image/credential validation failed

              下载的映像和证书不匹配客户端关键字

    PXE-E23:BIS initialization failed BIS

              无法被初始化,没有更多可用数据

    PXE-E24:BIS shutdown failed BIS

              无法停止,没有更多可用数据

    PXE-E25:BIS get boot object authorization check flag failed--2

              PXE启动芯片出错代码表无法检测BIS已启用/已禁用

    PXE-E26:BIS free memory failed

              无法释放BIS分配内存

    PXE-E27:BIS get signature information failed

              请求BIS证书类型信息不能被确定。

    PXE-E28:BIS bad entry structure checksum SM BIOS

              表中的BIS入口结构无效。

    • kickstart 创建
      • 安装包 system-config-kickstart ,命令system-config-kickstart 打开软件,可以根据自己的需求直接创建kickstart文件。
      • 使用root家目录中的 anaconda.cfg文件修改
    • kickstart文件格式
      简单说明,详情请自行了解

    如下图

    步骤一

    1、第一个提示:在/etc/cobbler/settings 文件中server字段必须要有一个别人可访问的IP地址,来提供网络服务,那么我们是在centos7上搭建的所以是本机地址。

    ①编辑配置文件

    vim etc/cobbler/settings 
    #编辑配置文件
    

    新葡亰496net 25

    ②刷新配置文件并环境检查

    systemctl restart cobblerd
    #重启服务,重新读取修改的配置文件
    cobbler check
    #环境检查
    

    (五)PXE自动化安装CentOS 6 和CentOS 7(CentOS 7作为HTTP、DHCP、TFTP服务器)

    • (1)安装前准备:关闭SELinux和防火墙,DHCP服务器设置为静态IP

    • (2)安装相关软件包httpd, dhcp, tftp-server, syslinux
      yum install httpd dhcp tftp-server syslinux

    • (3)配置CentOS 6和CentOS 7的源

      • 将httpd服务设置为自启动:systemctl enable httpd
      • 打开httpd服务:systemctl start httpd

      新葡亰496net 26

    • 配置centos 7的yum源:
      mkdir -p /var/www/html/centos/6
      mount /dev/sr1 /var/www/html/centos/6
      mkdir -p /var/www/html/centos/7
      mount /dev/sr0 /var/www/html/centos/7

      新葡亰496net 27

    • (4)准备kickstart文件
      • 调整上面两个实验中的kickstart文件,分别为ks7.cfg, ks7-mini.cfg, ks6.cfg, ks6-mini.cfg。主要调整的是远程安装路径,即usl --url=字段后面的设置
      • 将kickstart文件复制到指定目录:
        mkdir -p /var/www/html/ksdir/{6,7}
        vim /var/www/html/ksdir/6/ks6.cfg
        vim /var/www/html/ksdir/6/ks6-mini.cfg
        vim /var/www/html/ksdir/7/ks7.cfg
        vim /var/www/html/ksdir/7/ks7-mini.cfg

    *(5)配置TFTP服务:

    • 设置tftp服务开机自启动:systemctl enable tftp.socket

    • 开启tftp服务:systemctl start tftp.socket

    • (6)配置DHCP服务

      • 复制dhcp配置模板文件
        cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
      • 编辑/etc/dhcp/dhcpd.conf文件,subnet字段修改后如下:
      subnet 192.168.136.0 netmask 255.255.255.0 {
              range 192.168.136.10    192.168.136.30;
              next-server 192.168.136.230;
              filename "pxelinux.0";
      }
      
      • 将dhcp服务设置为自启动:systemctl enable dhcpd
      • 启动dhcp服务:systemctl start dhcpd
    • (7)准备PXE相关文件

      • 建立PXE启动配置文件存放目录:mkdir /var/lib/tftpboot/pxelinux.cfg
      • 分别建立存放CentOS6和7的内核相关文件的目录:
        mkdir -p /var/lib/tftpboot/centos/6
        mkdir -p /var/lib/tftpboot/centos/7
      • 复制启动相关文件:cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
      • 分别复制CentOS 6和7的内核与initrd文件至不同的目录:
        cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/6
        cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/7
      • 复制启动项设置文件(必须重命名为default)
        cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
      • 文件目录结构如下:

      新葡亰496net 28

    • (8)修改启动菜单文件:
      注意CentOS6和CentOS7系统内核相关文件的不同路径需要相应修改配置文件的设置

    default menu.c32
    timeout 600
    
    menu title CentOS Linux PXE Install
    
    label desktop 7
      menu label Install CentOS Linux 7 ^Desktop
      kernel centos/7/vmlinuz
      append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7.cfg
    
    label desktop 6
      menu label Install CentOS Linux 6 D^esktop
      kernel centos/6/vmlinuz
      append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6.cfg
    
    label mini 7 
      menu label Install CentOS Linux 7 M^ini
      kernel centos/7/vmlinuz
      append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7-mini.cfg
    
    label mini 6
      menu label Install CentOS Linux 6 Mi^ni
      kernel centos/6/vmlinuz
      append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6-mini.cfg
    
    label manual 7
      menu label Install CentOS Linux 7 ^Manual
      kernel centos/7/vmlinuz
      append initrd=centos/7/initrd.img inst.repo=http://192.168.136.230/centos/7
    
    
    label manual 6
      menu label Install CentOS Linux 6 M^anual
      kernel centos/6/vmlinuz
      append initrd=centos/6/initrd.img inst.repo=http://192.168.136.230/centos/6
    
    label local
      menu default
      menu label Boot from ^local drive
      localboot 0xffff
    menu end
    
    • (9)从网卡启动主机,正确进入PXE安装的启动项

    新葡亰496net 29

    可以同时安装CentOS6 和CentOS 7

    新葡亰496net 30

    新葡亰496net 31

    TFTP/MTFTP错误代码

    PXE-E32:TFTP open timeout TFTP"Open"

              请求没有应答,验证TFTP服务是否正在运行。

    PXE-E35:TFTP read timeout

              未收到下一个TFTP数据包

    PXE-E36:Error received from TFTP server

              从TFTP服务器上收到了一个错误的TFTP数据包

    PXE-E38:TFTP cannot open connection

              当试图送出一个TFTP"Open"包时发生了一个硬件错

    PXE-E39:TFTP cannot read from connection

              当试图送出一个TFTP应答包时发生了一个硬件错

    PXE-E3A:TFTP too many packages.

              此信息意味着发生了下列两种情况中的一个:

                    1.你试图用TFTP下载一个比分配的缓冲区更大的文件

                    2.你作为一个从(Slave)客户端使用MTFTP开始下载一个文件,而当你变成一个主(Master)客户端时,此文件的大小发生了改变。

    PXE-E3B:TFTP error– File not found

              请求的文件在TFTP服务器上无法找到。

    PXE-E3C:TFTP error– Access violation

              已在TFTP服务器上找到了请求的文件,但TFTP服务没有足够的访问权限开启/读取文件。

    PXE-E3F:TFTP packet size is invalid

              收到的TFTP包大小超过1456bytes BOOTP/DHCP错误代码

    PXE-E51:No DHCP or proxyDHCP offers were received

              客户端没有收到任何有效的DHCP、BOOTP或proxyDHCP应答。

    PXE-E52:proxyDHCP offers were received.No DHCP offers were received

              客户端没有收到任何有效的DHCP或BOOTP应答,但客户端收到了至少一个有效的proxyDHCP应答。

    PXE-E53:No boot filename received

              客户端收到了至少一个有效的DHCP/BOOTP应答,但没有启动文件名可下载。

    PXE-E55:proxyDHCP service did not reply to request on port 4011

              客户端发出一个proxyDHCP请求到DHCP服务器的4011端口并没有收到回复。

    新葡亰496net 32

    步骤二

    #环境检查后发现少了一项,那么下面接着还是从第一项开始操作
    1 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    2 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    3 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    4 : enable and start rsyncd.service with systemctl
    5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    6 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    

    如上第一条:'next_server' 地址不应该是127.0.0.1

    所以修改它的地址,这个地址也就是你tftp服务器所在的主机地址,我们把服务都安装在一台主机上了,所以和上面地址一样

    ①编辑配置文件

    vim etc/cobbler/settings 
    #编辑配置文件
    

    新葡亰496net 33

    ②重复步骤一中的②命令来重读配置文件与环境检查

    四、cobbler

    UNDI错误代码

    PXE-E60:Invalid UNDI API function number

              一个被基本代码所使用的API在UNDI ROM中无法执行。

    PXE-E61:Media test failed,check cable

              网线没有插或没有连接,可能是网线坏、网卡坏或连接问题。

    PXE-E63:Error while initializing the NIC

              初始化网卡硬件时出现错误,建议换网卡。

    PXE-E64:Error while initializing the PHY

              试图初始化PHY硬件时出现错误,建议换网卡。

    PXE-E65:Error while reading the configuration data

              读取网卡设置数据时出现错误,建议换网卡。

    PXE-E66:Error while reading the initialization data

              读取网卡初始化数据时出现错误,建议换网卡。

    PXE-E67:Invalid MAC address

              存储在这块网卡中的MAC地址无效,建议换网卡

    PXE-E68:Invalid EEPROM checksum

              EEPROM校验和错误,EEPROM内容已损坏,建议换网卡

    PXE-E69:Error while setting interrupt

              无法配置硬件中断,建议换网卡。

     #version=DEVEL
     auth --enableshadow --passalgo=sha512 #密码加密方式
    url --url=http://192.168.163.20/centos/7 #使用什么方式去引导启动
    install #安装
    text #命令模式安装  可以选择
    reboot #安装完,自动重启
    selinux --disabled #关闭SElinux
    firewall --disabled #关闭防火墙
    
    firstboot --enable #初始化开启
    ignoredisk --only-use=sda #选择磁盘  sda
    
    keyboard --vckeymap=us --xlayouts='us' #语言和键盘选择
    
    lang en_US.UTF-8 #文字选择
    
    network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --activ
    ate #网卡设置
    network  --hostname=localhost.localdomain #主机名设置
    
    rootpw --iscrypted  xxxxxxx #设置密码  为加密文本
    
    services --disabled="chronyd"
    
    timezone Asia/Shanghai --isUtc --nontp  #时区选择
    
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda #分区引导
    zerombr  #清除分区
    clearpart --all --initlabel #清空磁盘
    
    #磁盘分区
    part pv.198 --fstype="lvmpv" --ondisk=sda --size=10240
    part /boot --fstype="xfs" --ondisk=sda --size=1024
    volgroup centos --pesize=4096 pv.198
    logvol /  --fstype="xfs" --size=5120 --name=root --vgname=centos
    logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos
    logvol /app  --fstype="xfs" --size=2048 --name=app --vgname=centos
    eula --agreed #同意选项  centos7中必备
    
    %packages #安装的包
    @^minimal
    @core
    kexec-tools
    vim-enhanced
    %end
    
    %post #安装后运行脚本
    rm -f /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo  <<EOF
    [base]
    name=basemage
    baseurl=http://192.168.163.141/centos/6
    gpgcheck=0
    EOF
    useradd arno
    echo 123456 |passwd --stdin arno &> /dev/null
    
    %end
    

    原理介绍

    步骤三

    #环境检查后发现又少了一条,下面接这来...
    1 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    2 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    3 : enable and start rsyncd.service with systemctl
    4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    5 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    6 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    

    如上第一条:提示更改/etc/xinetd.d/tftp配置文件中'disable'状态改为‘no’说白了也就是开启tftp服务

    因为我们用的是centos7不需要xinetd.d了,前面已经开启了tftp服务,这步忽略,看下一个提示

    第二条:在/var/lib/cobbler/loaders目录下少了一些必要的文件,用'cobbler get-loaders' 命令来获取,这时候需要主机联网下载

     

    我们先来看看这个目录

    新葡亰496net 34

    ①生成必要文件

    cobbler get-loaders
    #
    #
    

    新葡亰496net 35

    我们知道出现的这些文件是要放在/var/lib/tftpboot/这里的,我们看下这个目录的信息

    新葡亰496net 36

    用如上环境检查中给出的提示进行同步

    cobbler sync
    #数据同步
    

     

    再次查看下/var/lib/tftpboot目录结构

    新葡亰496net 37

     

    ②重复步骤一中的②命令

    #又少了,继续
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    4 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    

    (一)cobbler简介

    • 功能:快速网络安装Linux系统
    • PXE的二次封装,将多种安装参数封装到一个菜单
    • 集成了PXE、DHCP、rsync、http、DNS、Kickstart、IPMI(电源管理)多种服务
    • 由Python编写
    • 提供CLI和Web管理两种方式

    Bootstrap和Discovery错误代码

    PXE-E74:Bad or missing PXE menu and/or prompt information

              已检测到PXE标识但启动菜单和/或启动命令提示符标识未发现/不存在

    PXE-E76:Bad or missing multicast discovery address

              多播创建已启动但多播创建地址标识不符

    PXE-E77:Bad or missing discovery server list

              多播和广播创建(Discovery)都被禁用,或使用服务器列表启用,但服务器列表标识未发现/不存在

    PXE-E78:Could not locate boot server

              有效的引导服务器应答未被客户端收到

    PXE-E79:NBP is too big to fit in free base memory

              NBP太大,超过客户端基本内存容量

    PXE-E7A:Client could not locate asecure server

              当客户端未从启动服务器收到任何安全信息并且客户端上的BIS已被启用,将显示此信息。

    PXE-E7B:Missing MTFTP server IP address

              当ROM未收到PXE创建标识或proxyDHCP回应和DHCP SIADDR区域被设置为0.0.0.0,将显示此信息。

    • httpd哪些文件
      新葡亰496net 38

    .Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client

    步骤四

    第一条:开启rsyncd.service 服务,我们没有用这个服务,忽略

    第二条:是针对debian发行版的系统配置,忽略

    第三条:修改kickstart文件的默认口令

     

    ①编辑配置文件

    vim /etc/cobbler/settings
    #
    

    新葡亰496net 39

    ②重复步骤一中的②命令

    #少了一条
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
    

     

    如上第一、二上面说了忽略,看第三条,意思说配置电源项,和硬件有关,忽略

     

    (二)cobbler工作流程

    • client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
    • DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
    • client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
    • cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
    • client裸机通过上面告知的TFTP server地址通信,下载引导文件
    • client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image
    • cobbler server发送请求的kickstart和os iamge
    • client裸机加载kickstart文件
    • client裸机接收os image,安装该os image

    未分类错误代码

    PXE-EA0:Network boot canceled by keystroke

              用户在DHCP/创建/TFTP过程中按了"Esc"或"Ctrl C"键

    .Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0

    步骤五

    配置dhcp

    ①编辑配置文件

    vim /etc/cobbler/settings
    #
    

    新葡亰496net 40

    ② 改cobbler提供的dhcp配置文件模板

    vim /etc/cobbler/dhcp.template
    #
    

    新葡亰496net 41

    我们先来看下dhcp配置文件

    新葡亰496net 42

    还是空的没有配置信息

     

    ②同步

    systemctl restart cobblerd
    #重启服务
    cobbler sync
    #数据同步
    

    再来看dhcp配置文件

    新葡亰496net 43

    有信息了

     

    (三)cobbler相关术语

    • 发行版:
      表示一个操作系统版本,它承载了内核和initrd的信息,以及内核参数等其他数据
    • 配置文件:
      包含一个发行版、一个kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据
    • 系统:
      表示要配置的主机,它包含一个配置文件或一个镜像,还包含IP和MAC地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息
    • 存储库:
      保存一个yum或rsync存储库的镜像信息
    • 镜像:
      可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和initrd的对象)

    基础代码/UNDI Loader错误代码

    PXE-EC1:BaseCode ROM ID structure was not found UNDI

              引导模块不能发现基础代码ROM ID结构。如果系统中有基础代码ROM映像,它可能已经损坏了

    PXE-EC3:BaseCode ROM ID structure is invalid

              基础代码ROM ID结构有问题,基础代码ROM映像已经损坏了

    PXE-EC4:UNDI ROM ID structure was not found

              基础代码载入模块不能在UNDI ROM ID结构中定位

    PXE-EC5:UNDI ROM ID structure is invalid UNDI

              ROM映像已经损坏了

    PXE-EC6:UNDI driver image is invalid UNDI

              ROM映像已经损坏了

    PXE-EC8:!PXE structure was not found in UNDI driver code segment

              UNDI ROM映像已经损坏了,或者未能被BIOS载入,此错误信息通常系如下一个或三个原因所致:

                      1.当即将调用一个LOM映像的时间点,网卡映像正在被编程进BIOS

                      2.在PXE可选ROM开始启动之前,PXE可选ROM载入自检内存管理器(POST Memory Manager,$PMM)分配的内存期间被损坏或删除。

                      3.在载入ROM结构期间UNDI_Loader结构未被正确载入

    PXE-EC9:PXENV structure was not found in UNDI driver code segment

              UNDI ROM映像可能被损坏了,或未被BIOS载入,此错误信息通常系如下三个原因所致:

                      1.当即将调用一个LOM映像的时间点,网卡映像正在被编程进BIOS

                      2.在PXE可选ROM开始启动之前,PXE可选ROM载入自检内存管理器(POST Memory Manager,$PMM)分配的内存期间被损坏或删除。

                      3.在载入ROM结构期间UNDI_Loader结构未被正确载入。

    • 配置tftp中的文件

      • tftp为轻量级共享文件方式,网卡自带集成tftp的客户端
      • 共享目录为:/var/lib/tftpboot
      • 安装syslinux包后,我们要用到/usr/share/syslinux目录下两个的文件
      • 文件全部完成后,注意权限需要 644

    .Client执行接收到的pxelinux.0文件

    步骤六

    ①开启dhcp服务

    systemctl start dhcpd
    #开启服务
    

    ②建立cobbler yum源-导入系统

    新葡亰496net 44

    这里我们也把centos6导入

    新葡亰496net 45

    备注:它是放在了/var/www/目录下,同时生成了一个和系统同名的kickstart文件,

    自带的kickstart文件是满足不了我们的需求的,所以我们使用自己的kickstart文件,之前生成过,直接拿来用。

    (四)cobbler配置文件

    • 配置文件目录:/etc/cobbler
    • /etc/cobbler/settings:cobbler 主配置文件
    • 新葡亰496net:运行自动化之系统安装,无人值守介绍与机动安插批量安装。/etc/cobbler/iso/:iso模板配置文件
    • /etc/cobbler/pxe:pxe模板文件
    • /etc/cobbler/power:电源配置文件
    • /etc/cobbler/user.conf:web服务授权配置文件
    • /etc/cobbler/users.digest:web访问的用户名密码配置文件
    • /etc/cobbler/dhcp.template:dhcp服务器的配置模板
    • /etc/cobbler/dnsmasq.template:dns服务器的配置模板
    • /etc/cobbler/tftpd.template:tftp服务的配置模板
    • /etc/cobbler/modules.conf:模块的配置文件

    安装

    .Client向TFTP Server发送针对本机的配置信息文件(在TFTP服务的pxelinux.cfg目录下,这是系统菜单文件,格式和isolinux.cfg格式一样,功能也是类似),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

    步骤七

    ①编辑ks.cfg文件(前几篇提到过怎么创建改文件)

    新葡亰496net 46

    ②把ks.cfg文件放在/var/lib/cobbler/kickstarts/下

    新葡亰496net 47

    ③创建启动菜单

    cobbler profile add --name=Centos-7.5-x86_64-Auto --distro=Centos-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cfg
    #
    cobbler profile add --name=Centos-6.9-x86_64-Auto --distro=Centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg
    #
    

    新葡亰496net 48

    ④查看启动文件default是不是有了我们创建的自定义启动项

    cat /var/lib/tftpboot/pxelinux.cfg/default
    #查看启动菜单
    

    新葡亰496net 49

    备注:也可删除不需要的启动菜单

    cobbler profile remove --name=Centos-6.9-x86_64
    #
    

    OK现在就可以用准备好的另一台主机测试了

    备注:确保 http tftp dhcp 服务已开启 防火墙以关闭 selinux以关闭

    成功界面

    新葡亰496net 50

    (五)cobbler目录

    • 数据目录
      /var/lib/cobbler/config/:用于存放distros, system, profiles 等信息配置文件
      /var/lib/cobbler/triggers/:用于存放用户定义的cobbler命令
      /var/lib/cobbler/kickstart/:默认存放kickstart文件
      /var/lib/cobbler/loaders/:存放各种引导程序
    • 镜像目录
      /var/www/cobbler/ks_mirror/:导入的发行版系统的所有数据
      /var/www/cobbler:导入发行版的kernel和initrd镜像用于远程网络启动
      /var/www/cobbler/repo_mirror/:yum 仓库存储目录
    • 日志目录
      /var/log/cobbler/installing:客户端安装日志
      /var/log/cobbler/cobbler.log:cobbler日志

    环境准备

    • 准备两台主机,如CentOS6和centos7
    • centos7当作server服务器
    • 关闭selinux
    • 关闭防火墙
    cd /var/lib/tftpboot
    cp  /usr/share/syslinux/{pxelinux.0,menu.c32} . 
        #将两个文件拷贝过来
            #menu.c32是简单的启动菜单文件 ,启动页面比较简陋
    mkdir {6,7}
        #创建系统区分目录,将两个系统的启动文件拷入  vmlinuz   initrd.img
    cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img}  .
        #拷贝进tfpboot目录
    mkdir pxelinux.cfg
        #创建目录,放置菜单的布局配置文件
    cp /var/www/html/centos/6/isolinux/isolinux.cfg pxelinux.cfg/default 
        #拷贝进isolinux.cfg目录下,并改名为default 
    

    .Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client

    cobbler-web管理

     

    1、首先安装包

     

    yum install -y cobbler-web
    #
    

     

    2、访问

     

    https://192.168.43.7/cobbler_web

    默认账号:cobbler

    默认密码:cobbler

    新葡亰496net 51

    (六)cobbler命令

    • cobbler check:核对当前设置是否有问题
    • cobbler list:列出所有的cobbler元素
    • cobbler report:列出元素的详细信息
    • cobbler sync:同步配置到数据目录,更改配置最好都要执行下
    • cobbler reposync:同步yum仓库
    • cobbler distro:查看导入的发行版系统信息
    • cobbler system:查看添加的系统信息
    • cobbler profile:查看配置信息

    安装

    cobbler包光盘里是没有的,要配置epel源,这里就说怎么配置epel源了,在yum.repos.d/目录下照葫芦画瓢就可,配置好后执行如下命令安装

    yum install –y cobbler 

    安装成功后,我们发现它还安装了其他的服务

    新葡亰496net 52

    备注:我们搭建cobbler-系统部署需要用到httpd、tftp-server、dhcp服务,从图上可以看出它没有安装dhcp服务,所以我们要安装下dhcp服务

    yum install –y dhcp

    • tftp-server哪些文件?
      新葡亰496net 53

    • 镜像里的 isolinux.cfg 文件格式

    .Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统

    附带过程中出现的问题

    (七)cobbler重要参数

    • /etc/cobbler/settings中重要的参数设置
    • default_password_crypted:"$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
    • manage_dhcp:1
    • manage_tftpd:1
    • pxe_just_once:1
    • next_server:< tftp服务器的IP 地址>
    • server:<cobbler服务器的IP 地址>

    开启服务

    http服务

    systemctl start httpd
    #开启服务
    systemctl enable httpd
    #设置开机自启动

    tftp-server服务

    systemctl start tftp
    #开启服务
    systemctl enable tftp
    #开机自启动

    cobbler服务

    systemctl start cobblerd
    #开启服务
    systemctl enable cobblerd
    #开机自启动

    .Client启动Linux内核

    问题一:出现如下提示:**

    新葡亰496net 54

    解决方案:http:改为https:访问

     

    (八)cobbler相关管理

    • 下载启动菜单:cobbler get-loaders
    • 管理distro
      cobbler import --name=centos-6.9-x86_64 --path=/media/cdrom
    • 管理profile
      cobbler profile add --name=centos-6.9-x86_64-basic --distro=centos-6.9-x86_64 --kickstart=/tmp/centos-6.9-x86_64.cfg
    • 查看profiles
      cobbler profile list
    • 查看引导文件
      cat /var/lib/tftpboot/pxelinux.cfg/default
    • 同步cobbler配置
      cobbler sync

    cobbler环境检查

    执行

    cobbler check
    #

    会出现如下提示,配置缺少的东西

    1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
    2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    3 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    5 : enable and start rsyncd.service with systemctl
    6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

    OK 根据提示一步一步来解决

    步骤一

    1、第一个提示:在/etc/cobbler/settings 文件中server字段必须要有一个别人可访问的IP地址,来提供网络服务,那么我们是在centos7上搭建的所以是本机地址。

    ①编辑配置文件

    vim etc/cobbler/settings
    #编辑配置文件

    新葡亰496net 55

    ②刷新配置文件并环境检查

    systemctl restart cobblerd
    #重启服务,重新读取修改的配置文件
    cobbler check
    #环境检查

    步骤二

    #环境检查后发现少了一项,那么下面接着还是从第一项开始操作
    1 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    2 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    3 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    4 : enable and start rsyncd.service with systemctl
    5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    6 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

    如上第一条:'next_server' 地址不应该是127.0.0.1

    所以修改它的地址,这个地址也就是你tftp服务器所在的主机地址,我们把服务都安装在一台主机上了,所以和上面地址一样

    ①编辑配置文件

    vim etc/cobbler/settings
    #编辑配置文件

    新葡亰496net 56

    ②重复步骤一中的②命令来重读配置文件与环境检查

    步骤三

    #环境检查后发现又少了一条,下面接这来...
    1 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    2 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
    3 : enable and start rsyncd.service with systemctl
    新葡亰496net,4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    5 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    6 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

    如上第一条:提示更改/etc/xinetd.d/tftp配置文件中'disable'状态改为‘no’说白了也就是开启tftp服务

    因为我们用的是centos7不需要xinetd.d了,前面已经开启了tftp服务,这步忽略,看下一个提示

    第二条:在/var/lib/cobbler/loaders目录下少了一些必要的文件,用'cobbler get-loaders' 命令来获取,这时候需要主机联网下载

    cobbler get-loaders

    我们先来看看这个目录

    新葡亰496net 57

    ①生成必要文件

    新葡亰496net 58

    我们知道出现的这些文件是要放在/var/lib/tftpboot/这里的,我们看下这个目录的信息

    新葡亰496net 59

    用如上环境检查中给出的提示进行同步

    cobbler sync
    #数据同步 

    再次查看下/var/lib/tftpboot目录结构

    新葡亰496net 60

    ②重复步骤一中的②命令

    #又少了,继续
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
    4 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

    步骤四

    第一条:开启rsyncd.service 服务,我们没有用这个服务,忽略

    第二条:是针对debian发行版的系统配置,忽略

    第三条:修改kickstart文件的默认口令

    ①编辑配置文件

    vim /etc/cobbler/settings
    #

    新葡亰496net 61

    ②重复步骤一中的②命令

    #少了一条
    1 : enable and start rsyncd.service with systemctl
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

    如上第一、二上面说了忽略,看第三条,意思说配置电源项,和硬件有关,忽略

    步骤五

    配置dhcp

    ①编辑配置文件

    vim /etc/cobbler/settings
    #

    新葡亰496net 62

    ② 改cobbler提供的dhcp配置文件模板

    vim /etc/cobbler/dhcp.template
    #

    新葡亰496net 63

    我们先来看下dhcp配置文件

    新葡亰496net 64

    还是空的没有配置信息

    ②同步

    systemctl restart cobblerd
    #重启服务
    cobbler sync
    #数据同步

    再来看dhcp配置文件

    新葡亰496net 65

    有信息了

    步骤六

    ①开启dhcp服务

    systemctl start dhcpd
    #开启服务

    ②建立cobbler yum源-导入系统

    新葡亰496net 66

    这里我们也把centos6导入

    新葡亰496net 67

    备注:它是放在了/var/www/目录下,同时生成了一个和系统同名的kickstart文件,

    自带的kickstart文件是满足不了我们的需求的,所以我们使用自己的kickstart文件,之前生成过,直接拿来用。

    步骤七

    ①编辑ks.cfg文件(前几篇提到过怎么创建改文件)

    新葡亰496net 68

    ②把ks.cfg文件放在/var/lib/cobbler/kickstarts/下

    新葡亰496net 69

    ③创建启动菜单

    cobbler profile add --name=Centos-7.5-x86_64-Auto --distro=Centos-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cfg
    #
    cobbler profile add --name=Centos-6.9-x86_64-Auto --distro=Centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg
    #

    新葡亰496net 70

    ④查看启动文件default是不是有了我们创建的自定义启动项

    cat /var/lib/tftpboot/pxelinux.cfg/default
    #查看启动菜单

    新葡亰496net 71

    备注:也可删除不需要的启动菜单

    cobbler profile remove --name=Centos-6.9-x86_64

    OK现在就可以用准备好的另一台主机测试了

    备注:确保 http tftp dhcp 服务已开启 防火墙以关闭 selinux以关闭

    成功界面

    新葡亰496net 72

    cobbler-web管理

    1、首先安装包

    yum install -y cobbler-web
    #

    2、访问

    默认账号:cobbler

    默认密码:cobbler

    新葡亰496net 73

    default menu.c32 #菜单样式文件
    timeout 60  #倒计时6s后自动选择默认选项
    
    menu title  PXE CentOS 7 #菜单标题
    
    label desktop
      menu label ^Install MIni CentOS 7 # 选项  ; '^'表示首字母快捷键选择 
      kernel 7/vmlinuz  #内核文件路径
      append initrd=7/initrd.img ks=http://192.168.163.20/ksdir/ks7-mini.cfg
    #initrd.img文件路径,和kickstart文件路径
    
    label mini
      menu label Install ^mini CentOS 6
      menu default  #默认选项;进入菜单,光标自动选择该选项
      kernel 6/vmlinuz
      append initrd=6/initrd.img ks=http://192.168.163.20/ksdir/ks6-mini.cfg
    
    label centos6mini
      menu label Install Desktop ^CentOS 6
      kernel 6/vmlinuz
      ppend initrd=6/initrd.img ks=http://192.168.163.20/ksdir/ks6-desktop.cf
    g
    
    label local  
    #磁盘启动 ;不安装系统时,该项设置成默认选项,不然重复安装系统
      menu label Boot from ^local drive
      localboot 0xffff
    menu end
    

    .Client下载安装源文件,读取自动化安装脚本

    问题二:安装新系统的时候,出现TFTP open timeout!

    新葡亰496net 74

    解决方案:关闭防火墙

    #systemctl stop firewalld.service

    #iptables –L

     

    (九)cobbler实现步骤

    • 安装包,并设置服务
    • 检查配置
    • 根据上面提示修改配置
    • 下载启动相关文件菜单
    • 配置DHCP服务
    • 分别导入centos的安装源,并查看
    • 准备kickstart文件并导入cobbler
    • 测试

    附带过程中出现的问题

    问题一:出现如下提示:**

    新葡亰496net 75

    解决方案:http:改为https:访问 

    问题二:安装新系统的时候,出现TFTP open timeout!

    新葡亰496net 76

    解决方案:关闭防火墙

    #systemctl stop firewalld.service

    #iptables –L 

    问题三:check环境检查的时在cobbler 候出现如下

    新葡亰496net 77

    解决方案:这是ip分配错误的提示,检查配置文件IP分配段

    每个人遇到的问题可能不一样,查看日志检查,tailf -10 /var/log/messages

    Linux公社的RSS地址:

    本文永久更新链接地址

    新葡亰496net 78

    四、 打开需要安装系统的电脑,在一个局域网内,且没有其他DHCP服务器的环境;选择网卡启动------------------>成功
    新葡亰496net 79

    这里用PXE自动化安装CentOS7为例说明

    问题三:check环境检查的时在cobbler 候出现如下

    新葡亰496net 80

    解决方案:这是ip分配错误的提示,检查配置文件IP分配段

     

    每个人遇到的问题可能不一样,查看日志检查,tailf -10 /var/log/messages

     

    (十)cobbler实现Web管理

    • cobbler-web
      提供cobbler的基于web管理界面,epel源
      yum install cobbler-web
    • 认证方式
      • 定义认证方法:/etc/cobbler/modules.conf
      • 使用authn_pam模块认证cobbler_web用户
        • [authentication]块中指定module = authn_pam
        • 创建cobbler用户:useradd cobbler
        • 修改文件/etc/cobbler/users.conf
          [admins]
          admin = "cobbler"
      • 使用authn_configfile模块认证cobbler_web用户
        • [authentication]块中module=authn_configfile
        • 创建其认证文件/etc/cobbler/users.digest,并添加所需的用户
          htdigest -c /etc/cobbler/users.digest Cobbler admin
        • 注意:添加第一个用户时,使用“-c”选项,后续添加其他用户时不要再使用,cobbler_web的realm只能为Cobbler
    • Web访问cobbler
      • 重启cobblerd服务
      • 新葡亰496net:运行自动化之系统安装,无人值守介绍与机动安插批量安装。通过http://cobblerserver/cobbler_web访问即可

    .安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP

    (十一)cobbler实现自主选择安装CentOS6或7系统

    .安装软件包

    (1)安装cobbler并配置相关服务

    yum install cobbler
    systemctl enable cobblerd
    systemctl start cobblerd
    systemctl enable tftp
    systemctl start tftp
    systemctl enable httpd
    systemctl start httpd

    环境准备,搭建以下三个服务

    (2)执行cobbler check命令,根据提示修改设置
    • 执行cobbler check命令,反馈类似结果

    新葡亰496net 81

    • 根据问题,修改/etc/cobbler/settings文件,修改后如下:
    vim /etc/cobbler/settings
    default_password_crypted: "$1$3AUU7.oO$g7Dkuzmu1uFmcp4HYRLw9."      //加密密码
    next_server: 192.168.136.230     //tftp服务器IP
    manage_dhcp: 1     //管理dhcp服务
    server: 192.168.136.230     //cobbler服务器IP
    
    vim /etc/cobbler/dhcp.template     //修改dhcp模板文件
    subnet 192.168.136.0 netmask 255.255.255.0 {
       range dynamic-bootp        192.168.136.10 192.168.136.30;
    

    注明:密码可以用openssl passwd -1来生成

    • 重启cobbler服务并同步配置到数据目录,同步成功结果如下
      systemctl restart cobblerd
      cobbler sync

    新葡亰496net 82

    httpd/nfs/ftp(三选一,用于搭建yum源)tftp-server dhcp

    (3)准备启动文件和菜单风格文件
    • 具备联网条件时,执行cobbler get-loaders
    • 不具备联网条件时,操作类似PXE的操作
      cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders

    文件准备

    (4)导入yum源
    • 导入centos 7.3的yum源,/mnt/centos6为centos6的光盘挂载点
      cobbler import --path=/mnt/centos7 --name=centos7.3 --arch=x86_64

    新葡亰496net 83

    • 导入centos 6.9的yum源,/mnt/centos6为centos6的光盘挂载点
      cobbler import --path=/mnt/centos6 --name=centos6.9 --arch=x86_64

    新葡亰496net 84

    • 查看导入的发行版及其配置信息,确认导入成功
      cobbler distro list 查看导入的发行版信息
      cobbler profile list 查看配置信息

    新葡亰496net 85

    通过以下两个工具生成相关文件

    (5)生成kickstart文件
    • 复制CentOS 6的kickstart文件
      cp /var/www/html/ksdir/6/ks6.cfg /var/lib/cobbler/kickstarts/

    • 复制CentOS 7的kickstart文件
      cp /var/www/html/ksdir/7/ks7.cfg /var/lib/cobbler/kickstarts/

    • 删除原先导入CentOS 6的yum源时的配置信息
      cobbler profile remove --name=centos6.9-x86_64

    • 删除原先导入CentOS 7的yum源时的配置信息
      cobbler profile remove --name=centos7.3-x86_64

    • 重新生成CentOS 6的kickstart配置
      cobbler profile add --name=centos6.9_desktop --distro=centos6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg

    • 重新生成CentOS 7的kickstart配置
      cobbler profile add --name=centos7.3_desktop --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg

    • 同步设置到数据目录
      cobbler sync

    syslinux  : 生成menu.c32 和 pxelinux.0

    (6)从网卡启动主机,正确进入cobbler安装的启动项

    新葡亰496net 86

    system-config-kickstart:生成 kickstart文件

    .配置文件共享服务:

    systemctl ``enable httpd

    systemctl start httpd

    mkdir /var/www/html  /centos/7

    mount   /dev/sr0/  var``/www/html/centos/7

     

    .准备kickstart文件

    /var/www/html/ks/centos7``.cfg``#注意:权限,其他人要分配可读权限

    安装路径,这次是用http服务器作为yum源,ks文件中url --url=http:/192.168.32.72/os/7

    开机时加载网卡,onboot选项

    .配置tftp服务

    systemctl ``enable tftp.socket(centos6:chkconfig tftp on)

    systemctl start tftp.socket(centos6:service xinetd restart)

     

    .配置DHCP服务

    可以直接拷贝配置文件进行修改,主要该要使用的网段range和指定tftp服务器next-server和tftp服务器上的默认的文件filename

    systemctl ``enable dhcpd

    vim ``/etc/dhcp/dhcpd``.conf

    option domain-name ``"sunny.com"``;

    option domain-name-servers 192.168.32.61;

    default-lease-``time 86400;

    max-lease-``time 86400;

    subnet 192.168.32.0 netmask 255.255.255.0 {

    range 192.168.32.100 192.168.32.200;

    option routers 192.168.32.1;

    next-server 192.168.32.72;

    filename ``"pxelinux.0"``;

    }

     

     

    systemctl start dhcpd

    配置tftp服务

    .准备相关文件

    tftp路径是

    #pxelinux.0等文件来自syslinux这个软件包,要先进行安装

    yum ``install syslinux

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

    #pxelinux.cfg把必要的文件复制到这个路径下

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

    #pxelinux.0启动菜单,启动操作系统的文件

    #menu.c32这个是菜单风格

    cp``/misc/cd/isolinux/``{vmlinuz,initrd.img}``/var/lib/tftpboot/

    #计算机启动所需的内核文件和虚拟根文件

    cp``/misc/cd/isolinux/isolinux``.cfg``/var/lib/tftpboot/pxelinux``.cfg``/default

    #isolinux.cfg菜单文件,需要改名为default

    当前文件列表如下:

    ``/var/lib/tftpboot/

    ├──initrd.img

    ├──menu.c32

    ├──pxelinux.0

    ├──pxelinux.cfg

    │└──default

    └──vmlinuz

     

    .准备启动菜单

    修改启动菜单

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

    default menu.c32

    #这是启动菜单的风格,需要根据实际情况进行修改,原来是vesamenu.c32

    timeout 600

    menu title PXE INSTALL MENU

    label autoa

    menu label Auto Install CentOS 7

    kernel vmlinuz

    append initrd=initrd.img  ks=http:``//192``.168.32.72``/ks/centos7``.cfg

    #这里的应答文件是基于网络的,根据实际情况修改

    label manual

    menu label Manual Install CentOS 7

    kernel vmlinuz

    append initrd=initrd.img  inst.repo=http:``//192``.168.32.72``/centos/7

    #手动安装应答文件不写,但是手动安装要找yum源安装,所以要指定yum源路径

    label ``local

    menu default

    #如果不选择,默认就是menu  default所在的行

    menu label ^Boot from ``local drive

    localboot 0xffff

    menu end

    到这里,pxe安装centos7的环境已经准备完成了,这样子,当有机器需要安装系统的时候,开机,选择网络启动就会按照PXE的设置进行安装

    3 基于cobbler自动化安装系统

     

    cobbler 介绍

    cobbler快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu和SUSE,也可以支持网络安装windows,是PXE的二次封装,将多种安装参数封装到一个菜单,基于Python编写,提供了CLI和Web的管理形式 

     

    cobbler 工作流程

     以下图形是cobbler和PXE工作的对比图形

    新葡亰496net 87

    cobbler 工作流程解释如下

    .client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP

    .DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址

    .client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求

    .cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port

    .client裸机通过上面告知的TFTP server地址通信,下载引导文件

    .client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image

    .cobbler server发送请求的kickstart和os iamge

    .client裸机加载kickstart文件

    .client裸机接收os image,安装该os image

    cobbler 实现步骤

    .安装包,并设置服务

    .检查配置

    .根据上面提示修改配置

    .下载启动相关文件菜单

    .配置DHCP服务

    .分别导入centos的安装源,并查看

    .准备kickstart文件并导入cobbler

    .配置web管理界面

    .测试

    cobbler 相关术语

    .发行版:表示一个操作系统版本,它承载了内核和initrd 的信息,以及内核参数等其他数据

    .配置文件:包含一个发行版、一个kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据

    .系统:表示要配置的主机,它包含一个配置文件或一个镜像,还包含IP 和MAC 地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息

    .存储库:保存一个yum 或rsync 存储库的镜像信息

    .镜像:可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和initrd 的对象)

    cobbler 各种配置目录说明

    cobbler 依赖epel 源安装

    yum -y install cobbler

    一般是会自动安装相关的包的,如http,dns等,安装完成后,如果还有没有安装的服务,要手动安装,如dhcp。

    yum -y install dhcp

    .配置文件目录/etc/cobbler

    /etc/cobbler/settings : cobbler 主配置文件

    /etc/cobbler/iso/``: iso模板配置文件

    /etc/cobbler/pxe``: pxe模板文件

    /etc/cobbler/power``: 电源配置文件

    /etc/cobbler/user``.conf: web服务授权配置文件

    /etc/cobbler/users``.digest: web访问的用户名密码配置文件

    /etc/cobbler/dhcp``.template: dhcp服务器的的配置末班

    /etc/cobbler/dnsmasq``.template: dns服务器的配置模板

    /etc/cobbler/tftpd``.template: tftp服务的配置模板

    /etc/cobbler/modules``.conf: 模块的配置文件

    cobbler 目录介绍

    .数据目录

    /var/lib/cobbler/config/``: 用于存放distros,system,profiles 等信

    息配置文件

    /var/lib/cobbler/triggers/``: 用于存放用户定义的cobbler命令

    /var/lib/cobbler/kickstart/``: 默认存放kickstart文件

    /var/lib/cobbler/loaders/``: 存放各种引导程序

    .镜像目录

    /var/www/cobbler/ks_mirror/``: 导入的发行版系统的所有数据

    /var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于远程网络启动

    /var/www/cobbler/repo_mirror/``: yum 仓库存储目录

    .日志目录

    /var/log/cobbler/installing``: 客户端安装日志

    /var/log/cobbler/cobbler``.log : cobbler日志

    cobbler 命令介绍

    cobbler check 核对当前设置是否有问题

    cobbler list 列出所有的cobbler元素

    cobbler report 列出元素的详细信息

    cobbler ``sync 同步配置到数据目录,更改配置最好都要执行下

    cobbler reposync 同步yum仓库

    cobbler distro 查看导入的发行版系统信息

    cobbler system 查看添加的系统信息

    cobbler profile 查看配置信息

    cobbler 重要的参数

    ./etc/cobbler/settings中重要的参数设置

    .default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/" 

    #这里是设置新安装机器的root密码,用openssl passwd -1 生成加密密码

    .manage_dhcp:1

    .manage_tftpd:1

    .pxe_just_once:1

    #以上调整为1,表示对相关服务进行控制

    .next_server:< tftp服务器的IP 地址>

    .server:<cobbler服务器的IP 地址>

    cobbler 环境检查

    .执行Cobbler check命令常见如下异常,一般是配置文件没更改导致

    .1 : The ‘server’ field ``in /etc/cobbler/settings must be ``set to something other than localhost, or kickstarting features will not work. This should be a resolvable ``hostname or IP ``for the boot server as reachable by all machines that will use it.

    .2 : For PXE to be functional, the ‘next_server’ field ``in /etc/cobbler/settings must be ``set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.

    .3 : some network boot-loaders are missing from``/var/lib/cobbler/loaders``, you may run ‘cobbler get-loaders’ to download them, or, ``if you only want to handle x86``/x86_64 netbooting, you may ensure that you have installed a recentversion of the syslinux package installed and can ignore this message entirely. Files ``in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The ‘cobbler get-loaders’ ``command is the easiest way to resolve these requirements.

    .4 : change ‘disable’ to ‘no’ ``in /etc/xinetd``.d``/rsync

    .5 : comment ‘dists’ on ``/etc/debmirror``.conf ``for proper debian support

    .6 : comment ‘arches’ on ``/etc/debmirror``.conf ``for proper debian support

    .7 : The default password used by the sample templates ``for newly installed machines (default_password_crypted ``in /etc/cobbler/settings``) is still ``set to ‘cobbler’ and should be changed, try: “openssl ``passwd -1 -salt ‘random-phrase-here’ ‘your-password-here’” to

    generate new one

    .8 : fencing tools were not found, and are required to use the (optional) power management features. ``install cman or fence-agents to use them

    Cobbler check常见报错解决办法如下

    .修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相应的IP地址或主机名

    .修改/etc/cobbler/settings文件中的next_server参数的值为提供PXE服务的主机相应的IP地址

    .如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则,需要安装syslinux程序包,而后制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目录中

    .执行“chkconfig rsync on”命令即可

    .执行“openssl passwd -1 生成密码,并用其替换/etc/cobbler/settings文件中

    default_password_crypted参数的值

    cobbler 相关管理

    .下载启动菜单:cobbler get-loaders

    .管理distro ,这一步是导入光盘的所有文件,时间会比较长,根据光盘的大小决定时间长短

    cobbler ``import --name=centos-6.9-x86_64 --path=``/media/cdrom

    .管理profile ,即启动菜单

    cobbler profile add --name=centos-6.9-x86_64-basic --distro=centos-6.9-x86_64 --kickstart=``/tmp/centos-6``.9-x86_64.cfg

    .查看profiles

    cobbler profile list

    .查看引导文件

    cat /var/lib/tftpboot/pxelinux``.cfg``/default

    .同步cobbler配置

    .cobbler sync

    多系统引导方案

    导入多个ks文件,并将ks文件和yum源做管理

    cobbler ``import --name=CentOS-7-x86_64 --path=``/media/cdrom

    cobbler的web管理实现

    .cobbler-web提供cobbler的基于web管理界面,服务包来自epel源

    yum ``install cobbler-web

    配置文件在/etc/httpd/conf.d/cobbler_web.conf,在httpd的配置目录下,所以要使得cobbler生效,必须重启httpd服务

    .认证方式

    .定义认证方法:/etc/cobbler/modules.conf,这里介绍两种验证方法认证cobbler_web用户, authn_configfile和authn_pam

    基于authn_configfile模块认证

    .[authentication]块中module = authn_configfile,系统默认就是authn_configfile这个验证方法

    .创建其认证文件/etc/cobbler/users.digest,并添加所需的用户

    htdigest  -c ``/etc/cobbler/users``.digest  Cobbler admin

    #以上语句中Cobbler是必须要有的,而且第一个字母C大写

    #admin是新增加的文件,可以自己随意命名

    .注意:添加第一个用户时,使用“-c”选项,后续添加其他用��时不要再使用,cobbler_web的realm只能为Cobbler

    重启cobbler服务

    基于authn_pam模块认证

    .更改配置文件/etc/cobbler/modules.conf里的 [authentication]块中指定module = authn_pam

    .创建cobbler用户:useraddcobbler

    useradd cobbleruser  -s  ``/sbin/nologin

    echo Pass1234 |  ``passwd --stdin cobbleruser

    .修改文件/etc/cobbler/users.conf,将自己创建的用户设置为管理员

    [admins]

    admin = "cobbleruser"其他不用更改

    重启cobbler服务

    测试

    A.安装新的linux系统

    B. 通过浏览器 输入用户名和密码就可以访问

    安装cobbler步骤如下

    1 安装包

    yum -y  ``install cobbler  dhcp

    systemctl  ``enable  cobblerd

    systemctl  start  cobblerd

    systemctl ``enable  tftp

    systemctl start  tftp

    systemctl ``enable httpd

    systemctl start httpd

    2 根据cobbler check 提示进行修改

    vim ``/etc/cobbler/settings 

    default_password_crypted: ``"$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/" 

    #openssl passwd -1 生成口令,设置新机器root的初始密码

    next_server: 192.168.32.73

    manage_dhcp: 1

    server: 192.168.32.73

    重启服务并同步文件

    systemctl restart cobblerd

    cobbler ``sync

    2)生成dhcp模版文件

    vi /etc/cobbler/dhcp``.template

    subnet 192.168.32.0 netmask 255.255.255.0 {

    ``range dynamic-bootp        192.168.32.100 192.168.32.254;

    #变更上面这行,其他行只要变更相关网络行配置就可以

    }

    同步文件  cobbler ``sync

    3) 准备启动文件和和菜单风格文件

    复制菜单风格文件

     /var/lib/cobbler/loaders中如果缺少一些网络启动加载程序,可以运行'cobbler get-loaders'来下载它们,或者,如果您只想处理x86 / x86_64 netbooting,则可以确保已安装 安装

    了syslinux软件包的一个新版本,可以完全忽略这个消息。 该目录中的文件,如果要支持所有架构,应包括pxelinux.0,menu.c32,elilo.efi和yaboot。 “cobbler get-loaders”

    命令是解决这些要求的最简单方法。

    连接internet

    cobbler get-loaders

    不连internet,只复制menu.c32,pxelinux.0两个文件的话,只支持安装x86/x86_64架构的系统,所以建议还是执行cobbler get-loaders,将所需的文件都下载到 /var/lib/cobbler/loaders来。

    cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders

    查看启动菜单的菜单选项,命令如下

    cobbler profile list

    如果不需要相关菜单,可以用以下命令移除,

    cobbler profile remove --name=centos7.3_desk

    3 导入yum源

    cobbler ``import --path=``/misc/cd --name=centos7.3 --arch=x86_64

    #断开光盘连接,重新换张6.9的盘,进行安装

    cobbler ``import --path=``/misc/cd --name=centos6.9 --arch=x86_64

    cobbler distro list

    cobbler profile list

    这一步执行完成后,会将当前的光盘文件全部拷贝到/var/www/cobbler/ks_mirror这个目录下,并且生成新的目录,目录名称自己指定,如centos7.3,这里这个目录的名字一旦设定好了之后,

    后续就不要继续更改目录名,否则生成菜单文件会异常,因为名字不匹配

    4 生成ks

    #注意,这里的应答文件是根据yum源自动生成的,我们也可以自己生成生成ks文件,然后在做管理,把应答文件里的安装方式改成 url  --url=$tree,就会

    自动去找到对应的目录,当然这里也可以直接指定对应的路径

    这里的$tree 的路径可以通过以下命令查看,

    cobbler  distro list 找到源配置文件,如centos73-x86_64

    cobbler distro tree centos73-x86_64 就可以看到tree这个变量具体指哪个,如下

    Kickstart Metadata             : {'tree': '

    注意,cobbler专门放应答文件的目录是/var/lib/cobbler/kickstarts,将新生成的ks文件拷贝到这里/var/lib/cobbler/kickstarts即可,如

    cp  ks73min.cfg /var/lib/cobbler/kickstarts/

    然后再将应答文件和yum源做关联

    cp  centos6.cfg centos7.cfg ``/var/lib/cobbler/kickstarts/

    cobbler profile remove --name=centos6.9-x86_64

    cobbler profile remove --name=centos7.3-x86_64

    cobbler profile add --name=centos6.9_desktop --distro=centos6.9-x86_64  --kickstart=``/var/lib/cobbler/kickstarts/centos6``.cfg

    cobbler profile add --name=centos7.3_mini --distro=centos7.3-x86_64  --kickstart=``/var/lib/cobbler/kickstarts/centos7``.cfg

    #以上命令将安装的新生成的ks文件和要对应的安装的yum源关联起来,--name要新生成的菜单项的名字,--distro指定yum源(cobbler distro list

    这个命令查看当前有多少个yum源,及其名称),--kickstart指定ks文件的路径

    cobbler sync

    5 启用网页管理

    htdigest  -c ``/etc/cobbler/users``.digest  Cobbler sunny

    service httpd restart

    service cobblerd restart

    到这里cobbler安装完成了

    6 测试

    A安装虚拟机

    B打开cobbler管理页面

    4 半自动化安装pxe环境脚本实现

    这里附上自动化安装PXE环境的半自动化脚本

    将菜单配置文件,dhcp配置文件,ks文件打包放在附件中,有需要可以下载查看

    这些配中,需要注意的是ks的文件中,对包源路径指定,如

    url --url="http://192.168.32.72/os/6i386/"

    还有菜单文件中,ks路径的指定

     append initrd=6i386/initrd.img ks=

    还有,dhcp分配的网络段的分配,和当前的网络是可通的

    在脚本中,有几个地方需要注意

    共准备了三个版本的光盘,32位的6.5版本,64位的6.9版本,和64位的7版本

    挂载:/var/www/html/os/{6i386  6x86_64  7 }三个文件夹分别挂载对应的光盘,这里建议手动挂载

    启动引导文件:建议手动内核和虚拟根文件到/var/lib/tftpboot{ 6i386  6x86_64  7}这三个文件夹下

    ks文件,建议提前准备好,也是手动复制到/var/www/html/ksdir下

    虽然脚本实现了自动化的复制,但是前提是/dev/sr0 ---> 6x86_64 ,/dev/sr1 ---> 6i386 ,/dev/sr2 ---> 7

    脚本内容如下

    #!/bin/bash

    #

    #******************************************************************************

    #Author:               Sunny

    #Date:                 2017-09-27

    #FileName:             install_pxe_env.sh

    #version:              1.0

    #Your change info:

    #Description:          For install PXE_environment auto

    #DOC URL:

    #Copyright(C):         2017  All rihts reserved

    #*****************************************************************************

    restart_dhcpd() {

    service dhcpd restart &>``/dev/null``;

    chkconfig dhcpd on &>``/dev/null``;

    }

    restart_tftp () {

    sed -i ``'s/disable.*/disble = no/g' /etc/xinetd``.d``/tftp &>``/dev/null``;

    chkconfig tftp on &>``/dev/null``;

    service xinetd restart &>``/dev/null``;

    }

    restart_httpd(){

    service httpd restart &>``/dev/null``;

    chkconfig httpd on &>``/dev/null``;

    }

    min_time () {

    ``time``` = `date` %Y%m%d%H%M` ``

    }

    ip=$(``ifconfig  | ``awk '/inet /{print $2}'``| ``awk -F : ``'{print $NF}'``| ``head -1)

    min_time;

    #install server

    echo "Now install dhcp,http,tftp server and tftp client,it might take few minites"

    rpm -q httpd &>``/dev/null && restart_httpd || { yum -y ``install httpd &>``/dev/null``;restart_httpd; }

    rpm -q dhcp &>``/dev/null && restart_dhcpd ||  { yum -y ``install dhcp&>``/dev/null``;restart_dhcpd; }

    rpm -q tftp-server &>``/dev/null && restart_tftp  || { yum -y ``install tftp-server &>``/dev/null``;restart_tftp; }

    rpm -q tftp &>``/dev/null || yum -y ``install tftp &>``/dev/null``;

    #For centos 6.9,file pxelinux.0 comes from packges syslinux-nonlinux,other version is from syslinux,but if you install packge syslinux,it will also install syslinux-nonlinux packge,so just install syslinux packge is OK to get file syslinux-nonlinux.

    rpm -q syslinux &>``/dev/null || yum -y ``install syslinux &>``/dev/null``;

     

    #set http for yum server

    #mount yum source

    echo "Now you need to config  yum server in http server"

    echo "Since I do not know which different disc your disc will be displayed,such as,centos7 display as /dev/sr0,or display as/dev/sr1 or other device "

    echo "This time,I have three disks,6i386 means 386 arch for ceentos6.5,6x86_64 means 64bit for centos6.9,7 means centos7.3"

    echo "the relation of my disk  dislay in the centos as below"

    echo -e ``"/dev/sr0 ---> 6x86_64 n/dev/sr1 ---> 6i386 n/dev/sr2 ---> 7"

    mkdir -p ``/var/www/html/os/``{6i386,6x86_64,7}

    read -p ``"Would you want to mount disk auto:(eg:y/n): " automount

    case $automount ``in

    y)

    echo -e ``"/dev/sr0 ---> 6x86_64 n/dev/sr1 ---> 6i386 n/dev/sr2 ---> 7"

    mount /dev/sr0   /var/www/html/os/6x86_64

    mount /dev/sr1   /var/www/html/os/6i386

    mount /dev/sr2   /var/www/html/os/7

    ;;

    *)

    echo "Since your answer is no or other,please mount disk after the script end"

    echo "eg: run    mount /dev/sr0   /var/www/html/os/6x86_64  "

    echo "eg: if your want to mount the disk fixed,please write to /etc/fstab,eg: /dev/sr0        /var/www/html/os/6x86_64      iso9660    defaults        0 0 "

    ;;

    esac

     

    #prepare ks file in /var/www/html/ksdir

    echo "If your have put ks file in other hosts,your should input remote ,and input the remote file full path,and it will use scp cmd to copy the ks file directory to /var/www/html/ksdir"

    echo "If you put dir in local host,input local,it will will cp cmd to  copy the ks file directory to /var/www/html/ksdir"

    echo "if you input any other,you should cp ksdir to /var/www/html/ksdir"

    read -p ``"Do you want to copy remote ks dir( r (remote) or l (local) or any other input ): " ifcopy

    mkdir -p ``/var/www/html/ksdir/

    case $ifcopy ``in 

    r|remote)

    read -p ``"input the remote ksdir directory(defaults:root@172.18.50.75:/var/www/html/ksdir/*): " ksdir

    if [ -z ${ksdir:-} ];``then

    ksdir=``"root@172.18.50.75:/var/www/html/ksdir/*"

    fi

    read -p ``"input host user's password you have put: " passwd

    ``expect -c "

    ``spawn  ``scp  $ksdir ``/var/www/html/ksdir/

    ``expect {

    ``"*assword" {``set timeout 300; send "$``passwd``r"; }

    ``"``yes``/no``" { send "``yes``r"; exp_continue; }

    ``}

    ``expect eof"

     

    ``ls /var/www/html/ksdir | ``while read ksfile; ``do

    ``sed -i ``"s@url --url="http://.*/os/@url --url="http://$ip/os/@g"  /var/www/html/ksdir/``$ksfile

    ``done

     

    ;;

    l|``local )

    read -p ``"Please input your local ks directory(eg:/root/ksdir/*): " ksdir

    cp $ksdir ``/var/www/html/ksdir/

    ;;

    *)

    echo "your input is wrong,please manual copy ksdir to /var/www/html/ksdir/"

    ;;

    esac

     

    #config dhcp

    echo "Now config dhcp server..."

    read -p ``"Input your next-server ip(default is your host ip): " nextip

    if [ -z ${nextip:-} ];``then

    nextip=``"$ip"

    fi

    echo nextip is ``"$nextip"

    mv /etc/dhcp/dhcpd``.conf ``/etc/dhcp/dhcpd``.conf.``"$time"``.bak

    cat >``/etc/dhcp/dhcpd``.conf<<eof

    option domain-name ``"sunny.com"``;

    option domain-name-servers 192.168.32.61;

    default-lease-``time 86400;

    max-lease-``time 86400;

    subnet 192.168.32.0 netmask 255.255.255.0 {

    range 192.168.32.100 192.168.32.200;

    option routers 192.168.32.1;

    next-server $nextip;

    filename ``"pxelinux.0"``;

    }

    log-facility local7;

    eof

     

    echo "As default,the dhcp server will alocate ip 192.168.32.100--192.168.32.200,dns server is 192.168.32.61,router is 192.168.32.1,if you want to change these config ,please run 'vim /etc/dhcp/dhcpd.conf' to change /etc/dhcp/dhcpd.conf"

     

    echo "dhcp is complete config now"

     

    #config tltp

    echo "If you want to copy linux kernel file to /var/lib/tftpboot/{6i386,6x86_64,7}"

    read -p ``"Please input m(means manual) or a (means auto): " copyfile

    case $copyfile ``in

    a)

    mkdir -p ``/var/lib/tftpboot/``{6i386,6x86_64,7}

    cp /var/www/html/os/6i386/isolinux/``{initrd.img,vmlinuz} ``/var/lib/tftpboot/6i386

    cp /var/www/html/os/6x86_64/isolinux/``{initrd.img,vmlinuz} ``/var/lib/tftpboot/6x86_64

    cp /var/www/html/os/7/isolinux/``{initrd.img,vmlinuz}   ``/var/lib/tftpboot/7

    ;;

    *)

    echo "Your input is m or other things"

    echo "you should do two things after the scripts"

    echo "create directory under /var/lib/tftpboot/,such as mkdir /var/lib/tftpboot/6i386"

    echo "copy the kernel file to the relative dir,such as cp /var/www/html/os/6i386/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/6i386"

    echo "If you have many other yum source,please create relative dir under /var/lib/tftpboot/6i386"

    ;;

    esac

     

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

     

    echo "Now config defaults file ,you can copy the host relative disk file ,/media/isolinux/isolinux.cfg to /var/lib/tftpboot/pxelinux.cfg,and rename it to defaults,and the modify the config,run cmd 'cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/    pxelinux.cfg/default' "

    echo "Now I will config /var/lib/tftpboot/pxelinux.cfg/default"

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

    cat > ``/var/lib/tftpboot/pxelinux``.cfg``/default``<<eof

     

    default menu.c32

    #prompt 1

    timeout 80

     

    display boot.msg

     

    menu background splash.jpg

    menu title Welcome to Sunny diy ``install Linux!

    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 desktop73

    ``menu label Install diy ^desktop centos 7

    ``menu default

    ``kernel 7``/vmlinuz

    ``append initrd=7``/initrd``.img ks=http:``//``$ip``/ksdir/ks73desk``.cfg

    label mini73

    ``menu label Install diy ^mini centos 7

    ``menu default

    ``kernel 7``/vmlinuz

    ``append initrd=7``/initrd``.img ks=http:``//``$ip``/ksdir/ks73min``.cfg

    label desktop6.5

    ``menu label Installed d^esktop centos 6.5 i386

    ``kernel 6i386``/vmlinuz

    ``append initrd=6i386``/initrd``.img ks=http:``//``$ip``/ksdir/ks65desk``.cfg

    label mini6.5

    ``menu label Install m^ini centos 6.5 i386

    ``kernel 6i386``/vmlinuz

    ``append initrd=6i386``/initrd``.img ks=http:``//``$ip``/ksdir/ks65min``.cfg

    label desktop6.9

    ``menu label Installed de^sktop centos 6.9

    ``kernel 6x86_64``/vmlinuz

    ``append initrd=6x86_64``/initrd``.img ks=http:``//``$ip``/ksdir/ks69desk``.cfg

    label mini6.9

    ``menu label Install mi^ni centos 6.9

    ``kernel 6x86_64``/vmlinuz

    ``append initrd=6x86_64``/initrd``.img ks=http:``//``$ip``/ksdir/ks69min``.cfg

    eof

     

    echo "tftp is config OK"

     

    #restart server

    echo "now restart server"

    restart_httpd;

    restart_tftp;

    restart_dhcpd;

    netstat -ntulp | ``grep dhcpd | ``grep :67 &>``/dev/null && ``echo "dhcp is running..." || ``echo "dhcp is not run,please check"

    netstat -ntulp | ``grep httpd | ``grep :80 &>``/dev/null && ``echo "http is running..." || ``echo "http is not run,please check"

    netstat -ntulp | ``grep xinetd | ``grep 69 &>``/dev/null && ``echo "tftp is running..." || ``echo "tftp is not run,please check"

    5 小结

    关于PXE和cobbler安装,两个实现的效果一样,都是自动化安装系统,而且实现原理上也基本一致,但是,由于cobbler是PXE的改良版,所有个人感觉,cobbler的安装更加方便。

    文章末尾,附上的PXE安装环境,也类似实现了自动化安装PXE,自动拷贝了脚本,当用户同样是挂载三个光盘,而且挂载的路径和文章中介绍的一样,就可以实现自动化挂载,同时,需要准备了相关的ks文件,放到指定目录下时,根据脚本的提示也可以实现自动化拷贝到相关目录下。文末附件将附上脚本中的6个ks文件,dhcp配置和菜单文件的设置。

    可以到Linux公社资源站下载:

    ------------------------------------------分割线------------------------------------------

    免费下载地址在

    用户名与密码都是www.linuxidc.com

    具体下载目录在 /2017年资料/10月/1日/基于PXE 和 Cobbler 自动安装Linux系统/

    下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

    ------------------------------------------分割线------------------------------------------

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147226.htm

    新葡亰496net 88

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496net:运行自动化之系统安装,无人值守

    关键词:

上一篇:新葡亰496net:Linux命令补充及基础优化

下一篇:没有了