[syslinux] Using *Syslinux 6.02* on *BTRFS* volumes corrupts the superblock.
H. Peter Anvin
hpa at zytor.com
Wed Oct 16 09:00:03 PDT 2013
On 10/15/2013 01:40 PM, Raphael S Carvalho wrote:
> BTRFS file systems will be corrupted on 6.02 (mainstream) and some
> previous versions.
> DYNAMIC_DEBUG makes the core larger than the allowed.
> Even before its introduction, building Syslinux with DEBUG_PORT
> enabled would probably corrupt BTRFS images (IIRC) *if* ldlinux.sys
> surpasses the maximum allowed size.
> Besides, the installer isn't safe at all... The check could be easily
> made there to avoid overwriting BTRFS superblocks. It simply install
> ldlinux.sys blindly even when it could be done otherwise (Not good in
> my opinion).
> I compiled Syslinux with several options in order to analyze how the
> size of ldlinux.sys behaves. Follow the log:
> DYNAMIC_DEBUG DISABLED & DEBUG_PORT DISABLED: 60474 bytes
> DYNAMIC_DEBUG ENABLED & DEBUG_PORT DISABLED: 67114 bytes
> DYNAMIC_DEBUG DISABLED & DEBUG_PORT ENABLED: 65673 bytes
> DYNAMIC_DEBUG ENABLED & DEBUG_PORT ENABLED: 65774 bytes
> PS: ldlinux.sys can currently be at most 64000 bytes (ADV_SIZE: 512).
> PS: Strangely, '*DYNAMIC_DEBUG ENABLED* WITH *DEBUG_PORT DISABLED*'
> makes the core larger than with both options enabled.
> Any comments on the matter *or not =) * would be really appreciated.
> Raphael S. Carvalho
We should error out the build if ldlinux.sys is too large, this is
something that is in the works I believe. But yes, an extra check in
the installer would not be a bad thing.
With DEBUG_PORT disabled, the debug output goes to the primary console,
which requires a bit more code.
More information about the Syslinux