一、前言:PXE 与 Cobbler 是什么?

PXE(Preboot eXecution Environment) 是一种网络引导技术,允许计算机在没有本地硬盘、光驱或 USB 的情况下,通过网络从服务器加载操作系统镜像并启动安装程序。它依赖于 DHCP、TFTP 和 HTTP/FTP/NFS 等协议协同工作。

Cobbler 是一个 Linux 安装服务器,它封装并自动化了 PXE 配置的复杂性,提供了 Web 管理界面,可以集中管理发行版、配置文件、系统模板和电源管理,极大简化了批量系统部署。

1.1 整体配置思路

搭建一个支持 CentOS 和 Ubuntu 系列的 PXE + Cobbler 服务器,其核心思路是:

  1. 基础服务层:在 Rocky Linux 9 服务器上部署并配置 DHCP、TFTP、HTTP 三大核心服务,为 PXE 启动提供网络、引导文件和镜像下载能力。
  2. 自动化管理层:集成 Cobbler,通过其 Web 界面和命令行工具,统一管理操作系统发行版(Distro)、安装配置文件(Profile/Kickstart/Preseed)和待安装的物理机/虚拟机(System)。
  3. 引导与部署层:配置 PXE 引导菜单,让客户端开机后能从网络启动,并自动选择对应的系统进行无人值守安装。

整个流程可以概括为:客户端 PXE 启动 → DHCP 分配 IP 并告知引导文件位置 → TFTP 下载引导文件(pxelinux.0, kernel, initrd)→ 通过 HTTP 从 Cobbler 服务器下载完整的系统镜像和自动应答文件 → 完成自动化安装。

1.2 相关资源与下载链接

在开始之前,请准备好以下资源:

注意:请根据你的网络环境选择合适的镜像源。对于生产环境,建议使用本地镜像或更快的国内镜像站。

本文将基于 Rocky Linux 9 最小化安装 环境,手把手教你搭建一个同时支持 CentOS 系列(如 CentOS 7/8 Stream, Rocky, Alma)Ubuntu 系列(如 20.04 LTS, 22.04 LTS) 的 PXE 服务器,并集成 Cobbler Web 界面。每个步骤都细化配置项和命令,讲解原理、易错点和验证方法,目标是让小白也能一次性成功。

二、环境准备与网络规划

2.1 服务器硬件与网络要求

  • 服务器:一台物理机或虚拟机,安装 Rocky Linux 9 Minimal。
  • 内存:建议 4GB 以上。
  • 磁盘空间:至少 50GB(用于存放多个系统镜像)。
  • 网络
    • 服务器需有静态 IP 地址。
    • 客户端与服务器需在同一局域网(VLAN)内,或 DHCP 中继配置正确。
    • 关键点:如果服务器有多网卡,务必确认 PXE 服务绑定在客户端能访问的那个网卡 IP 上。

2.2 安装 Rocky Linux 9 Minimal

从官网下载 Rocky Linux 9 镜像,选择 “Minimal Install”。安装时注意:

  • 配置静态 IP:例如 192.168.1.10/24,网关 192.168.1.1,DNS 8.8.8.8
  • 打开 SSH 服务,方便后续远程操作。
  • 设置主机名:如 pxe.cobbler.local

易错点:最小化安装默认不包含很多工具,后续需要手动安装。网络配置错误会导致后续所有服务无法被客户端访问。

三、基础服务安装与配置(DHCP、TFTP、HTTP)

PXE 启动流程:客户端开机 → DHCP 获取 IP 和引导文件位置 (next-server, filename) → TFTP 下载引导文件 (pxelinux.0, kernel, initrd) → 通过 HTTP/FTP/NFS 下载完整镜像文件进行安装。

3.1 更新系统并安装必要工具

# 1. 更新系统
sudo dnf update -y
2. 安装 EPEL 仓库(包含更多软件包)
sudo dnf install epel-release -y
3. 安装基础编译工具和依赖
sudo dnf groupinstall "Development Tools" -y
sudo dnf install vim wget net-tools tar gzip -y

3.2 配置防火墙和 SELinux(关键!)

# 1. 防火墙放行服务
sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --permanent --add-service=tftp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2. 配置 SELinux(生产环境建议仔细规划,实验环境可先放宽)
查看 TFTP 相关布尔值
sudo getsebool -a | grep tftp
允许 tftp 访问 home 目录(cobbler 默认存放路径)
sudo setsebool -P tftp_home_dir on
或者直接设置为 permissive 模式(重启后生效)
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
立即生效(无需重启)
sudo setenforce 0

原理与易错点:SELinux 和防火墙是小白最容易卡住的地方。TFTP 服务需要读写 /var/lib/tftpboot 目录,SELinux 默认策略会阻止,必须调整布尔值或关闭。务必在执行后续步骤前处理好。

3.3 安装并配置 DHCP 服务器

# 1. 安装 dhcp 服务器
sudo dnf install dhcp-server -y
2. 配置 dhcpd.conf
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup
sudo vim /etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd.conf 末尾添加以下配置(根据你的网络修改):

# 全局配置
authoritative;
ddns-update-style none;
ignore client-updates;
default-lease-time 600;
max-lease-time 7200;
子网声明
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
# PXE 关键配置:指定 TFTP 服务器地址和引导文件名
next-server 192.168.1.10;  # 你的 PXE 服务器 IP
filename "pxelinux.0";
}
# 3. 启动并设置开机自启
sudo systemctl start dhcpd
sudo systemctl enable dhcpd
4. 验证 DHCP 服务状态
sudo systemctl status dhcpd

验证步骤:在同一个网络下启动另一台客户端(设置为网络启动),查看其是否能从 DHCP 获取到 IP(192.168.1.100-200 范围内的地址)。也可以在服务器上查看日志:sudo tail -f /var/log/messages

易错点

  1. next-server 必须指向 PXE 服务器的正确 IP。
  2. 确保没有其他 DHCP 服务器(如家用路由器)冲突,否则客户端可能从错误服务器获取信息。
  3. filename 的路径是相对于 TFTP 根目录的,默认就是 pxelinux.0,不要加路径。

3.4 安装并配置 TFTP 服务器

# 1. 安装 tftp-server 和 syslinux(提供 pxelinux.0)
sudo dnf install tftp-server syslinux -y
2. 启用 tftp socket(Rocky Linux 9 使用 systemd 管理)
sudo systemctl enable tftp.socket
sudo systemctl start tftp.socket
3. 复制引导文件到 TFTP 根目录
sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/  # 菜单模块
sudo cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/ # 库文件
sudo cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/
4. 创建菜单目录
sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
5. 设置权限
sudo chmod -R 755 /var/lib/tftpboot/
sudo chown -R nobody:nobody /var/lib/tftpboot/  # 根据 tftp 运行用户调整

验证步骤:本地使用 tftp 客户端测试:sudo dnf install tftp -y,然后 tftp localhost,输入 get pxelinux.0。如果能下载,说明 TFTP 服务正常。

3.5 安装并配置 HTTP 服务器(用于提供镜像)

# 1. 安装 nginx(或 apache)
sudo dnf install nginx -y
2. 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
3. 创建镜像存放目录
sudo mkdir -p /usr/share/nginx/html/iso
4. 设置目录权限
sudo chmod -R 755 /usr/share/nginx/html/
sudo chown -R nginx:nginx /usr/share/nginx/html/
5. 验证 nginx 访问
curl http://localhost

如果看到 Nginx 欢迎页,说明 HTTP 服务正常。

3.6 细化各个配置文件(小白可直接复制粘贴)

为了让小白用户能够直接复制粘贴使用,这里提供完整的配置文件示例。请根据你的实际网络环境(IP地址、网段等)进行适当修改。

3.6.1 DHCP 服务器配置文件(/etc/dhcp/dhcpd.conf)
# /etc/dhcp/dhcpd.conf
# 全局配置
authoritative;
ddns-update-style none;
ignore client-updates;
default-lease-time 600;
max-lease-time 7200;
日志配置(可选)
log-facility local7;
子网声明 - 根据你的网络修改以下参数:
subnet: 你的网络网段,如 192.168.1.0
netmask: 子网掩码,如 255.255.255.0
range: DHCP 分配的 IP 范围
routers: 网关地址
domain-name-servers: DNS 服务器
next-server: PXE 服务器 IP(必须正确!)
filename: PXE 引导文件名
subnet 192.168.1.0 netmask 255.255.255.0 {
# DHCP 分配的 IP 地址范围
range 192.168.1.100 192.168.1.200;
# 网络配置
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "localdomain";
PXE 关键配置
next-server 192.168.1.10;  # 修改为你的 PXE 服务器 IP
filename "pxelinux.0";      # TFTP 根目录下的引导文件名
租约时间
default-lease-time 600;
max-lease-time 7200;
}
如果需要为特定 MAC 地址分配固定 IP(可选)
#host server01 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.150;
option host-name "server01";
#}

注意事项

  1. 192.168.1.0192.168.1.1192.168.1.10 替换为你实际的网络配置。
  2. next-server 必须指向 PXE 服务器的正确 IP 地址。
  3. 确保没有其他 DHCP 服务器冲突(如路由器自带的 DHCP)。
3.6.2 TFTP 服务器配置文件(/etc/xinetd.d/tftp)

在 Rocky Linux 9 中,TFTP 通常由 systemd socket 管理,但如果你需要传统 xinetd 配置:

# /etc/xinetd.d/tftp
service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot -c
    disable         = no
    per_source      = 11
    cps             = 100 2
    flags           = IPv4
}

关键参数说明

  • -s /var/lib/tftpboot:指定 TFTP 根目录
  • -c:允许创建新文件
  • disable = no:启用服务
3.6.3 Nginx 配置文件(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/pxe.conf)
# /etc/nginx/conf.d/pxe.conf
server {
    listen       80;
    server_name  _;
    root         /usr/share/nginx/html;
# 镜像文件访问
location /iso/ {
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
}
Cobbler 文件访问
location /cobbler/ {
alias /var/www/cobbler/;
autoindex off;
}
错误页面
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

配置说明

  • 确保 /usr/share/nginx/html 目录存在且有正确权限
  • autoindex on 允许浏览器直接查看目录内容,方便调试
  • Cobbler 文件通常存放在 /var/www/cobbler/,通过 Nginx 提供访问
3.6.4 Cobbler 主要配置文件(/etc/cobbler/settings)关键部分
# /etc/cobbler/settings
# 服务器配置
server: 192.168.1.10           # Cobbler 服务器 IP
next_server: 192.168.1.10      # PXE 引导服务器 IP(通常与 server 相同)
管理配置
manage_dhcp: 1                  # 1=由 Cobbler 管理 DHCP,0=手动管理
manage_dns: 0                   # 是否管理 DNS
manage_tftp: 1                  # 是否管理 TFTP
manage_rsync: 0                 # 是否管理 rsync
路径配置
webdir: /var/www/cobbler
pxe_just_once: 1                # 防止无限循环安装
default_password_crypted: "$1$random$X7g1cGZJ6Z5YJ6Z5YJ6Z5YJ6"  # 默认密码哈希
内核参数默认值
kernel_options:
ksdevice: bootif
lang: en_US.UTF-8
text: ~
仓库镜像配置
yum_post_install_mirror: 1
createrepo_flags: "-c cache -s sha"

配置后必须执行的命令

# 1. 重启 Cobbler 服务
sudo systemctl restart cobblerd
2. 同步配置(重要!)
sudo cobbler sync
3. 重启相关服务
sudo systemctl restart httpd
sudo systemctl restart dhcpd   # 如果 manage_dhcp: 1
4. 检查配置状态
sudo cobbler check
3.6.5 简单 Kickstart 文件示例(/var/lib/cobbler/kickstarts/centos7.ks)
# /var/lib/cobbler/kickstarts/centos7.ks
# 系统语言和键盘
lang en_US.UTF-8
keyboard us
timezone Asia/Shanghai --isUtc
网络配置
network --bootproto=dhcp --device=link --activate
network --hostname=localhost.localdomain
认证配置
auth --enableshadow --passalgo=sha512
rootpw --plaintext yourpassword   # 生产环境请使用加密密码
user --name=admin --password=yourpassword --iscrypted --groups=wheel
安装源
url --url="http://$server/cobbler/links/centos7-x86_64"
系统安装类型
text
skipx
firstboot --disable
eula --agreed
磁盘分区(根据实际情况调整)
zerombr
clearpart --all --initlabel
autopart --type=lvm
软件包选择
%packages
@^minimal
@core
vim-enhanced
wget
net-tools
%end
安装后脚本
%post
禁用防火墙(根据需求调整)
systemctl disable firewalld
systemctl stop firewalld
禁用 SELinux(根据需求调整)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
配置 SSH 允许密码登录
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd
更新系统
yum update -y
安装常用工具
yum install -y epel-release
yum install -y htop iftop iotop
echo "Installation completed at $(date)" >> /root/install.log
%end
重启系统
reboot

配置文件验证命令

# 检查 DHCP 配置语法
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
检查 Nginx 配置语法
sudo nginx -t
检查 Cobbler 配置
sudo cobbler check
验证 Kickstart 语法(需要 pykickstart)
sudo ksvalidator /var/lib/cobbler/kickstarts/centos7.ks

小白易错点提醒

  1. IP 地址一致性:确保所有配置文件中的 IP 地址(server、next-server、网关、DNS)都保持一致且正确。
  2. 文件权限:TFTP 和 HTTP 服务涉及的文件目录需要正确的权限(通常 755)。
  3. SELinux 上下文:如果启用 SELinux,确保相关目录有正确的安全上下文:sudo chcon -R -t tftpdir_rw_t /var/lib/tftpboot/
  4. 服务启动顺序:先启动基础服务(DHCP、TFTP、HTTP),再启动 Cobbler,最后执行 cobbler sync
  5. 配置文件备份:修改前先备份:sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup

将这些配置文件保存到对应路径后,记得重启相应服务并执行 sudo cobbler sync 使配置生效。

四、集成 Cobbler 实现 Web 化管理

4.1 安装 Cobbler 及其依赖

# 1. 启用 EPEL 和 Cobbler 仓库
sudo dnf install epel-release -y
sudo dnf install -y https://cobbler.github.io/releases/3.3.x/cobbler-release-3.3-1.el9.noarch.rpm
2. 安装 Cobbler 和 Web 界面 (cobbler-web)
sudo dnf install cobbler cobbler-web -y
3. 安装相关工具和插件
sudo dnf install fence-agents pykickstart debmirror -y
4. 启动 Cobbler 服务并设置开机自启
sudo systemctl start cobblerd httpd
sudo systemctl enable cobblerd httpd

4.2 配置 Cobbler

# 1. 运行 cobbler check 检查配置(会列出需要修复的问题)
sudo cobbler check

根据 cobbler check 的输出,逐一修复。常见问题及修复命令:

# 1. 修改 /etc/cobbler/settings 中的 server 和 next_server 为你的 IP
sudo sed -i "s/^server: .*/server: 192.168.1.10/" /etc/cobbler/settings
sudo sed -i "s/^next_server: .*/next_server: 192.168.1.10/" /etc/cobbler/settings
2. 生成一个用于 Cobbler Web 界面登录的密码(默认用户 cobbler)
sudo openssl passwd -1 -salt 'random-phrase-here' 'yourpassword' | tee /etc/cobbler/users.digest
将生成的哈希值复制,然后编辑 /etc/cobbler/users.conf
sudo vim /etc/cobbler/users.conf
添加或修改:cobbler:你的哈希值
3. 配置 DHCP 管理(如果想让 Cobbler 管理 DHCP)
编辑 /etc/cobbler/settings,设置 manage_dhcp: 1
sudo sed -i "s/^manage_dhcp: .*/manage_dhcp: 1/" /etc/cobbler/settings
然后配置 DHCP 模板
sudo vim /etc/cobbler/dhcp.template
根据你的网络修改 subnet、range 等参数,与之前手动配置的 dhcpd.conf 类似。
4. 同步配置
sudo cobbler sync

4.3 导入系统镜像(CentOS 与 Ubuntu)

原理:Cobbler 的 “import” 命令会将 ISO 镜像解压,提取内核、initrd 和文件树,并自动创建发行版(distro)、配置文件(profile)等对象。

# 1. 将下载好的 ISO 镜像放到 HTTP 目录下
# 例如 CentOS-7-x86_64-Minimal-2009.iso 和 ubuntu-22.04.3-live-server-amd64.iso
sudo cp /path/to/CentOS-7-x86_64-Minimal-2009.iso /usr/share/nginx/html/iso/
sudo cp /path/to/ubuntu-22.04.3-live-server-amd64.iso /usr/share/nginx/html/iso/
2. 挂载 ISO(以 CentOS 7 为例)
sudo mkdir -p /mnt/centos7
sudo mount -o loop /usr/share/nginx/html/iso/CentOS-7-x86_64-Minimal-2009.iso /mnt/centos7
3. 使用 cobbler import 导入
--name: 发行版名称
--path: 挂载点路径
--arch: 架构
sudo cobbler import --name=centos7 --path=/mnt/centos7 --arch=x86_64
4. 导入 Ubuntu(Ubuntu 镜像通常需要指定 --breed=ubuntu)
sudo mkdir -p /mnt/ubuntu2204
sudo mount -o loop /usr/share/nginx/html/iso/ubuntu-22.04.3-live-server-amd64.iso /mnt/ubuntu2204
sudo cobbler import --name=ubuntu2204 --path=/mnt/ubuntu2204 --arch=x86_64 --breed=ubuntu
5. 查看导入的发行版和配置文件
sudo cobbler distro list
sudo cobbler profile list

易错点

  • 镜像路径--path 必须是挂载后的路径,而不是 ISO 文件路径。
  • Ubuntu 的 breed:必须指定 --breed=ubuntu,否则会识别错误导致引导失败。
  • 网络速度:导入过程会复制文件,可能需要几分钟,请耐心等待。

4.4 配置 Kickstart/Preseed 自动安装文件

为了让安装全自动,需要为每个系统配置自动应答文件。

# 1. Cobbler 的 Kickstart 文件存放在 /var/lib/cobbler/kickstarts/
# 查看默认模板
ls /var/lib/cobbler/kickstarts/
2. 复制一个模板并修改(以 CentOS 7 为例)
sudo cp /var/lib/cobbler/kickstarts/sample.ks /var/lib/cobbler/kickstarts/centos7.ks
sudo vim /var/lib/cobbler/kickstarts/centos7.ks
3. 将 Kickstart 文件关联到 Profile
sudo cobbler profile edit --name=centos7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks
4. 对于 Ubuntu,需要 Preseed 文件
Cobbler 支持 preseed,可以放在相同目录,然后关联
sudo cobbler profile edit --name=ubuntu2204-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ubuntu2204.seed

验证步骤:使用 sudo cobbler profile report --name=centos7-x86_64 查看配置详情,确认 Kickstart 路径正确。

4.5 访问 Cobbler Web 界面

浏览器访问 http://你的服务器IP/cobbler_web,使用用户名 cobbler 和你设置的密码登录。

在 Web 界面中,你可以:

  • 可视化查看和管理 Distros、Profiles、Systems。
  • 编辑 Kickstart 文件。
  • 触发同步(Sync)。
  • 查看日志。

五、配置 PXE 引导菜单(整合 Cobbler 与手动菜单)

5.1 使用 Cobbler 生成 PXE 菜单

# Cobbler 同步时会自动生成 /var/lib/tftpboot/pxelinux.cfg/default
sudo cobbler sync

查看生成的默认菜单:cat /var/lib/tftpboot/pxelinux.cfg/default。它会包含所有你导入的 Profile。

5.2 自定义 PXE 菜单(可选)

如果你需要更个性化的菜单(比如添加本地启动、内存测试工具等),可以手动编辑 /var/lib/tftpboot/pxelinux.cfg/default 文件。

# 备份原始菜单
sudo cp /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.backup
编辑菜单文件
sudo vim /var/lib/tftpboot/pxelinux.cfg/default

一个自定义菜单示例:

DEFAULT menu.c32
PROMPT 0
TIMEOUT 300
ONTIMEOUT local
MENU TITLE PXE Boot Menu (Cobbler + Custom)
LABEL local
MENU LABEL ^Local Boot (Hard Disk)
LOCALBOOT 0
LABEL centos7-auto
MENU LABEL ^CentOS 7 - Automatic Installation
KERNEL /images/centos7-x86_64/vmlinuz
APPEND initrd=/images/centos7-x86_64/initrd.img ksdevice=bootif lang= text ks=http://192.168.1.10/cblr/svc/op/ks/profile/centos7-x86_64
LABEL ubuntu2204-auto
MENU LABEL ^Ubuntu 22.04 LTS - Automatic Installation
KERNEL /images/ubuntu2204-x86_64/linux
APPEND initrd=/images/ubuntu2204-x86_64/initrd.gz auto=true priority=critical url=http://192.168.1.10/cblr/svc/op/ks/profile/ubuntu2204-x86_64
LABEL memtest
MENU LABEL ^Memtest86+ (Memory Tester)
KERNEL /memtest/memtest

原理:PXE 菜单使用 SYSLINUX 的 menu.c32 模块渲染。每个 LABEL 对应一个启动项,KERNEL 指定内核文件路径(相对于 TFTP 根目录),APPEND 传递内核参数。

易错点

  • 路径错误:Cobbler 导入的镜像文件通常放在 /var/www/cobbler/images/ 下,但 TFTP 根目录是 /var/lib/tftpboot/。Cobbler 同步时会创建符号链接,确保路径正确。手动添加条目时,务必检查内核和 initrd 的实际路径。
  • 内核参数:不同发行版的内核参数差异很大。CentOS/RHEL 系列使用 ks 指定 kickstart 文件 URL;Ubuntu 使用 auto=trueurl 指定 preseed 文件。直接从 Cobbler 生成的菜单中复制是最稳妥的。
  • 菜单语法:注意缩进和空格,SYSLINUX 对格式敏感。

5.3 测试 PXE 引导

配置完成后,必须进行实际测试。

  1. 重启 Cobbler 相关服务sudo systemctl restart cobblerd httpd dhcpd(如果 Cobbler 管理 DHCP)。
  2. 同步配置sudo cobbler sync
  3. 客户端测试
    • 找一台支持 PXE 的物理机或虚拟机,在 BIOS/UEFI 中设置为网络启动优先
    • 开机后,它应该从 DHCP 获取 IP,然后加载 TFTP 中的 pxelinux.0,并显示你配置的引导菜单。
    • 选择对应的安装项(如 “CentOS 7 - Automatic Installation”),应该能进入自动化安装流程。

验证步骤与排错

  • 查看 TFTP 日志sudo journalctl -u tftp.socket -f,观察客户端是否成功下载了引导文件。
  • 查看 Cobbler 日志sudo tail -f /var/log/cobbler/cobbler.log,检查同步和任务执行情况。
  • 常见问题
    • 菜单不显示:检查 menu.c32ldlinux.c32 等模块文件是否已复制到 TFTP 根目录。
    • 获取 IP 失败:检查 DHCP 服务是否运行,防火墙是否放行,网络是否连通。
    • 下载内核超时:检查 TFTP 服务器 IP 和路径,以及 SELinux 策略。
    • 安装过程卡住:检查 HTTP 服务器能否访问,镜像路径和 Kickstart/Preseed 文件 URL 是否正确。

六、进阶配置与优化

6.1 配置电源管理(IPMI/iDRAC)

如果你需要远程控制服务器的电源(开机、关机、重启),Cobbler 可以与 fence-agents 集成。

# 1. 确保已安装 fence-agents(前面步骤已安装)
sudo dnf install fence-agents -y
2. 在 Cobbler Web 界面或命令行中添加电源管理设备
sudo cobbler system edit --name=my-server --power-address=192.168.1.50 --power-id=admin --power-pass=password --power-type=ipmilan
3. 测试电源控制
sudo cobbler system power --name=my-server --action=on

6.2 使用镜像仓库(Repository)

除了直接从 ISO 导入,Cobbler 可以配置在线或本地 YUM/APT 仓库,用于安装额外软件包。

# 添加一个 CentOS 7 基础仓库
sudo cobbler repo add --name=centos7-base --mirror=http://mirror.centos.org/centos/7/os/x86_64/ --arch=x86_64 --breed=yum
将仓库关联到 Profile
sudo cobbler profile edit --name=centos7-x86_64 --repos=centos7-base
同步仓库(下载元数据)
sudo cobbler reposync

6.3 系统模板与自动化部署

Cobbler 的 “System” 对象可以绑定特定的 MAC 地址、IP 地址和 Profile,实现完全自动化的指定设备部署。

# 添加一个系统,指定 MAC 地址和静态 IP
sudo cobbler system add --name=web-server-01 --mac=00:11:22:33:44:55 --ip-address=192.168.1.150 --profile=centos7-x86_64 --hostname=web01.example.com
同步配置使生效
sudo cobbler sync

当 MAC 地址为 00:11:22:33:44:55 的机器 PXE 启动时,Cobbler 会自动为其分配 IP 192.168.1.150,并使用 centos7-x86_64 这个 Profile 进行安装,安装完成后主机名为 web01.example.com

七、总结与后续维护

7.1 关键步骤回顾

  1. 基础服务:配置好 DHCP、TFTP、HTTP 服务,并处理好防火墙和 SELinux。
  2. Cobbler 集成:安装 Cobbler,导入 CentOS 和 Ubuntu 镜像,配置自动应答文件。
  3. 菜单配置:使用 Cobbler 自动生成或手动定制 PXE 引导菜单。
  4. 测试验证:实际用客户端进行 PXE 启动测试,确保全流程畅通。

7.2 日常维护命令

# 查看 Cobbler 状态
sudo cobbler status
同步配置(每次修改后必须执行)
sudo cobbler sync
重新导入某个发行版
sudo cobbler import --name=centos7 --path=/mnt/centos7 --arch=x86_64 --force
清理旧镜像和缓存
sudo cobbler reposync --only=this-repo
sudo cobbler cleanup

7.3 故障排查思路

  • PXE 启动失败:检查 DHCP next-serverfilename;检查 TFTP 服务与文件权限;检查防火墙。
  • Cobbler Web 无法访问:检查 httpd 服务;检查 SELinux 对 Web 目录的权限;检查 Cobbler 配置中的 server 地址。
  • 自动化安装失败:检查 Kickstart/Preseed 文件语法;检查 HTTP 服务器能否访问镜像文件;查看安装日志(客户端屏幕或 /var/log/anaconda//var/log/installer/)。

最后提醒:生产环境部署前,务必在隔离网络中进行充分测试。妥善备份配置文件(/etc/cobbler//etc/dhcp/dhcpd.conf/var/lib/tftpboot/pxelinux.cfg/)。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐