Regid Ichira
2013-Sep-15 18:26 UTC
[syslinux] syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
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.
Ady
2013-Sep-15 20:14 UTC
[syslinux] syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
> 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. Regards, Ady.
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.
Apparently Analagous Threads
- syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
- syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
- syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
- syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more
- syslinux.exe, 5.01 on xp: Failed to load COM32 file, and more