温馨提示×

Ubuntu Cobbler如何配置PXE引导

小樊
39
2025-11-15 14:44:49
栏目: 智能运维

Ubuntu 环境下使用 Cobbler 配置 PXE 引导

一 环境与前提

  • 一台 Ubuntu Server(建议 20.04/22.04),可访问互联网,具备 rootsudo 权限。
  • 网络中存在 DHCP/TFTP 可达的网段;客户端需支持 PXE 启动并在 BIOS 中启用网络启动。
  • 准备 Ubuntu Server ISO(如 20.04/22.04),以及用于自动化的 Kickstart 文件(可选)。

二 安装与基础配置

  • 安装必要组件(含 cobbler-web 可选):
    • sudo apt update
    • sudo apt install -y cobbler cobbler-web dhcp3-server tftpd-hpa xinetd
  • 启动服务并设置开机自启:
    • sudo systemctl enable --now cobblerd xinetd
  • 基本配置(编辑 /etc/cobbler/settings):
    • 设置 server 为 Cobbler 服务器 IP(所有客户端可达)。
    • 设置 next_server 为 TFTP 地址(通常与 server 一致)。
    • 建议设置 pxe_just_once: 1(首次 PXE 引导后不再重复进入安装菜单)。
    • 生成并替换 default_password_crypted(示例:openssl passwd -1 生成),用于安装阶段 root 默认密码。
    • 可选:设置 manage_dhcp: 1 交由 Cobbler 管理 DHCP(若由外部 DHCP 提供,则保持 0 并在外部 DHCP 配置 PXE 选项)。
  • 获取网络引导文件并校验:
    • sudo cobbler get-loaders(下载 pxelinux.0、menu.c32 等)
    • sudo cobbler check(按提示逐项修复)
    • sudo cobbler sync(使配置生效)

三 配置 DHCP 与 TFTP

  • 方案 A(外部 DHCP,推荐与现有网络集成)
    • 在现有 DHCP 服务器添加 PXE 选项(示例为 isc-dhcp-server/etc/dhcp/dhcpd.conf):
      • subnet 192.168.1.0 netmask 255.255.255.0 {
        • range 192.168.1.100 192.168.1.200;
        • option routers 192.168.1.1;
        • option domain-name-servers 8.8.8.8, 8.8.4.4;
        • filename “pxelinux.0”;
        • next-server 192.168.1.2;
        • }
    • 指定监听接口(编辑 /etc/default/isc-dhcp-server):
      • INTERFACESv4=“eth0”(替换为你的网卡名)
    • 重启 DHCP:sudo systemctl restart isc-dhcp-server
  • 方案 B(由 Cobbler 管理 DHCP)
    • 编辑 /etc/cobbler/dhcp.template,添加你的子网、地址池、网关、DNS 等,例如:
      • subnet 192.168.52.0 netmask 255.255.255.0 {
        • range dynamic-bootp 192.168.52.100 192.168.52.254;
        • option routers 192.168.52.1;
        • option domain-name-servers 192.168.52.1;
        • }
    • /etc/cobbler/settings 中将 manage_dhcp: 1,然后执行 cobbler sync 自动分发 DHCP 配置。
  • TFTP 配置(确保 tftpd-hpa/xinetd 正常运行)
    • 确认 /etc/xinetd.d/tftpserver_args 指向 /var/lib/tftpboot(或你的 tftp 根目录),如:
      • server_args = -s /var/lib/tftpboot
    • 重启服务:sudo systemctl restart xinetd
    • 注意:Cobbler 的 next_server 必须与 TFTP 服务所在主机 IP 一致,否则客户端无法下载引导文件。

四 导入镜像与创建 Profile

  • 挂载并导入 Ubuntu ISO(示例 ISO 位于 /tmp/ubuntu-20.04.iso):
    • sudo mount -o loop /tmp/ubuntu-20.04.iso /mnt
    • sudo cobbler import --path=/mnt --name=ubuntu-20.04
    • 导入完成后,Cobbler 会生成对应的 distroprofile(可用 cobbler distro list / cobbler profile list 查看)。
  • 创建或编辑 Kickstart(示例 /var/lib/cobbler/kickstarts/ubuntu-20.04.seed),并在 profile 中关联:
    • 示例(仅示意关键项):
      • d-i debian-installer/locale string en_US.UTF-8
      • d-i keyboard-configuration/xkb-keymap select us
      • d-i netcfg/choose_interface select auto
      • d-i mirror/country string manual
      • d-i mirror/http/hostname string $server
      • d-i mirror/http/directory string /cobbler/ks_mirror/ubuntu-20.04
      • d-i mirror/http/proxy string
      • d-i live-installer/net-image string http://$server/cobbler/images/ubuntu-20.04/install/netboot/ubuntu-installer/amd64/linux
      • d-i partman-auto/method string regular
      • d-i partman-auto/choose_recipe select atomic
      • d-i partman-partitioning/confirm_write_new_label boolean true
      • d-i partman/confirm_write_new_label boolean true
      • d-i partman/confirm_nooverwrite boolean true
      • d-i partman/choose_partition select finish
      • d-i partman/confirm boolean true
      • d-i pkgsel/include string openssh-server
      • d-i pkgsel/upgrade select none
      • d-i grub-installer/only_debian boolean true
      • d-i grub-installer/with_other_os boolean true
      • d-i finish-install/reboot_in_progress note
    • 关联 Kickstart 到 profile:
      • sudo cobbler profile edit --name=ubuntu-20.04-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ubuntu-20.04.seed
    • 同步配置:sudo cobbler sync。

五 客户端引导与常见问题

  • 客户端操作
    • 在目标主机 BIOS 中启用 PXE/Network Boot,从网络启动。
    • 出现 Cobbler 菜单后选择对应的 profile(如 ubuntu-20.04-x86_64)开始自动化安装;若配置了 Kickstart,将全程无人值守。
  • 常见问题排查
    • 客户端停在 “TFTP …” 或 “PXE-M0F”:检查 next_server 是否为 TFTP 主机 IP,DHCP filename 是否为 pxelinux.0,以及 TFTP 是否运行且根目录正确。
    • cobbler check 提示缺少 loader:执行 cobbler get-loaders 或安装 syslinux 并复制 pxelinux.0、menu.c32 等到 /var/lib/cobbler/loaders
    • 导入镜像后找不到 profile:确认 cobbler import 成功,使用 cobbler profile list 查看实际名称(通常带 -x86_64 后缀)。
    • 安装阶段无法访问安装源:确认 $server 可解析且 /cobbler/ks_mirror/ubuntu-20.04 已发布(由 import 自动同步),Kickstart 中 mirror/http/hostname$server 一致。
    • 需要按主机定制(IP、网关、主机名等):使用 cobbler system add 指定 –mac–ip–gateway–name 等,再 cobbler sync

0