The reason I am specifically looking for lilo mbr is that, it has the advantage of being able to boot directly from extended partition. Do you know if Syslinux's MBR code can do that or not?
The issue is that a MBR code (a "normal" one) has to do two things:
1) do some initializations
2) chainload the PBR of the active, primary partition in the MBR
The above is non-negotiable
To be picky - as I am - what you mean is not "extended partition" but rather "logical volume inside extended partition".
Now, a number of operating systems have a bootloader that can be invoked directly bypassing the PBR.
So, (it depends on the actual OS) it is entirely possible to have a MBR that chainloads a file independently from where it resides on disk, BUT - usually - this involves EITHER hardcoding in the MBR area the extents where this file is residing (AFAICT this is also what Lilo does/did) which makes it cumbersome to "port" it to a different disk (or creates havoc if the file is moved) OR having MBR code that exceeds the 512 bytes size.
The good news are that it is perfectly possible to boot chainloading the PBR of a logical volume inside extended partition BUT a number of OS's will need to "correct" the "sectors before" in the PBR data.
The full explanation is here:
Syslinux MBR code is "kosher", i.e. it is 512 bytes in size and loads the PBR of the active primary partition, than the PBR loads the Syslinux executable and this latter can chainload almost anything.
Grub4dos MBR is not "kosher" in the sense that it is larger than 512 bytes (it is actually 8192 bytes) but it loads grldr "directly" and from a booted instance of grldr you can chainload *anything*. Though nothing prevents from using an approach similar to Syslinux, a "normal" MBR and a PBR that invokes grldr.
The (lesser known) UMBR (still by Chenall, current maintainer of grub4dos together with Yaya) is 512 bytes in size and can boot a grldr (but the position of this file is hardcoded, so an "install" is needed).
The (half-@§§ed) MBR I made (from Syslinux/makebootfat original code) is 512 bytes in side and can boot *any* volume (be it primary or logical) but the position of this volume needs to be hardcoded (and can even be NOT any of the partition entries in the MBR or EMBR) so an "install" is needed (AND if a logical volume is used the "sectors before" need normally to be corrected).
I already gave you the references for these two:
The MBLDR is 512 bytes and allows choosing which volume to boot from (both primary and logical) at boot time:
(I seem to remember that - like the partnew function of grub4dos - it corrects the "sectors before" of logical volumes but it needs to be checked)