Jump to content











Photo
- - - - -

generic chainloading syslinux?


  • Please log in to reply
4 replies to this topic

#1 mr_

mr_

    Frequent Member

  • Members
  • 355 posts
  •  
    Germany

Posted 07 February 2009 - 11:16 PM

How I can chainload syslinux with grub4dos?

The only way I currently know is to write syslinux into a Volume Boot Record and to store it later into a file, this can be used as chainloder. But this is not an generic solution, each time the partitions change (or harddisk changes) the extracted syslinux.bin bootsector is no longer valid.

Is there a more generic solution? Like I can chainload kernel.sys on any FAT partition?

I have tested
title ldlinux.sys - chainloader

chainloader /ldlinux.sys

and
title ldlinux.sys - kernel

kernel /ldlinux.sys
it was unfortunately not working.

#2 tinybit

tinybit

    Gold Member

  • Developer
  • 1173 posts
  •  
    China

Posted 08 February 2009 - 06:08 AM

How I can chainload syslinux with grub4dos?

The only way I currently know is to write syslinux into a Volume Boot Record and to store it later into a file, this can be used as chainloder. But this is not an generic solution, each time the partitions change (or harddisk changes) the extracted syslinux.bin bootsector is no longer valid.

Is there a more generic solution? Like I can chainload kernel.sys on any FAT partition?

I have tested

title ldlinux.sys - chainloader

chainloader /ldlinux.sys

and
title ldlinux.sys - kernel

kernel /ldlinux.sys
it was unfortunately not working.


unfortunately ldlinux can hardly be chainloaded by other bootloaders such as grub4dos, though isolinux.bin has been successfully chainloaded by grub4dos, in which case isolinux.bin must reside in a cdrom or virtual cdrom(that means, isolinux.bin on floppy or harddisk will not work).

#3 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1682 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 26 March 2009 - 04:16 AM

Working on a SYSLINUX patch. Check back soon. Efforts initiated by icecube, in order to expand the options available to UBCD users.

#4 Icecube

Icecube

    Gold Member

  • Team Reboot
  • 1063 posts
  •  
    Belgium

Posted 26 March 2009 - 05:26 AM

Tinybit,
If you use root (hd1,2), which registers, with which values are passed to the bootsector?

I need to know it, so a modiefied ldlinux.bin will be able to determine the hard disk and partition from which it is booted.

As far as I get it, the hard disk number should be passed in DL.
For getting the right partition something needs to be stored or be accessible with the DS:SI registries.

I think this is already implemented in grub4dos. Can you confirm this?

#5 tinybit

tinybit

    Gold Member

  • Developer
  • 1173 posts
  •  
    China

Posted 26 March 2009 - 06:37 AM

If you use root (hd1,2), which registers, with which values are passed to the bootsector?


If the boot sector is a normal 512 byte one, only DL=0x81 is passed to.

If the boot file is NTLDR, IO.SYS, then DL=0x81, DH=0x02 will be passed to.

However, if you have specified --edx=... or --ebx=... in the chainloader command-line, then the specified value will be passed to boot sector, even if it was a normal 512 byte boot sector.

Other registers should be considered undefined.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users