Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jan 2013 12:06:58 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   Re: solved: pmbr: Boot loader too large
Message-ID:  <201301221206.58460.jhb@freebsd.org>
In-Reply-To: <E1TxcFC-00082M-E2@kabab.cs.huji.ac.il>
References:  <E1Txbuq-0007Zr-MY@kabab.cs.huji.ac.il> <E1TxcFC-00082M-E2@kabab.cs.huji.ac.il>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, January 22, 2013 6:42:22 am Daniel Braniss wrote:
> > hi,
> > this is the output from gpart show:
> > =>       34  976773101  ada0  GPT  (465G)
> >          34       2048     1  freebsd-boot  (1.0M)
> >        2082    4194304     2  freebsd-ufs  [bootme]  (2.0G)
> >     4196386   12582912     3  freebsd-swap  (6.0G)
> >    16779298  959993837     4  freebsd-zfs  (457G)
> > 
> > =>       34  976773101  ada1  GPT  (465G)
> >          34       2048     1  freebsd-boot  (1.0M)
> >        2082    4194304     2  freebsd-ufs  (2.0G)
> >     4196386   12582912     3  freebsd-swap  (6.0G)
> >    16779298  959993837     4  freebsd-zfs  (457G)
> > 
> > I also did:
> > 	gpart bootcode -b /boot/pmbr ada0
> > 
> > I'm trying to boot and get
> >   Boot loader too large
> > 
> > not matter if I boot from disk or pxe.
> > The pmbr is 512 bytes, so what causes it to overshoot? 
> > I don't know x86 assembler (nor want to :-), but the comment says: 
> > 	545k should be enough
> > so what's going on?
> 
> never underestimate the human stupidity (mine in this case) nor of the boot.
> pmbr will load the whole partition, which was 1M, instead of the size of
> gptboot :-(
> 
> reducing the size of the slice/partition fixed the issue.

pmbr doesn't have room to be but so smart.  It can't parse a filesystem, so it 
just loads a raw partition assuming that the partition is the boot loader.  
The 545k bit has to do with where it is loaded.  The boot loader has to live 
in the lower 640k, but it starts at 0x7c00 (the address that the BIOS always 
loads boot loaders).  The 545k limit comes from 640k - 0x7c00.  This is a 
fundamental limit of the x86 BIOS architecture.  Compared to the 15.5k that 
UFS leaves for boot2 it is worlds of space.

-- 
John Baldwin



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