Ubuntu 环境下使用 Cobbler 配置 PXE 引导
一 环境与前提
- 一台 Ubuntu Server(建议 20.04/22.04),可访问互联网,具备 root 或 sudo 权限。
- 网络中存在 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/tftp 中 server_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 会生成对应的 distro 与 profile(可用 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。