FS#50547 - [syslinux] Failed to find ldlinux.c32

Attached to Project: Arch Linux
Opened by Philipp (hollunder) - Sunday, 28 August 2016, 14:18 GMT
Last edited by Doug Newgard (Scimmia) - Monday, 29 August 2016, 13:49 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To No-one
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
My Laptops HD was about to die, so I replaced it and decided to install Arch from scratch (after four or five years).
The old installation used syslinux and it worked fine, so I went with GPT and syslinux once more.
I installed syslinux according to the instructions on the wiki and it failed because it could not find ldlinux.c32.
I tried it with the script and also the manual method, same result.
syslinux could only find ldlinux.c32 if I put it in the root directory, but then I also needed to put the syslinux.conf and a lot of other files into the rot directory. That is clearly not how it should work. According to documentation syslinux should check /boot/syslinux followed by /boot, followed by /.
When I did that, I got the menu, but it would not boot. What the error was I can not tell because it immediately showed the menu again instead of an error message. I am rather sure that the boot partition was correct.
No idea what the problem was, since the setup was pretty much the same as last time and about as simple as possible, with GPT and a single ext4 partition.
I gave up at that point and switched to grub2.

Additional info:
* package version(s)
core/syslinux 6.03-6
This task depends upon

Closed by  Doug Newgard (Scimmia)
Monday, 29 August 2016, 13:49 GMT
Reason for closing:  Not a bug
Additional comments about closing:  Config issue
Comment by userwithuid (userwithuid) - Sunday, 28 August 2016, 19:00 GMT
I'm assuming you successfully wrote the MBR (440 bytes gptmbr.bin to the raw disk you want to boot from) and the VBR (extlinux --install $wherever). The install script selects the partition that is providing /boot/syslinux as target afaik. This directory will then contain ldlinux.sys (which may not be moved!), find that on your system (should normally simply be /boot/syslinux/ldlinux.sys). That is where you can put the bios ldlinux.c32, other modules you need/want and your syslinux.cfg (containing your kernel boot configs) and syslinux will find it.

So where is your ldlinux.sys (what disk/partition/filesystem/mounted dir)?
Comment by Philipp (hollunder) - Sunday, 28 August 2016, 19:26 GMT
Yep, I did that, I followed https://wiki.archlinux.org/index.php/Syslinux.
All the syslinux modules were in /boot/syslinux.
As far as I can tell syslinux was using the correct directory, up to Stage 2 : Part 2 according to this: https://wiki.archlinux.org/index.php/Syslinux#Boot_process_overview. And then it decided to look in / only.
I tried 'syslinux-install_update -i -a -m'.
I tried 'extlinux --install /boot/syslinux/'.
Same result.
Comment by Doug Newgard (Scimmia) - Sunday, 28 August 2016, 20:29 GMT
Did you ever set the legacy bootable flag on the partition?

This is almost certainly a configuration issue.
Comment by glavin lewis (Glavin) - Monday, 29 August 2016, 05:12 GMT
Did you disable 64bit volume support when creating the filesystem?
http://www.syslinux.org/wiki/index.php?title=Filesystem#ext

If you want to use syslinux, then reformat with -O ^64bit or just settle with grub.
Note: You might want to make sure that the '64bit' feature is actually enabled with this command dumpe2fs -h /dev/sdXY before wiping your partition.


Comment by Philipp (hollunder) - Monday, 29 August 2016, 07:30 GMT
I did set the legacy boot flag.
I did not disable the 64 bit feature, so that likely was the problem. I see that there is a not on the wiki page but it is not very clear what this is about. I tried to clarify the warning a bit.

Loading...