[syslinux] syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more

Ady ady-sf at hotmail.com
Wed Sep 18 00:13:05 PDT 2013


> On Tue, Sep 17, 2013 at 09:57:26AM +0300, Ady wrote:
> > 
> > > On Sun, Sep 15, 2013 at 11:14:05PM +0300, Ady wrote:
> > > > 
> > > > > On Sun, Sep 15, 2013 at 04:31:09PM +0300, Ady wrote:
> > > > > > 
> > > > > > > Platform: MS XP
> > > > > > > 
> > > > > > >   1. cfg file:
> > > > > > > prompt   1
> > > > > > > timeout  150
> > > > > > > display  /downloadedPrograms/syslinux/syslinux.cfg
> > > > > > > 
> > > > > > > default  xp
> > > > > > > label  xp
> > > > > > >         com32  chain.c32
> > > > > > >         append hd0  1  ntldr=/ntldr
> > > > > > > label  de
> > > > > > >         com32  chain.c32
> > > > > > >         append hd0  2
> > > > > > > label  memtest
> > > > > > >         linux  memtest86+.bin
> > > > > > > label  hello
> > > > > > >         com32  hello.c32
> > > > > > > 
> > > > > > >   2. Installed by
> > > > > > > From xp cmd prompt:
> > > > > > >     c:\downloadedPrograms\syslinux\syslinux.exe --active     \
> > > > > > >            --directory /downloadedPrograms/syslinux/ --force \
> > > > > > >            --install --mbr c:
> > > > > > > The line, and the contniuation slashes, are for clarity.  In reality
> > > > > > > it was on a single line.
> > > > > > > 
> > > > > > >   3. Result:
> > > > > > > Got a boot: prompt after displaying the cfg file.  But:
> > > > > > > 
> > > > > > >     boot: xp
> > > > > > >     Failed to load COM32 file chain.c32
> > > > > > >     boot: memtest
> > > > > > >     Loading memtest86+.bin... ok
> > > > > > >     Booting kernel failed: Bad file number
> > > > > > >     boot: hello
> > > > > > >     Hello, world, from 0x001FA200! malloc return 0x001fb660
> > > > > > 
> > > > > >  I'd like to suggest a simple change that should ease the situation: 
> > > > > > change the location of SYSLINUX to
> > > > > >  c:\syslinux\ 
> > > > > > 
> > > > > > instead of having "c:\downloadedPrograms\syslinux\".
> > > > > > 
> > > > > > This suggestion means that:
> > > > > > 1_ all the files related to Syslinux (e.g. the cfg file, the c32 
> > > > > > modules...) should be located under "c:\syslinux\" (.c32 files should 
> > > > > > always match the same version of Syslinux being installed, and don't 
> > > > > > forget to use the lib*.c32 files.) - this should be your first step;
> > > > > > 
> > > > > > 2_ all relevant absolute paths (like the one used in your "display" 
> > > > > > directive in your cfg) shall be edited accordingly (or, 
> > > > > > alternatively, use relative paths);
> > > > > > 
> > > > > > 3_ The new suggested installation command would/should be:
> > > > > >   c:\syslinux\syslinux.exe --force --mbr --active /// 
> > > > > >               --directory /syslinux --install c: 
> > > > > > 
> > > > > > That's all one command. The "///" slashes are for clarity only.
> > > > > > 
> > > > > > The command shall be executed with administrator permissions.
> > > > > > 
> > > > > > Additionally, there is a chance that the specific version of Syslinux 
> > > > > > has some regression bug, so I would suggest trying with the latest 
> > > > > > official testing binaries. For Syslinux 6.xx, the official binaries 
> > > > > > are under respective directories ("/bios/", "/efi32/", "/efi64").
> > > > > > 
> > > > > 
> > > > > 
> > > > >   I am using 6.01 now.
> > > > > I tried with a c:\syslinux directory, instead of the longer path I 
> > > > > tried before.  It is worse then before.  After the syslinux copyright
> > > > > line, the disk activity led shines steadily.  But noting comes on the
> > > > > screen.  And nothing else happens.  Eventually I rebooted the machine.
> > > > > That experience happend several times, after I tried absolute and 
> > > > > relative paths for the display command.
> > > > >   I think your instructions tried to be most accurate.  Not leave
> > > > > something to chance.  I was trying to follow that in my tests.  I
> > > > > can't tell why for me, a dedicated c:\syslinux directory was behaving
> > > > > worse then my former, longer path, syslinux directory.
> > > >  
> > > > I could think of some potential reasons for such fail. For example, 
> > > > it is possible that version 6.01 has some bug regarding the DISPLAY 
> > > > directive (I have not tested this recently). Or perhaps some issue 
> > > > with chain.c32 and ntldr in Syslinux 6.01 (I have not tested this 
> > > > either).
> > > > 
> > > > Instead of trying (guessing) endless potential possibilities, I would 
> > > > suggest for you to use Syslinux 4.07 (with its corresponding c32 
> > > > files from the same version 4.07), with the same path and generic 
> > > > instructions I posted before.
> > > > 
> > > > Additionally, for testing purposes, I would suggest changing your 
> > > > DEFAULT directive to:
> > > >  DEFAULT hello 
> > > > 
> > > > With such default, you would at least know whether:
> > > > 1_ the SYSLINUX boot loader works;
> > > > 2_ after 15 seconds (according to your TIMEOUT directive), the simple 
> > > > hello.c32 module succeeds.
> > > > 
> > > > After the hello world message is shown and you are back in the boot 
> > > > prompt, you could manually enter "xp" in the Syslinux prompt. If your 
> > > > XP boots, then change back the DEFAULT directive. If, instead, XP 
> > > > doesn't boot, then you would know that the problem is related to the 
> > > > "xp" entry in the cfg file (or to ntldr itself), but you would also 
> > > > know that SYSLINUX itself boots. In other words, you would be able to 
> > > > narrow down the problem.
> > > > 
> > > 
> > > 
> > >   * 4.07 is slow. slow. slow. amazingly slow.
> > > After the syslinux copyright line, which came immediately, Nothing 
> > > seem to happen.  Disk activity light shines in full power, but I was
> > > sitting there, blering at the screen.  I almost gave up.  Then, after
> > > a long long time, the display command was obeyed.  After a delay,
> > > which is probably due to the timeout command, it seems there is a 
> > > cursor right at the beginning of the line after the boot: prompt.
> > > Which might be expected, bacause there is a default command.  Again
> > > I am sitting, blerring at the screen.  The whole thing is amazingly
> > > alow.  Eventually, the Hello world? comes.  To my surprise, without
> > > a from address, and without a malloc address that is different from
> > > the from address.  After the hello world greeting, the boot: prompt
> > > is back.  I think that was immediatelly after the greeting.  Manually
> > > entering xp got XP to boot.  I think that that, too, was reasonably 
> > > fast.
> > >   4.07 doesn't have, and I guess there is no need to, libcom32.c32
> > > libutil.c32 and friends.  I used the following syslinux.cfg:
> > >     prompt   1
> > >     timeout  150
> > >     display  /syslinux/syslinux.cfg
> > >     
> > >     default  hello
> > >     label  xp
> > >             com32  chain.c32
> > >             append hd0  1  ntldr=/ntl
> > >     label  de
> > >             com32  chain.c32
> > >             append hd0  2
> > >     label  memtest
> > >             linux  memtest86+.bin
> > >     label  hello
> > >             com32  hello.c32
> > >     
> > >   * 6.01 is slow. amazingly slow.  Approximately 5 mintues half way.
> > > Assuming I was too hastey to reboot in my previous test of 6.01, I
> > > tried 6.01 again.  With a c:\syslinux directory.  This time I have
> > > tried to measure against the wall clock.  Syslinux copyright line is
> > > instantenious.  In contrast, it took approximately 5 mintues to get
> > > the display command output.  In contrast to 4.07, hello.c32 output
> > > did have a malloc address issue.  And it took it a while to load.
> > > memtest was able to run.  Here, too, it took its time to load.  I was 
> > > able to boot into xp.  Once again, syslinux took its time loading it.
> > >   Up to now, syslinux working directory was c:\syslinux.  I tried
> > > once more with a working directory of c:\downloadedPrograms\syslinux.
> > > With that working directory, the output from the display command came
> > > after 2 minutes.  But there was a failure to load the *.c32 binaries.
> >  
> > I'd like to suggest not changing the subject (title) of the emails 
> > when there is no change in the main content subject, so it is easier 
> > to follow in the mailing list.
> > 
> 
>   I have changed it back.  I hope changing it back will not cause
> further difficulties.
> 
> > Regarding the delays in your system, it might be possible that you 
> > are having some other kind of problem; perhaps the HDD is showing 
> > sings of failure, or maybe its connection, or some BIOS settings,... 
> > or "something".
> > 
> 
>   I hope you are wrong about failure of the HD.  Even though it is an
> old laptop, I think I don't notice HD related issues when the OS is
> running.  The syslinux copyright line is coming fast.  When I
> overwrite the boot sectors with xp native boot loader, this slowness
> is gone.  Can't it be that syslinux suffer from memory leaks?  It does
> manage the memory, doesn't it?  6.01's hello.c32 does print a message
> about memory issue, where 4.07 does not.  The laptop bios doesn't have
> many options.  There fore, I think it is not a BIOS settings issue.
> 
> > Since the display directive seems to take too long in your system, 
> > you could comment out the DISPLAY directive (with "#"). If you need a 
> > remainder of the available labels from the Syslinux prompt, you can 
> > press the TAB key. There are other alternatives too.
> > 
> > The commented DISPLAY directive could be, for your case, "# DISPLAY 
> > syslinux.cfg" (using relative paths).
> > 
> 
>   Are there more alternatives beside commenting the display command?
>   I commented the display directive as you suggested.  It still takes
> a long time to get the boot prompt.  3 mintues, to be more precise.

 Commenting lines is for testing purposes, so to see the different 
results.
 If the time to get to the Syslinux prompt is (almost) the same with 
the DISPLAY directive and without it (or commented out), then we 
would conclude that the DISPLAY line is not part of the problem. 
OTOH, if the time to get to the boot prompt would be noticeably 
different, then we couldn't get to a definitive conclusion.

The fact that the initial Syslinux Copyright line shows up without 
delays while the boot prompt takes much longer (even when DISPLAY is 
commented out), might indicate "something". Unfortunately, I don't 
know what exactly that "something" is. Perhaps someone else does.

> This is an improvment compared to the 5 mintues when the display
> command was not commented.  But it is still bad.  The responsiveness
> of the tab key at the boot prompt is good.  However, loading the com32
> programs itself is still slow.  It took about 2 mintues to load xp 
> boot programs, where 2 minutes does not include my timeout 150 time.
> When I mistakingly type memtst and hit <enter>, it took long time to
> issue Loading memtst ..., or similar.  And more long time to decide
> that memtst can not be loaded.  It was faster to issue the 
> Loading memtest ... mssage, but still slow to actually run it.
> 

 Again, this slow responsiveness is strange to me. Others might be 
able to suggest potential problems.

> > BTW, you seem to have a typo in your append line for chain.c32. 
> > Hopefully, it is only in your email and not in your original cfg 
> > file.
> >
> 
>   What typo?  I don't see it.
> 

You wrote "ntldr=/ntl", instead of the correct filename.

> > Now that you know that Syslinux 4.07 at least boots up your system, 
> > you could change back to "DEFAULT xp" in your cfg file. You could 
> > even reduce your timeout directive.
> >
> 
>   I am used to this timeout.  I find it useful, and not excessive.
>  
 
 Again, this is for testing purposes. Setting back "DEFAULT xp" with 
a much lower TIMEOUT was intended to evaluate whether the boot 
process changes in any way (success?, slower?, faster?, other?).

> > I would also suggest checking your hardware, and video / display 
> > settings in your BIOS, just in case. The slowness you describe 
> > doesn't seem "normal", but perhaps it is just a coincidence or some 
> > strange problem not reported before.
> > 
> 
>   Like I wrote, the hardware, though it is old, seem to work.  There
> are no video / display settings in my BIOS.  I think the slowness is
> not due to a malware problem because syslinux is managing the machine
> when it is running.  Comparing the installed syslinux binaries to the 
> distributed ones show they are the same.  So there is less chance
> for a malware to chain to syslinux.  Does 6.01's hello.c32 message
> about address differences normal?  Is it expected that 4.07's 
> hello.c32 won't have that issue?
> 
 
 Regarding the behavior of hello.c32, those respective behaviors are 
expected for those respective versions.

 Regarding the comparison between official binaries and installed 
ones, c32 files and syslinux.exe should be the same, but ldlinux.sys 
should be different. If the latter is the same, then you have 
overwritten it, which is not what you want. This is the reason I 
previously mentioned that copying the Syslinux files to your 
"c:\syslinux\" directory shall be your first step, before executing 
syslinux.exe.

>   I still believe the amazingely slowness is a syslinux issue.
 
Well, chain.c32 was modified for Syslinux 5.xx, so its behavior might 
be different for 4.07. But the slow responsiveness of your system 
starts already in the Syslinux boot prompt, before chain.c32 is 
involved.

BTW, you haven't mentioned the details of your hardware (exact model, 
BIOS version,...).

Hopefully, someone else might have some additional suggestion for 
you.

Regards,
Ady.


More information about the Syslinux mailing list