Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 2014 13:05:32 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        Nathan Whitehorn <nwhitehorn@freebsd.org>, "Matthew D. Fuller" <fullermd@over-yonder.net>
Subject:   Re: Boot loader too large
Message-ID:  <201407151305.32820.jhb@freebsd.org>
In-Reply-To: <20140711225043.GH50976@over-yonder.net>
References:  <CANuCnH9K_wSPkgrAzujDG5M72Uvuvj0ooNN%2BFFLUCFsvv6b7Ow@mail.gmail.com> <53C06780.8010702@freebsd.org> <20140711225043.GH50976@over-yonder.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, July 11, 2014 6:50:43 pm Matthew D. Fuller wrote:
> On Fri, Jul 11, 2014 at 03:38:56PM -0700 I heard the voice of
> Nathan Whitehorn, and lo! it spake thus:
> >
> > I don't honestly remember where that number came from. It's at line
> > 72 of usr.sbin/bsdinstall/partedit/partedit_x86.c. If 128 works
> > better, I'm happy to change it, but it would be nice to know what
> > the actual bounds here are before putting in a new arbitrary number.
> 
> src/sys/boot/i386/pmbr/pmbr.s says
> 
> -------------
> next_boot:.     incl (%si).     .       .       # Next LBA
> .       .       adcl $0,4(%si)
> .       .       mov %es,%ax.    .       .       # Adjust segment for next
> .       .       addw $SECSIZE/16,%ax.   .       #  sector
> .       .       cmp $0x9000,%ax..       .       # Don't load past 0x90000,
> .       .       jae err_big.    .       .       #  545k should be enough for
> .       .       mov %ax,%es.    .       .       #  any boot code. :)
> -------------
> 
> (err_big being printing the "Boot loader too large" message).  Though
> 0x90000 is actually 576k, not 545, but presumably there's some other
> adjustment lopping off bits somewhere; that's 62 sectors diff.

The boot code is not loaded at offset 0, it is loaded at offset 0x7c00 (the
same address the BIOS loads boot loaders):

                .set LOAD,0x7c00                # Load address
...
#
# We found a boot partition.  Load it into RAM starting at 0x7c00.
#
                movw %bx,%di                    # Save partition pointer in %di
                leaw PART_START_LBA(%di),%si
                movw $LOAD/16,%bx

> Regardless, I settled on 512k for my boot partitions (after finding
> the above error when I previously decided "it's a few dozen k, I'll
> just set aside a meg to be safe" and then discovered the whole
> "not-booting" thing that caused.

512k should be fine even if it is a bit excessive.  Also, larger partitions
might actually increase boot time, but perhaps not noticably.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407151305.32820.jhb>