Pxeboot多个图像

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

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

我认为提到我可能包含有趣技巧的整个设置是件好事。

  • 可以在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_MACpxelinux.cfg/PORTION_OF_CLIENT_IP

    对我来说,我使用Ubuntu Netboot作为模板,所以你可以看到pxelinux.cfg/default包含display_ubuntu/menu.cfg ,它本身包含display_ubuntu/text.cfg ,其中包含Ubuntu启动的主菜单:

    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.iso ubuntu_mini.isoubuntu_mini.iso

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

    pxechain.comsyslinux-common软件包中可用,从trusty(感谢@muru)或syslinux项目归档开始,在不同的文件名pxechn.c32

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

    etc/boot.conf

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