Pxeboot 多映像

Pxeboot 多映像

如何在单个 Pxeboot 服务器中运行多个操作系统。

我想在客户端启动不同的操作系统,如 Fedora、CentOS、RHEL

答案1

我认为有必要提一下我的整个设置,其中可能包含一些有趣的技巧。

  • 可以在 tftp 根文件夹内创建单独的目录:

    $ tree -L 2
    .
    ├── anax_bios_flash.img
    ├── clonezilla_20100623
    │   ├── filesystem.squashfs
    │   ├── initrd.img
    │   ├── parameters.txt
    │   └── vmlinuz
    ├── display_ubuntu
    │   ├── adtext.cfg
    │   ├── f10.txt
    │   ├── f1.txt
    │   ├── f2.txt
    │   ├── f3.txt
    │   ├── f4.txt
    │   ├── f5.txt
    │   ├── f6.txt
    │   ├── f7.txt
    │   ├── f8.txt
    │   ├── f9.txt
    │   ├── menu.cfg
    │   ├── po4a.cfg
    │   ├── prompt.cfg
    │   ├── splash0.png
    │   ├── splash1.png
    │   ├── splash.png
    │   ├── splash.xcf
    │   ├── stdmenu.cfg
    │   ├── text.cfg
    │   └── vesamenu.c32
    ├── etc
    │   └── boot.conf
    ├── FDSTD.144
    ├── hello.boot
    ├── memdisk
    ├── Notes.txt
    ├── openbsd_3.9
    │   ├── bsd
    │   ├── bsd.mp
    │   ├── bsd.rd
    │   └── pxeboot.0
    ├── ploplinux_4.0.0
    │   ├── boot.msg
    │   ├── bzimage
    │   ├── initrfs.gz
    │   ├── memtest
    │   ├── ploplinux
    │   ├── plpbt.bin
    │   ├── plpinstc.com
    │   ├── pluspacks
    │   ├── pxelinux.0
    │   ├── pxelinux.cfg
    │   └── readme.txt
    ├── pmagic_5.5
    │   ├── boot
    │   ├── bzImage
    │   ├── initramfs
    │   └── sample_pxelinux.cfg
    ├── pmagic_6.7
    │   ├── boot
    │   ├── bzImage
    │   └── initramfs
    ├── pxechain.com
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   ├── default
    │   └── default.backup
    ├── slitaz-cooking.iso
    ├── ubuntu_10.04
    │   ├── initrd.gz
    │   └── vmlinuz
    ├── ubuntu_mini.iso
    └── unattended_4.9
        ├── bzImage
        ├── default
        ├── initrd
        ├── menu.c32
        └── pxelinux.0
    
  • 然后改变pxelinux.cfg/defaultpxelinux.cfg/CLIENT_MAC或者pxelinux.cfg/PORTION_OF_CLIENT_IP

    对我来说,我使用 Ubuntu Netboot 作为模板,因此您可以看到其中包含pxelinux.cfg/defaultUbuntu启动主菜单:display_ubuntu/menu.cfgdisplay_ubuntu/text.cfg

    内容pxelinux.cfg/default

    include display_ubuntu/menu.cfg
    default display_ubuntu/vesamenu.c32
    prompt 0
    timeout 0
    

    内容display_ubuntu/menu.cfg

    menu hshift 7
    menu width 65
    menu margin 5
    
    menu title GNU/Linux Rescue Collection
    
    include display_ubuntu/stdmenu.cfg
    include display_ubuntu/text.cfg
    
    menu begin advanced
        menu title Advanced options
        label mainmenu
            menu label ^Back..
            menu exit
        include display_ubuntu/stdmenu.cfg
        include display_ubuntu/adtext.cfg
    menu end
    
    label help
        menu label ^Help
        config display_ubuntu/prompt.cfg
    

    内容display_ubuntu/text.cfg

    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
    

笔记:

  • hello.boot只是一个小内核,我用它来进行初始 PXE 测试。
  • memdisk用作内核加载(通过 PXE):

    原始软盘映像: anax_bios_flash.imgFDSTD.144

    CD ISO 映像: slitaz-cooking.isoubuntu_mini.iso

  • pxechain.com用于链式加载其他 PXE 服务器。

    pxechain.com可在syslinux-commontrusty 开始的包中使用(感谢 @muru)或syslinux 项目档案使用不同的文件名pxechn.c32

  • 所有列出的 Linux 发行版都由位于pxelinux.0tftp 根文件夹中的相同文件加载。OpenBSD(具有 BSD 内核)除外,pxelinux.0它加载openbsd_3.9/pxeboot.0OpenBSD 附带的 PXE 引导程序。它在 处有自己的配置etc/boot.conf。(此方法称为链式加载)

    内容etc/boot.conf

    set image openbsd_3.9/bsd
    
  • 您可以使用include而不是在单个文件中列出整个菜单,或者可以使用链式菜单来保留每个分布的原始高级菜单/选项。

相关内容