[syslinux] Re: Problems with loading ramdisk under SYSLINUX 3.05

H. Peter Anvin hpa at zytor.com
Sun Jan 9 18:43:40 PST 2005


Petr Vandrovec wrote:
> Hello,
>   one of FreeDOS developers pointed out (in 
> http://www.vmware.com/community/thread.jspa?threadID=11324&messageID=109507&#109507) 
> that FreeDOS does not work under VMware when using ISOLINUX 3.0x.  After 
> looking at their ISO image I downloaded syslinux-3.05, and there seems 
> to be bad bug:
> 
>   You have this in kernel.inc:
> 
> su_code32start  resd 1                  ; 0214 Start of code loaded high
> su_ramdiskat    resd 1                  ; 0218 Start of initial ramdisk
> su_ramdisklen   equ $                   ; Length of initial ramdisk
> su_bsklugeoffs  resw 1                  ; 0220
> su_bsklugeseg   resw 1                  ; 0222
> su_heapend      resw 1                  ; 0224
> su_pad1         resw 1                  ; 0226
> su_cmd_line_ptr resd 1                  ; 0228
> su_ramdisk_max  resd 1                  ; 022C
> 
> But this puts su_ramdisklen at same address as su_bsklugeoffs, and so 
> all items after su_ramdisklen are 4 bytes off!
> 
> Due to this when memdisk from their ISO is loaded, runkernel.inc looks 
> at su_cmd_line_ptr instead of at su_ramdisk_max, finds 0 there, and so 
> loads image at 0 - 0x5A000 = 0xFFFA6000.  But there is no ram at 
> 0xFFFA6000, and so it does not quite work.
> 
> So in addition to the fixing su_ramdisklen in kernel.inc it would be 
> nice if you could verify whether su_ramdisk_max is not smaller than 
> su_ramdisklen, and refuse to load ramdisk when such situation happens.

Well, I actually have a check like that, but this fooled that check too.

*SIGH* so much for thinking I pushed out a known set of changes with 3.05.

What's getting pretty clear is that I can't be relied on to do proper 
testing by myself.  I could really use a set of formal QA volunteers.

	-hpa




More information about the Syslinux mailing list