在 PXE 服务器上托管多个 Linux 发行版并向 PXE 客户端显示这些选择

在 PXE 服务器上托管多个 Linux 发行版并向 PXE 客户端显示这些选择

PXE 服务器 - CentOS 6.5 64 位
目标 - 客户端应在网络启动菜单中看到操作系统选择 - Oracle Linux 6.5、RHEL 7、Ubuntu 14。选择后,应继续进行所选操作系统安装。

答案1

您可以通过 TFTP 通过网络引导 grub。然后,grub 可以按照通常的方式显示下一个要启动的选项菜单。这些选择可以是各种操作系统安装程序。 grub 也可以通过 TFTP 加载所选的操作系统安装程序。

我知道 Debian(和 Ubuntu)安装程序可以作为单个独立的 Linux 内核 + initramfs (initrd) 组合启动。这是最简单的,因为 grub 可以以简单的方式(menuentry使用linux和指令)引导它initrd,并且您不需要安排安装程序来访问其他任何内容。可能其他发行版的安装程序是类似的。

有一些注意事项这里设置 grub 通过带有 EFI 的 TFTP 启动。通过搜索可以轻松找到更多文档。基本上,它可以归结为配置 DHCP 服务器并将正确的文件放在 TFTP 服务器上。 DHCP 服务器配置文件和 TFTP 服务器根目录的位置因操作系统而异。

  • DHCP 服务器需要向客户端提供启动文件名作为 DHCP 选项。这是任何网络启动的标准。引导文件名指向位于包含 grub 的 TFTP 服务器上的文件名。

  • 对于 grub 映像,您可以使用捆绑的独立映像(在前面引用的页面上制作映像的说明),bootx64.efi或者仅使用 grub 核心core.efi。在后一种情况下,grub 在运行时需要从 TFTP 服务器单独加载其他模块及其配置文件。

  • grub.cfg应该是一个普通的 grub 配置文件,您可以在其中将内核和 initrd 的路径名指定为(tftp)/path/to/the/object.当然,您将在 TFTP 服务器上为不同操作系统安装程序的内核和 initrd 指定不同的名称。

答案2

pxelinux.0是来自 syslinux 项目的 Linux 通用 PXE 引导加载程序。您可以pxelinux.0对您拥有的所有 Linux 发行版使用 single 。您唯一需要做的就是更新 PXE 配置pxelinux.cfg/defaultpxelinux.cfg/CLIENT_MAC或者pxelinux.cfg/PORTION_OF_CLIENT_IP根据您的设置进行更新。

你可以:

  • 连锁菜单,见pmagic_advanced条目
  • 链 PXE 加载程序,请参阅openbsd条目(据我所知,Linux PXE 引导加载程序无法引导 BSD 内核)
  • 链 TFTP 服务器,请参阅pxeserver2条目
  • 放到第一个硬盘启动,您可以从syslinux菜单(live USB)或isolinux菜单(live CD)复制它,它们属于同一项目,并使用相同的语法进行启动配置。

我的例子pxelinux.cfg/default

DEFAULT partedmagic_6.7

LABEL test_kernel
    MENU LABEL ^Test Kernel
    KERNEL hello.boot

LABEL partedmagic_6.7
    LINUX pmagic_6.7/bzImage
    INITRD pmagic_6.7/initramfs
    APPEND edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256

LABEL partedmagic_5.5
    MENU LABEL PartedMagic 5.5
    LINUX pmagic_5.5/bzImage
    APPEND initrd=pmagic_5.5/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 loglevel=0 max_loop=256

menu begin pmagic_advanced
        menu title PartedMagic 5.5 Advanced
        label mainmenu
                menu label ^Back..
                menu exit
        include /pmagic_5.5/boot/syslinux.cfg
menu end

LABEL clonezilla_20100623
    MENU LABEL ^CloneZilla 2010.06.23
    KERNEL clonezilla_20100623/vmlinuz
    APPEND initrd=clonezilla_20100623/initrd.img boot=live union=aufs noswap noprompt vga=788 ocs_live_keymap=NONE ocs_lang=en_US.UTF-8 fetch=tftp://192.168.10.123/clonezilla_20100623/filesystem.squashfs

LABEL unattended_4.9
    MENU LABEL Unattended 4.9 for ^XP
    KERNEL unattended_4.9/bzImage
    APPEND initrd=unattended_4.9/initrd z_path=\\192.168.10.123\install_4.9

LABEL slitaz
    MENU LABEL ^Slitaz.iso
    TEXT HELP
Testing boot from iso.
    ENDTEXT 
    KERNEL memdisk
    APPEND initrd=slitaz-cooking.iso

LABEL mini_ubutnu
    MENU LABEL Mini-Ubuntu
    KERNEL memdisk
    APPEND initrd=ubuntu_mini.iso

LABEL freedos_std
    MENU LABEL ^FreeDOS STD
    TEXT HELP
Testing boot from Floppy IMG.
    ENDTEXT 
    KERNEL memdisk
    APPEND initrd=FDSTD.144

LABEL anax_bios_flash
    MENU LABEL Anax Bios Flash
    KERNEL memdisk
    APPEND initrd=anax_bios_flash.img

LABEL openbsd
    MENU LABEL ^OpenBSD 3.9
    KERNEL openbsd_3.9/pxeboot.0

LABEL plop_4.0.0
    MENU LABEL PlopLinux 4.0.0
    KERNEL ploplinux_4.0.0/bzimage
    APPEND initrd=ploplinux_4.0.0/initrfs.gz vga=1 nfsmount=192.168.10.123:/media/gnu_files/_servers/tftp/ploplinux_4.0.0/ploplinux

LABEL ubuntu_10.04_install
        menu label ^Ubuntu 10.04 net install
        kernel ubuntu_10.04/vmlinuz
        append vga=normal initrd=ubuntu_10.04/initrd.gz -- quiet

LABEL ubuntu_10.04_cli
        menu label Ubuntu 10.04 ^command-line net install
        kernel ubuntu_10.04/vmlinuz
        append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu_10.04/initrd.gz -- quiet

LABEL pxeserver2
        menu label Switch to 2nd PXE server...
        kernel pxechain.com
        append 192.168.10.254::pxelinux.0

参考: AskUbuntu:Pxeboot 多映像

相关内容