Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 09 May 2012 13:42:25 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Alfred Bartsch <bartsch@dssgmbh.de>
Cc:        freebsd-stable@FreeBSD.org
Subject:   Re: FreeBSD 8 i386 gptboot corrupt
Message-ID:  <4FAA4A11.808@FreeBSD.org>
In-Reply-To: <4FAA3912.3030801@dssgmbh.de>
References:  <4FAA3912.3030801@dssgmbh.de>

next in thread | previous in thread | raw e-mail | index | archive | help
on 09/05/2012 12:29 Alfred Bartsch said the following:
> Hello, after migrating some of our older servers to FeeBSD 8.3-stable 
> (cvsupped May 4th), they don't boot anymore after installing the new boot
> blocks with gpart. These servers either boot in an endless loop or stop in
> BTX loader, due to different hardware environments.
> 
> This behavior is restricted to 32-bit servers (i386), all 64-bit servers
> (amd64) work without any problem, as expected.
> 
> After some analyzing, it seems to me that the actual size of gptboot does
> matter (16723 bytes, >16kB). In amd64 environment (same source version) the
> actual size of /boot/gptboot is only 15443 bytes.

Weird.  Both amd64 and i386 builds should produce the same binaries as the
boot code is built with -m32 -march=i386 on amd64.
But I can reproduce this, so it seems that the compilation is indeed done
differently.

Heh, it seems that it is -march=i386 flag that makes all the difference.
Maybe we should use this flag even when doing native i386 builds...

Anyway, the pmbr code is supposed to read the whole content of a GPT boot
partition into memory (actually limited to 545KB), so 16KB limit should not
matter/exist.  What size are your GPT boot partitions?

> Since there is only one single Makefile for both architectures 
> (/sys/boot/i386/gptboot/Makefile), some recent changes of CFLAGS seem to be
> responsible for this (Version 1.62 does work, Version 1.62.6.4 does not).
> 
> Is there any advice available to solve this (compiler) problem, or is at
> last /sbin/gpart the culprit?

You can always try to locally revert the commit that changed the CFLAGS, but
as I've said above there should not be any 16KB limit for GPT boot.
Or you can try to add -march=i386 to CFLAGS for your i386 boot block build.

-- 
Andriy Gapon



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