澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:无人值班守护,自动安装

2019-11-16 作者:澳门新萄京官方网站   |   浏览(200)

 

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

Cobbler 介绍

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

1 概述

安装一个操作系统对一个普通人来说是一件非常麻烦的事了。而对于一个专业人士来说,应该是一个非常轻松的事。但是这样的情况也仅限于有限的几台需要安装。在实际工作的中,我们经常会遇到这样的情况:有大批量的计算机需要同时安装Linux,或者想要安装Linux但是计算机没有光驱,或者是通过光驱的方式一个个安装。这样安装不仅效率低,也不利于以后的维护。这个时候你就需要利用网络的强大功能了。它可以帮你基于网络来完成全自动化的安装,中间不需要人工去干预。这就是cobbler服务

环境准备

  • 准备两台主机,如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 : 模块的配置文件

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

cobbler服务是一个快速网络安装linux 操作系统的服务。它支持众多的Linux 发行版本:Red Hat 、Fedora 、CentOS 、Debian 、Ubuntu和SUSE ,也可以支持网络安装windows。它同时提供了CLI 和Web的页面管理形式。

安装

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

yum install –y cobbler
#
#

 

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

澳门新萄京官方网站 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,打开文件后如下图:

    澳门新萄京官方网站 2

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

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

    澳门新萄京官方网站 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
    }
    

    澳门新萄京官方网站 4

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

    澳门新萄京官方网站 5

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

    澳门新萄京官方网站 6

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

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

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

澳门新萄京官方网站 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 查看配置信息

2 基于PXE 自动化安装

 -- PXE(Preboot Execution Environment / 远程引导技术)

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 地址>

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

-- DHCP(Dynamic Host Configuration Protocol / 动态主机配置协议)

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)返回预料之外的状态代码,将出现此信息

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文件里我们将指定了安装包的路径。

-- TFTP(Trivial File Transfer Protocol / 普通文件传输协议)

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

    澳门新萄京官方网站 8

  • (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

澳门新萄京官方网站 9

  • (4)准备kickstart文件

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

    澳门新萄京官方网站 10

    • 准备的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}

    澳门新萄京官方网站 11

  • (5)配置TFTP服务

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

    澳门新萄京官方网站 12

  • (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

    澳门新萄京官方网站 13

  • (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

    澳门新萄京官方网站 14

    • 文件目录结构如下:

    澳门新萄京官方网站 15

  • (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安装的启动项

    澳门新萄京官方网站 16

ARP错误代码

PXE-E11:ARP timeout PXE ROM

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

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

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

PXE工作原理

-- HTTP(Hyper Text Transfer Protocal /超文本传输协议)

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

    澳门新萄京官方网站 17

  • (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/*

    澳门新萄京官方网站 18

  • (5)配置TFTP服务

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

    澳门新萄京官方网站 19

  • (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

澳门新萄京官方网站 20

  • (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

    澳门新萄京官方网站 21

    • 文件目录结构如下:

澳门新萄京官方网站 22

  • (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安装的启动项

澳门新萄京官方网站 23

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入口结构无效。

如下图

cobbler的工作流程:

步骤一

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

①编辑配置文件

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

澳门新萄京官方网站 24

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

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

    澳门新萄京官方网站 25

  • 配置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

    澳门新萄京官方网站 26

  • (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
    • 文件目录结构如下:

    澳门新萄京官方网站 27

  • (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安装的启动项

澳门新萄京官方网站 28

可以同时安装CentOS6 和CentOS 7

澳门新萄京官方网站 29

澳门新萄京官方网站 30

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端口并没有收到回复。

澳门新萄京官方网站 31

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

步骤二

#环境检查后发现少了一项,那么下面接着还是从第一项开始操作
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 
#编辑配置文件

澳门新萄京官方网站 32

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

四、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

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

原理介绍

2、DHCP 服务器(cobbler server )收到请求后会返回一个responese ,包括其分配的ip 地址

步骤三

#环境检查后发现又少了一条,下面接这来...
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' 命令来获取,这时候需要主机联网下载

 

我们先来看看这个目录

澳门新萄京官方网站 33

①生成必要文件

cobbler get-loaders
#
#

澳门新萄京官方网站 34

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

澳门新萄京官方网站 35

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

cobbler sync
#数据同步

 

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

澳门新萄京官方网站 36

 

②重复步骤一中的②命令

#又少了,继续
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,将显示此信息。

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

3、client 裸机拿到ip 后再向cobbler server 发送一个安装OS引导文件的请求

步骤四

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

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

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

 

①编辑配置文件

vim /etc/cobbler/settings
#

澳门新萄京官方网站 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 : 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

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

步骤五

配置dhcp

①编辑配置文件

vim /etc/cobbler/settings
#

澳门新萄京官方网站 38

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

vim /etc/cobbler/dhcp.template
#

澳门新萄京官方网站 39

我们先来看下dhcp配置文件

澳门新萄京官方网站 40

还是空的没有配置信息

 

②同步

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

再来看dhcp配置文件

澳门新萄京官方网站 41

有信息了

 

(三)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结构未被正确载入。

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

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

步骤六

①开启dhcp服务

systemctl start dhcpd
#开启服务

②建立cobbler yum源-导入系统

澳门新萄京官方网站 42

这里我们也把centos6导入

澳门新萄京官方网站 43

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

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

(四)cobbler配置文件

  • 配置文件目录:/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:模块的配置文件

安装

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

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

步骤七

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

澳门新萄京官方网站 44

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

澳门新萄京官方网站 45

③创建启动菜单

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
#

澳门新萄京官方网站 46

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

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

澳门新萄京官方网站 47

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

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

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

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

成功界面

澳门新萄京官方网站 48

(五)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/:导入的发行版系统的所有数据
    澳门新萄京官方网站:无人值班守护,自动安装Linux系统。/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
  • 关闭防火墙

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

7、cobbler server 再次回应请求的kickstart 和OS iamge文件位置

cobbler-web管理

 

1、首先安装包

 

yum install -y cobbler-web
#

 

2、访问

 

https://192.168.43.7/cobbler_web

默认账号:cobbler

默认密码:cobbler

澳门新萄京官方网站 49

(六)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 

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

澳门新萄京官方网站 50

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

yum install –y dhcp

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

8、client 裸机加载kickstart 文件

附带过程中出现的问题

(七)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内核

9、client 裸机接收OS image ,安装该OS image

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

澳门新萄京官方网站 51

解决方案: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
#编辑配置文件

澳门新萄京官方网站 52

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

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
#编辑配置文件

澳门新萄京官方网站 53

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

步骤三

#环境检查后发现又少了一条,下面接这来...
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' 命令来获取,这时候需要主机联网下载

cobbler get-loaders

我们先来看看这个目录

澳门新萄京官方网站 54

①生成必要文件

澳门新萄京官方网站 55

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

澳门新萄京官方网站 56

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

cobbler sync
#数据同步 

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

澳门新萄京官方网站 57

②重复步骤一中的②命令

#又少了,继续
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
#

澳门新萄京官方网站 58

②重复步骤一中的②命令

#少了一条
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
#

澳门新萄京官方网站 59

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

vim /etc/cobbler/dhcp.template
#

澳门新萄京官方网站 60

我们先来看下dhcp配置文件

澳门新萄京官方网站 61

还是空的没有配置信息

②同步

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

再来看dhcp配置文件

澳门新萄京官方网站 62

有信息了

步骤六

①开启dhcp服务

systemctl start dhcpd
#开启服务

②建立cobbler yum源-导入系统

澳门新萄京官方网站 63

这里我们也把centos6导入

澳门新萄京官方网站 64

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

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

步骤七

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

澳门新萄京官方网站 65

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

澳门新萄京官方网站 66

③创建启动菜单

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
#

澳门新萄京官方网站 67

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

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

澳门新萄京官方网站 68

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

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

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

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

成功界面

澳门新萄京官方网站 69

cobbler-web管理

1、首先安装包

yum install -y cobbler-web
#

2、访问

默认账号:cobbler

默认密码:cobbler

澳门新萄京官方网站 70

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

10、客户端启动

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

澳门新萄京官方网站 71

解决方案:关闭防火墙

#systemctl stop firewalld.service

#iptables –L

 

(九)cobbler实现步骤

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

附带过程中出现的问题

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

澳门新萄京官方网站 72

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

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

澳门新萄京官方网站 73

解决方案:关闭防火墙

#systemctl stop firewalld.service

#iptables –L 

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

澳门新萄京官方网站 74

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

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

Linux公社的RSS地址:

本文永久更新链接地址

澳门新萄京官方网站 75

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

下面就来说说配置cobbler的步骤:

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

澳门新萄京官方网站 76

解决方案:这是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服务
    • 通过http://cobblerserver/cobbler_web访问即可

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

一、先安装cobbler、dhcp服务,并开启对应服务(在CentOS 7 上安装)

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

.安装软件包

yum  install  -y  cobbler  dhcp(安装cobbler和dhcp)   

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

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

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

systemctl enable cobblerd(设置cobbler服务为开机自启)

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

澳门新萄京官方网站 77

  • 根据问题,修改/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

澳门新萄京官方网站 78

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

systemctl start cobblerd(打开cobbler服务)

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

文件准备

systemctl enable tftp(设置tftp服务为开机自启)

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

澳门新萄京官方网站 79

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

澳门新萄京官方网站 80

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

澳门新萄京官方网站 81

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

systemctl start tftp(打开tftp服务)

(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

systemctl enable httpd(设置httpd服务为开机自启)

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

澳门新萄京官方网站 82

system-config-kickstart:生成 kickstart文件

systemctl start httpd(打开httpd服务)

.配置文件共享服务:

二、检查cobbler的配置文件

systemctl ``enable httpd

cobbler  check:这一步会检查cobbler的配置文件是否完整。第一次执行会出现很多的错误报告,我们需要跟着这些错误报告来一步步的更改它。

systemctl start httpd

澳门新萄京官方网站 83

mkdir /var/www/html  /centos/7

根据cobbler  check的提示,我们来一步步的完善它。

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

      1)修改配置文件

 

        vim  /etc/cobbler/setting

.准备kickstart文件

澳门新萄京官方网站:无人值班守护,自动安装Linux系统。        这里面我们只需要更改四处就可,

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

        找到这一行:default_password_crypted: "$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/" 这里的密码是需要更改的

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

        先利用openssl passwd -1 生成口令,然后把生成的口令来替换掉这一窜随机数
        这一行:next_server: 127.0.0.1   这里把你本机的ip地址更改上去就可(他是提供tftp里repo源文件位置的地址)
        这一行:manage_dhcp: 0  这里0改为1 (表示打开DHCP为client分配ip地址)
        这一行:server: 1172.0.0.1 这里改为自己本机的ip(12.168.35.5)地址(表示为client提供cobbler服务的主机地址)

开机时加载网卡,onboot选项

      2)更改tftp配置文件

.配置tftp服务

        这个根据提示修改/etc/xinetd.d/tftp里的disabled 为on

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

          vim  /etc/xinetd.d/tftp

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

      3)配置DHCP服务模板

 

        vim  /etc/cobbler/dhcp.template 

.配置DHCP服务

      澳门新萄京官方网站 84

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

        这里就修改两个地方:subnet 192.168.25.0 netmask 255.255.255.0 {
                    range dynamic-bootp 192.168.25.100 192.168.25.254;

systemctl ``enable dhcpd

        修改完成后重启cobbler服务,并同步cobbler配置文件

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

          systenctl  restart  cobbler

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

          cobbler  sync

option domain-name-servers 192.168.32.61;

        这样DHCP文件就配置完成,可以打开DHCP服务了

default-lease-``time 86400;

          systemctl  enable  dhcpd(设置dhcp为开机自启)

max-lease-``time 86400;

          systemctl  start  dhcpd (打开dhcp服务)

subnet 192.168.32.0 netmask 255.255.255.0 {

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

range 192.168.32.100 192.168.32.200;

        如果主机连接在internet上那么就好办了,我们只需要一步就可
          cobbler get-loaders (执行这条命令,他会自动连网下载所需的启动文件与菜单界面)

option routers 192.168.32.1;

          他会把下载到的文件放置到 /var/lib/cobbler/loaders这个目录下

next-server 192.168.32.72;

      5)关闭本机的selinux与防火墙,这是为了能使外部的网络请求可以不被这些策略拒绝在外而接收不到请求

filename ``"pxelinux.0"``;

        setenforce  0  (关闭selinux策略)

}

        iptables  -F  (关闭防火墙)

 

        当然这些方法都是临时的,如果想长期更改还需要更改他们的配置文件。当然这样并不安全,所以这里我们就临时更改一下

 

      6)像提示里的rsync、debmirrior与fencing  tools这几个提示可以不用理会,因为这里我们用不到它。

systemctl start dhcpd

      然后重新启动cobbler服务:

配置tftp服务

        systemctl  reestart cobblerd(重启服务)

.准备相关文件

        cobbler  sync (重新载入配置文件)

tftp路径是

 

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

     三、配置安装系统所需要的yum源

yum ``install syslinux

         这需要把光盘里的文件导入到cobbler的服务目录里,为系统的安装准备好文件

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

        cobbler  import  --path=/misc/cd  --name=centos7_test  --arch=x86_64 (导入光盘文件)
        cobbler distro list (这时就可查看导入的文件所生成的yum的库名了)

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

     四、生成kickstart引导文件

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

        到这里我们就要导入自己制作的安装的引导文件了,这个引导文件需要我们根据安装所需要的包来自己手动制作,同时也可根据系统生成的文件来加以修改也可以。下面就是一个根据系统的配置文件修改的ks引导文件ks.cfg

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

    vim /anaconda-ks.cfg

#menu.c32这个是菜单风格

    澳门新萄京官方网站 85
     澳门新萄京官方网站 86  

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

     到此kickstart  文件编辑完成

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

    我们要把这个文件导入进cobbler的服务路径里

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

    cp  anaconda-ks.cfg  /var/lib/cobbler/kickstarts/ks7.cfg (复制这个制作好的文件到cobbler的目录下存放)

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

    chmod r  ks7.cfg  (要记得更改这个文件的权限,不然其他人是无权查看这个引导文件的)

当前文件列表如下:

    cobbler  profile  add  --name=centos7_hello  --distro=centos7_test  --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg(导入ks.cfg文件为centos7_hello 这个菜单名下的引导文件)

``/var/lib/tftpboot/

    systemctl  restart  cobblerd (再次重启这个服务)

├──initrd.img

    cobbler sync(同步配置文件)

├──menu.c32

      服务端的配置准备完成。

├──pxelinux.0

    五、配置客户端。将客户端连入这个网内,启动电源,选择菜单

├──pxelinux.cfg

      澳门新萄京官方网站 87

│└──default

     安装中:

└──vmlinuz

      澳门新萄京官方网站 88

 

安装完成后,就可以以root的身份来登录进系统,它的密码就是当初设定在ks.cfg文件里的密码。登录后就可以进行各种操作了

.准备启动菜单

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

修改启动菜单

澳门新萄京官方网站 89

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工作的对比图形

澳门新萄京官方网站 90

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

澳门新萄京官方网站 91

本文由澳门新萄京官方网站发布于澳门新萄京官方网站,转载请注明出处:澳门新萄京官方网站:无人值班守护,自动安装

关键词: