[syslinux] Structure of VBR in FAT32?
avi at deitcher.net
Sat Jan 6 09:34:21 PST 2018
> > Is the build process documented? Or am I just going to have to plod
> > the makefiles?
> I don't think so.
> > 1. Run installer
> > 2. Installer loads ldlinux.sys onto the filesystem (and copies
> > but irrelevant for now).
> > 3. Installer calculates which blocks in the filesystem contain
> > 4. Installer modifies first sector of ldlinux,sys to contain a list of
> > of the other locations of ldlinux.sys
> Almost. The blockmap MUST have at least one record in the first
> sector but the subsequent blockmap records may exist later. See
> "SectorPtrs" and "rl_checkpt_overflow". I believe 192 entries are
> currently allocated.
I will look at the code to try and get it. All of this basically is, "how
do we bootstrap a program that knows how to read FAT filesystem, when it
itself is on that filesystem and we don't know how to read it yet."
192 entries = 192 potential sectors for ldlinux.sys?
> > 5. Installer puts the first 512 bytes of ldlinux.bin into the boot sector
> ... by reading the existing VBR, modifying ONLY the bytes allowed for
> code, then writing the modified VBR back.
So as not to ruin the EBPB or signature, e.g.?
> > 6. Installer modifies code in VBR (a specific byte?) to indicate which
> > contains first 512 bytes of ldlinux.sys
> It's 8 bytes for a 64-bit address located at the labels "Sect1Ptr0"
> and "Sect1Ptr1". These are NOT at fixed offsets and might move based
> on revisions of diskboot.inc.
That works. I will read it.
> I'd suggest against trying to make a script to install.
I have been looking at trying to leverage the installation without the
installer. How did you know? :-)
If you do that, you'd need to have detailed knowledge of how some of these
> structures work and how they've changed over time.
That was what I was afraid of...
> extlinux lets the Linux kernel do all of the heavy lifting of
> installing the file then finding its blocks then performs the same
> modifications as syslinux does on FAT12/FAT16/FAT32. extlinux has
> less knowledge about ext2/ext3/ext4 and FAT12/FAT16/FAT32 file systems
> (basically 0 outside the FAT32 VBR format) than syslinux does about
"kernel do all of the heavy lifting", i.e. it doesn't actually try to
modify sectors and find blocks, but instead relies on the mounted
filesystem and driver? Ah, is *that* why extlinus requires the filesystem
to be mounted to run install?
Thanks again to both of you!
avi at deitcher.net
Follow me http://twitter.com/avideitcher
Read me http://blog.atomicinc.com
More information about the Syslinux