目录

文章目录

  • 目录
  • PXE
  • PXE 的运行原理
  • PXE 的引导安装过程
  • Cobbler
  • Cobbler 的工作原理
  • 安装软件服务
  • 配置软件服务
    • 配置 Cobbler
    • 配置 DHCP
    • 配置 TFTP
    • 检查环境
  • 制作 OS Distro(发行版)引导选项
    • 制作 CentOS7 的 OS Distro
  • 编写 KickStart 无人值守文件
    • CentOS-KVM
    • CentOS7 BM
  • 测试

PXE

PXE(Preboot execute environment,预启动执行环境)是目前主流的无盘启动技术,它可以使计算机通过网络而不是从本地硬盘或光驱等设备启动。

PXE 采用 C/S 架构,支持 Client 通过网络从远端 Server 下载操作系统映像,并由此支持通过网络启动操作系统。利用 PXE 进行网络安装的前提是待安装服务器具有支持 PXE 的网卡和主板 BIOS,实际上现在的网卡一般都内嵌支持 PXE 的 ROM 芯片。

iPXE 是 PXE 的扩展版,支持更多的协议,兼容性更好,不挑网卡,支持 HTTP 协议,可以通过 HTTP、ISCSI SAN、FC SAN 等方式启动。iPXE 的官方网站:http://ipxe.org/

PXE 的运行原理

当进行操作系统引导时,BIOS 首先会把 PXE Client 调入内存中执行。PXE Client 被载入内存后,它便同时具有 DHCP Client 和 TFTP Client 的功能,DHCP Client 会向 DHCP Server 请求 IP 分配给将要安装操作系统的终端主机,然后由 PXE Client 将放置在远端的启动软件包通过 TFTP(Trivial File Transfer Protocol)或 MTFTP(Multicast Trivial File Transfer Protocol)下载到本地内存中执行。由这个启动软件包完成终端的基本软件设置,从而引导预先安装在服务器中的终端操作系统。

PXE 还需要依赖 NBP(Network Bootstrap Program)技术。NBP 相当于网络版的 GRUB(Grand Unified Bootloader)或 LILO(Linux Loader),负责通过网络的方式将 OS Kernel 文件加载到主机内存中,以便 OS 可以通过网络进行引导安装。

PXE 的引导安装过程

  1. 远程主机开机启动网络启动,开机后会广播给 DHCP 服务器,分配给远程主机一个 IP 地址。
  2. 拿到 IP 地址后,远程主机向 Cobbler Server 发送请求下载 OS 启动文件。
  3. Cobbler Server 告诉远程主机 OS 文件的下载路径,包括 TFTP Server 的 IP 地址和端口等。
  4. 远程主机到 TFTP Server 下载 OS 引导文件。
  5. 远程主机执行 OS 引导文件,加载信息和 menu.c32,启动选择菜单,选择要安装的 OS,然后向 Cobbler Server 请求 kickstart 文件和OS 镜像文件。
  6. 远程主机加载 kickstart 文件,开始安装 OS。

Cobbler

Cobbler 是在 2008 年由 RedHat 发布的网络安装服务器软件项目,支持大多数 Linux 发行版,包括:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE,也支持网络安装 Windows。Cobbler 的最终目的是实现无需进行人工干预即可安装主机操作系统

PXE 是由 Intel 开发的技术,支持通过网络来启动操作系统,也可以实现通过网络来批量的安装操作系统。

Cobbler 正是基于 PXE 的二次封装,将多种安装参数封装到一个菜单当中,使用简单的命令即可完成 PXE 网络安装环境的配置,同时还可以管理 DHCP、DNS、TFTP、RSYNC 以及 YUM 仓库、构造系统 ISO 镜像等。Cobbler 通过将 DHCP、TFTP、DNS、HTTP 等服务进行集成,构建了一个中央管理节点。另外,PXE 只支持 MBR 而不支持 UEFI,Cobbler 则同时支持 MBR 和 UEFI。

Cobbller 还提供了 CLI 和 WEB 两种安装方式,使用起来更加的友好。

cobbler check     # 核对当前设置是否有问题
cobbler list      # 列出所有的 Cobbler 元素
cobbler report    # 列出元素的详细信息
cobbler sync      # 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync  # 同步 YUM 仓库
cobbler distro    # 看导入的发行版系统信息
cobbler distro list # 查看存在几套安装系统
cobbler system    # 查看添加的系统信息
cobbler profile   # 查看配置信息
cobbler profile list  # 查看安装系统的启动菜单项

Cobbler 的工作原理

Server

  1. 启动 Cobbler 服务进程。
  2. 执行 cobbler check 错误检查。
  3. 执行 cobbler sync 同步更新。
  4. 复制 OS 相关启动文件文件到 TFTP 目录中。
  5. 启动 DHCP 服务。
  6. DHCP 服务分配 IP 地址。
  7. TFTP 服务传输 OS 启动文件。
  8. Server 接收到 OS 安装请求。
  9. Server 发送 ISO 镜像与 Kickstart 文件。

Client

  1. Client 以 PXE 方式启动。
  2. DHCP Client 获取到 IP 地址。
  3. TFTP Client 获取启动 OS 文件。
  4. 进入 Cobbler 安装选择界面。
  5. Client 确定加载信息。
  6. 根据配置信息准备安装 OS。
  7. 加载 Kickstart 文件。
  8. 传输 OS 安装的相关文件。
  9. 进行安装系统。

安装软件服务

安装软件服务,包括:

  • Cobbler
  • DHCP
  • TFTP
  • HTTP
  • RSYNC
  • DNS(可选)

其中,DHCP、TFTP、RSYNC 都可以交由 Cobbler 来进行管理,例如:重启 cobblerd 时,会自动连带重启 dhcpd、tftpd 等。

# 关闭防火墙
$ systemctl disable firewalld.service && systemctl stop firewalld.service && systemctl status firewalld.service# 关闭 SELinux
$ sudo setenforce 0
$ sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 安装软件
$ yum install epel-release -y
$ yum install cobbler cobbler-web -y
$ yum install dhcp -y
$ yum install tftp-server xinetd -y
$ yum install httpd -y
$ yum install pykickstart -y# 启动服务
$ systemctl enable tftp && systemctl start tftp && systemctl status tftp
$ systemctl enable xinetd && systemctl start xinetd && systemctl status xinetd
$ systemctl enable httpd && systemctl start httpd && systemctl status httpd
$ systemctl enable rsyncd && systemctl start rsyncd && systemctl status rsyncd
$ systemctl enable cobblerd && systemctl start cobblerd && systemctl status cobblerd

配置软件服务

配置 Cobbler

# Cobbler Server IP address
$ sed -i 's%^server: 127.0.0.1%server: 192.168.1.253%g' /etc/cobbler/settings # TFTP 等 Next Server IP address
$ sed -i 's%^next_server: 127.0.0.1%next_server: 192.168.1.253%g' /etc/cobbler/settings # 为新安装的主机设置一个默认的用户口令
$ openssl passwd -1 <your-password-here>
$1$IIOrD77Q$LLsUPbSkOkE9g7F218SCU1
$ sed -i 's%^default_password_crypted.*%default_password_crypted: "$1$IIOrD77Q$LLsUPbSkOkE9g7F218SCU1"%g' /etc/cobbler/settings# 指定由 Cobbler 来管理 DHCP
$ sed -i 's%manage_dhcp: 0%manage_dhcp: 1%g' /etc/cobbler/settings # 指定由 Cobbler 来管理 TFTP
$ sed -i 's%manage_tftpd: 0%manage_tftpd: 1%g' /etc/cobbler/settings # 指定由 Cobbler 来管理 RSYNC
$ sed -i 's%manage_rsync: 0%manage_rsync: 1%g' /etc/cobbler/settings

配置 DHCP

编辑 Cobbler 的 DHCP 配置模版,执行 cobbler sync 时,会根据 template 自动更新 /etc/dhcp/dhcpd.conf 配置文件。

$ vi /etc/cobbler/dhcp.template
...
subnet 192.168.1.0 netmask 255.255.255.0 {option routers             192.168.1.1;option domain-name-servers 114.114.114.114;option subnet-mask         255.255.255.0;range dynamic-bootp        192.168.1.200 192.168.1.250;default-lease-time         21600;max-lease-time             43200;next-server                $next_server;
...

配置 TFTP

# 编辑 XINETD 服务
$ vim /etc/xinetd.d/tftp
...
disable=no
...
# 添加 "-v" 选项,打印详细日志。
server_args             = -B 1380 -v -s /var/lib/tftpboot$ systemctl restart xinetd.service$ netstat -anplut | grep :69
udp        0      0 0.0.0.0:69              0.0.0.0:*                           2672/xinetd
udp6       0      0 :::69                   :::*                                1/systemd# 查看 TFTP 日志文件
$ tail -f /var/log/messages

检查环境

检查目前的环境中是否还缺少哪些东西。

$ cobbler checkThe following are potential configuration items that you may want to fix:1 : Some network boot-loaders are missing from /var/lib/cobbler/loaders.  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.
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

逐一修复以上问题:

# 1.
# PXE boot for legacy mode(BIOS)
$ yum install syslinux -y
$ cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
$ cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
# PXE boot for UEFI mode
$ git clone https://github.com/cobbler/cobbler-loaders.git
$ cp cobbler-loaders/grub-0.97-99.el6/* /var/lib/cobbler/loaders# 2.
$ yum install debmirror -y
$ vi /etc/debmirror.conf
...
# @dists="sid";
# @arches="i386";# 3.
$ yum install fence-agents -y

检查目前的环境中是否还缺少哪些东西:

$ cobbler check# 重启服务并同步配置更新。
$ systemctl restart cobblerd
$ cobbler sync

制作 OS Distro(发行版)引导选项

定义和设置 OS 系统发行版本,包含了 OS 的内核、引导文件,以及安装包等内容,就相当于一个 Linux 操作系统的 ISO 镜像。如:多个发行版本,同一发行版不同版本号。

制作 CentOS7 的 OS Distro

  1. 制作 YUM 仓库源:
$ mkdir /mnt/centos7
$ mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-2003.iso /mnt/centos7
$ vi /etc/fstab
...
/root/CentOS-7-x86_64-Minimal-2003.iso /mnt/centos7 iso9660 defaults,loop 0 0
  1. 指定 YUM repo 来创建一个 OS Distro:
$ cobbler import --path=/mnt/centos7 --name=centos7 --arch=x86_64# 查看已经导入的系统
$ cobbler distro listcentos7-x86_64# 查看 Distro 配置
$ cobbler distro report
Name                           : centos7-x86_64
Architecture                   : x86_64
TFTP Boot Files                : {}
Breed                          : redhat
Comment                        :
Fetchable Files                : {}
Initrd                         : /var/www/cobbler/ks_mirror/centos7/images/pxeboot/initrd.img
Kernel                         : /var/www/cobbler/ks_mirror/centos7/images/pxeboot/vmlinuz
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart Metadata             : {'tree': 'http://@@http_server@@/cblr/links/centos7-x86_64'}
Management Classes             : []
OS Version                     : rhel7
Owners                         : ['admin']
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Template Files                 : {}$ ll /var/www/cobbler/ks_mirror/centos7
...
-rw-rw-r--. 1 root root    14 4月  20 2020 CentOS_BuildTag
drwxr-xr-x. 3 root root    35 4月  20 2020 EFI
-rw-rw-r--. 1 root root   227 8月  30 2017 EULA
-rw-rw-r--. 1 root root 18009 12月  9 2015 GPL
drwxr-xr-x. 3 root root    57 4月  20 2020 images
drwxr-xr-x. 2 root root   198 4月  20 2020 isolinux
drwxr-xr-x. 2 root root    43 4月  20 2020 LiveOS
drwxr-xr-x. 2 root root 28672 4月  21 2020 Packages
drwxrwxr-x. 2 root root  4096 4月  21 2020 repodata
-rw-rw-r--. 1 root root  1690 12月  9 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root  1690 12月  9 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root  2883 4月  21 2020 TRANS.TBL$ tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot
│   └── grub
│       └── menu.lst
├── elilo.efi
├── etc
├── grub
│   ├── efidefault
│   ├── grub-0.97-x86_64.efi
│   ├── grub-0.97-x86.efi
│   └── images -> ../images
├── images
│   └── centos7-x86_64
│       ├── initrd.img
│       └── vmlinuz
├── images2
├── memdisk
├── menu.c32
├── ppc
├── pxelinux.0
├── pxelinux.cfg
│   └── default
├── s390x
│   └── profile_list
└── yaboot

编写 KickStart 无人值守文件

CentOS-KVM

$ cd /var/lib/cobbler/kickstarts/
$ cp /root/anaconda-ks.cfg  centos7-kvm.cfg$ cat centos7.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
url --url=$tree# Use graphical install
reboot
text# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'# System language
lang en_US.UTF-8# Network information
#network  --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain# Root password
rootpw --iscrypted $6$SjBydDw0Xikc834h$X49cIZb66TZvw/g1chkoS9Jwd8c3Zk03TAPZTRIq.lHg7RWwVcmhyBEM5ms5YmGxu3gJPTbNQRKG1.x2Un.P7/# System services
services --enabled="chronyd"# System timezone
timezone Asia/Shanghai --isUtc --nontp# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda# Partition clearing information
zerombr
clearpart --all# Disk partitioning information
autopart%packages
@^minimal
@core
chrony
kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

CentOS7 BM

$ cd /var/lib/cobbler/kickstarts/
$ cp /root/anaconda-ks.cfg  centos7-bm.cfg$ vi centos7-bm.cfg#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
url --url=$tree# Use graphical install
text# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'# System language
lang en_US.UTF-8# Network information
network  --hostname=localhost.localdomain# Root password
rootpw --iscrypted $6$SjBydDw0Xikc834h$X49cIZb66TZvw/g1chkoS9Jwd8c3Zk03TAPZTRIq.lHg7RWwVcmhyBEM5ms5YmGxu3gJPTbNQRKG1.x2Un.P7/
user --name=fanguiju --password=$6$x76HMvL1SqK.qvZv$ZrBN18n1QO9nm7WWDI2vjngegQdXkQJoVmv7cNkn.s3WyzxURlS0Rw68f/My3B17r.A87Hl/JA.nROJZW052V0 --iscrypted --gecos="fanguiju"# System services
services --enabled="chronyd"# System timezone
timezone Asia/Shanghai --isUtc --nontp# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda# Partition clearing information
zerombr
clearpart --all# Disk partitioning information
autopart# Shutdown and power off the system after installation is finished
# to allow you to change the boot order or make other changes.
poweroff
# Alternatives are halt (default), reboot, and shutdown,
# which might not be suitable for unattended installations
#reboot%packages
@^minimal
@core
chrony
kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

关联 KS 文件到 Distro:

#
$ cobbler profile add \--name=centos7-x86_64 \--distro=centos7-x86_64 \--kickstart=/var/lib/cobbler/kickstarts/centos7.cfg
# --name 我们需要添加的启动菜单的名字
# --distro 我们自定制的 KS 文件关联的 OS 名称
# --kickstart 我们自定制的 KS 文件的路径# 查看对应的应答文件
$ cobbler profile listcentos7-x86_64# cobbler profile report
Name                           : centos7-x86_64
TFTP Boot Files                : {}
Comment                        :
DHCP Tag                       : default
Distribution                   : centos7-x86_64
Enable gPXE?                   : 0
Enable PXE Menu?               : 1
Fetchable Files                : {}
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : /var/lib/cobbler/kickstarts/centos7.cfg
Kickstart Metadata             : {}
Management Classes             : []
Management Parameters          : <<inherit>>
Name Servers                   : []
Name Servers Search Path       : []
Owners                         : ['admin']
Parent Profile                 :
Internal proxy                 :
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos                          : []
Server Override                : <<inherit>>
Template Files                 : {}
Virt Auto Boot                 : 1
Virt Bridge                    : xenbr0
Virt CPUs                      : 1
Virt Disk Driver Type          : raw
Virt File Size(GB)             : 5
Virt Path                      :
Virt RAM (MB)                  : 512
Virt Type                      : xenpv

测试

使用 VM 环境来进行测试。

Cobbler 自动装机系统相关推荐

  1. Cobbler自动装机服务搭建步骤

    Cobbler自动装机服务搭建步骤 1.1.导入epel源 2.安装Cobbler以及其相关服务软件包 各软件作用如下 3.修改cobbler主配置文件 4.启动相关服务并关闭防火墙和selinux ...

  2. 手动装机太麻烦?别慌Cobbler自动装机来帮你

    Cobbler自动部署装机 一.Cobbler自动装机 装机步骤 1.导入epel源 2.安装相关服务软件包 3.修改cobbler主配置文件 4.启动相关服务并关闭防火墙 5.检查Cobbler设置 ...

  3. cobbler批量装机系统centos 6.4下安装配置

    最近笔者研究cobbler批量装机系统. cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少. 这里就详细的介绍下笔者亲自经 ...

  4. CentOS7中搭建cobbler自动装机服务

    一.实验环境一台centos7epel源网址 https://fedoraproject.org/wiki/EPEL?rd=Epel使用nat模式 二.实验步骤 1.下载epel源后进行文件夹挂载到l ...

  5. Cobbler自动装机(装机步骤,优化内容详解,导入系统镜像步骤,cobbler-web管理认证方式)

    文章目录 前言 一:环境设置与安装 步骤 1.1:环境设置 1.2:安装信息库软件包 1.3:安装Cobbler环境 1.4:安装步骤 1.4.1:大致方向 1.4.2:cobbler工具配置(有工具 ...

  6. Cobbler——自动装机(内含详细操作过程)

    文章目录 前言 一:环境准备与详细安装过程 1.1:环境准备 1.2:安装信息库软件包 1.3:安装Cobbler环境 1.4:安装步骤 1.4.1:大致思路 1.4.2:cobbler工具配置(有工 ...

  7. Linux Cobbler自动部署装机

    Cobbler自动部署装机 一.实验准备 二.Cobbler自动装机服务搭建步骤 1.导入epel源 2.安装Cobbler以及其相关服务软件包 3.修改cobbler主配置文件 4.使用cobble ...

  8. 实验详解——Cobbler自动部署最小化安装

    实验详解--Cobbler自动部署最小化安装 一.实验:自动部署 二.Cobbler自动装机服务搭建步骤 1.导入epel源并加载在线安装源 2.安装Cobbler以及其相关服务软件包 3.修改cob ...

  9. Cobbler自动化装机服务详细介绍

    PS:本文为新手根据网络文章梳理而成,便于自己及网友更直观理解哈,参考文章见文末链接及小注标识,侵删 目录 PXE简介 kickstart简介 Cobbler简介 功能实现 一.PXE简介 PXE,就 ...

最新文章

  1. 小麦带你看postgres(代码模块结构)
  2. IOS多线程开发其实很简单
  3. mybatis与mysql调优_MySQL + mybatis的SQL优化方案
  4. 【Git笔记2】必知习惯和如何版本回退
  5. java split()方法_Java编程性能优化一些事儿
  6. 基于OGG Datahub插件将Oracle数据同步上云
  7. GridView 中 Bind和Eval的区别详解
  8. 羡慕,浙江大学的双 11 快递,全部由物流机器人配送
  9. Codeforces Round #511 (Div. 1) 题解
  10. matlab 计算图像的基本参数
  11. 【代码规范】Google C++开源风格指南
  12. Halcon开发环境和数据结构介绍——第1讲
  13. Eclipse ADT版本低的问题
  14. group + max函数_了解C ++中max()函数的工作方式
  15. jQuery 版本升级迁移
  16. OpenWrt使用IPV6+Aliddns实现远程管理路由
  17. 台湾--电话正则表达式
  18. 〖Python接口自动化测试实战篇②〗- 摒弃 ‘捉虫师’ 称号 - 你需要重新认识软件测试
  19. 对AWS的计费有点糊涂
  20. 宽带中KB与Kb的区别

热门文章

  1. html5 打气球小游戏,javascript开发打气球小游戏
  2. python rasterio库和gdal库匹配与冲突问题安装办法
  3. Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
  4. Android中GPUImage的简单使用
  5. 英语语法中的同位语和插入语
  6. python itchat教程_Python学习教程:教你用Python通过微信来控制电脑摄像头
  7. 关于日历点击跳转以及短信点击跳转到指定联系人界面的一些记录
  8. bitbucket搭建
  9. 小米微信自动加好友appium
  10. 极域课堂分发文件与一键开关机教程