温馨提示×

ubuntu cobbler怎样实现多系统共存

小樊
35
2025-12-28 23:03:27
栏目: 智能运维

Ubuntu 上用 Cobbler 实现多系统共存的落地方案

一、架构与原理

  • 通过 PXE 引导,由 DHCP 下发 IP 与引导文件,TFTP 传输引导程序,Cobbler 托管镜像与菜单,配合 Kickstart/Preseed 实现无人值守安装,从而在同一环境中提供 Ubuntu、CentOS、Debian 等多系统的选择菜单与自动化部署。
  • 核心对象关系:Distro(发行版,内核与 initrd)→ Profile(关联 Kickstart/仓库/内核参数)→ System(绑定 MAC/IP/主机名,固定某系统给某主机)。一次导入可生成多个版本(如 Ubuntu 20.04/22.04),每个版本对应独立 Distro/Profile,菜单自动聚合。

二、部署步骤

  • 安装组件与启动服务
    • 在 Ubuntu 上安装:cobbler cobbler-web isc-dhcp-server tftpd-hpa xinetd apache2,并启动:cobblerd、isc-dhcp-server、tftpd-hpa、apache2。
  • 配置 DHCP 与 TFTP
    • DHCP(/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.100; }
    • TFTP(/etc/xinetd.d/tftp)确保:server_args = -s /var/lib/tftpboot;disable = no
  • 导入多个操作系统镜像
    • Ubuntu 22.04:
      • mkdir -p /mnt/ubuntu2204 && mount -o loop /path/to/ubuntu-22.04.iso /mnt/ubuntu2204
      • cobbler import --path=/mnt/ubuntu2204 --name=ubuntu-22.04 --arch=x86_64
    • CentOS 7:
      • mkdir -p /mnt/centos7 && mount -o loop /path/to/CentOS-7-x86_64.iso /mnt/centos7
      • cobbler import --path=/mnt/centos7 --name=centos7 --arch=x86_64
    • 导入后生成 Distro/Profile,可用 cobbler distro list、cobbler profile list 查看。
  • 为每个系统准备无人值守文件并关联
    • Ubuntu 使用 Preseed(.seed),CentOS 使用 Kickstart(.ks),示例要点:
      • Ubuntu 22.04 seed(/var/lib/cobbler/kickstarts/ubuntu-22.04.seed):
        • install;text;lang en_US.UTF-8;keyboard us;timezone Asia/Shanghai
        • rootpw --plaintext yourpassword(生产建议用 openssl passwd -6 生成哈希)
        • network --bootproto=dhcp --device=eth0 --onboot=yes
        • clearpart --all --initlabel;part / --fstype=ext4 --size=1 --grow
        • url --url=$tree;reboot
      • CentOS 7 ks(/var/lib/cobbler/kickstarts/centos7.ks):
        • install;lang en_US.UTF-8;keyboard us;timezone Asia/Shanghai
        • rootpw --plaintext yourpassword
        • network --bootproto=dhcp --device=eth0 --onboot=yes
        • clearpart --all --initlabel;part / --fstype=ext4 --size=1 --grow
        • url --url=$tree;reboot
    • 关联 Profile 与 Kickstart:
      • cobbler profile edit --name=ubuntu-22.04 --kickstart=/var/lib/cobbler/kickstarts/ubuntu-22.04.seed
      • cobbler profile edit --name=centos7 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks
  • 为指定主机固定系统(可选)
    • cobbler system add --name=ubuntu-client1 --profile=ubuntu-22.04 --mac=00:11:22:33:44:55 --ip-address=192.168.1.150 --subnet=255.255.255.0 --gateway=192.168.1.1 --hostname=ubuntu-client1
    • cobbler system edit --name=ubuntu-client1 --netboot-enabled=true
    • 同步生效:cobbler sync
  • 客户端验证
    • 在目标机 BIOS 设置 PXE 启动,启动后将看到 Cobbler 菜单,选择 Ubuntu 22.04CentOS 7 即可自动安装。

三、菜单定制与默认项

  • 菜单与默认行为由 PXELINUX 模板控制,可编辑:/etc/cobbler/pxe/pxedefault.template,调整菜单顺序、超时、默认项(如设置默认安装 Ubuntu 22.04)。修改后执行 cobbler sync 使菜单生效。

四、Windows 多系统简要思路(可选)

  • 通过 WinPE + Samba 实现网络安装:定制 WinPE 引导(注入 Cobbler 相关组件),将 Windows ISO 共享至 Samba(如 /var/www/cobbler/images/win10),在 Cobbler 中导入 WinPE 镜像并配置菜单项,客户端 PXE 引导 WinPE 后按应答文件或脚本进行无人值守安装。该方式适合批量部署 Windows 10/Server

五、关键注意事项与排错

  • 基础配置校验
    • 在 /etc/cobbler/settings 中设置:server(Cobbler 服务器 IP)、next_server(TFTP 地址,通常与 server 一致);执行 cobbler check 逐项修复提示。
  • 引导文件与加载器
    • 执行 cobbler get-loaders 下载 PXE 加载器(如 pxelinux.0、menu.c32 等),或确保系统已安装 syslinux 并放置到 /var/lib/cobbler/loaders
  • 镜像与权限
    • 导入 ISO 前校验 MD5/SHA256;确保 /var/lib/tftpboot 与镜像目录权限正确(如 tftp:tftp)。
  • 每次变更后执行 cobbler sync,使 DHCP、TFTP、菜单与镜像生效。
  • 若使用独立 DHCP,注意 next-server 必须指向 Cobbler 服务器 IP,且 DHCP 与 TFTP 服务已启动并可达。

0