How to do the multiple OS in a single Pxeboot server.
I want to boot different OS like Fedora, CentOS, RHEL in the client
I thought it is good to mention the whole setup I have which may contain interesting tricks.
It is possible to make separate directories within tftp root folder:
$ 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
Then change pxelinux.cfg/default
, pxelinux.cfg/CLIENT_MAC
or pxelinux.cfg/PORTION_OF_CLIENT_IP
For me, I used Ubuntu Netboot as template, So as you can see pxelinux.cfg/default
includes display_ubuntu/menu.cfg
which by itself includes display_ubuntu/text.cfg
which contains the main menu of Ubuntu boot:
Contents of pxelinux.cfg/default
include display_ubuntu/menu.cfg
default display_ubuntu/vesamenu.c32
prompt 0
timeout 0
Contents of 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
Contents of 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
Notes:
hello.boot
is a just tiny kernel, I used it for initial PXE tests.memdisk
is used as kernel to load (over PXE):
Raw floppy images: anax_bios_flash.img
and FDSTD.144
CD ISO images: slitaz-cooking.iso
and ubuntu_mini.iso
pxechain.com
used to chain load other PXE server.
pxechain.com
is available within syslinux-common
package starting from trusty (Thanks to @muru) or syslinux project archive under different filename pxechn.c32
.
All listed Linux distributions are loaded by same pxelinux.0
located on tftp root folder. The exception is with OpenBSD (which has BSD kernel), pxelinux.0
loads openbsd_3.9/pxeboot.0
, the PXE bootstrap coming with OpenBSD. It has its own configuration at etc/boot.conf
. (This method is called chain loading)
Contents of etc/boot.conf
set image openbsd_3.9/bsd
You can use include
instead of listing the whole menu in a single file, or may be chain menus to to keep the original advanced menus/options of each distribution.
pxechain.com
). Thank you I learned new thing from you. – user.dz Jul 07 '14 at 18:16pxechain.com
, while available in thesyslinux-common
package ofwheezy
andtrusty
, is not available in that package forprecise
. I hoped you might know of an alternative. Guess I'll upgrade to trusty. – muru Jul 07 '14 at 18:25