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

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 09.05.2012 12:42, schrieb Andriy Gapon:
> 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...
> 

after adding "-march=i386" to CFLAGS in Makefile everything looks ok
(filesize: 15443, as you predicted), so I would opt for using this
flag in the future.

> 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?

They are all 64k (128 sectors), as recommended.

> 
>> 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.
> 

Thank you for your fast and helpful response.

- -- 
Alfred Bartsch
Data-Service GmbH
mailto:bartsch@dssgmbh.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+qXnAACgkQ5QGe2JdVf3iCVwCgu3qQU49N2uGJ0g3Ej0UchV0q
1ecAnA/a4BiIFY6Acrc9ME9CR++dSJ3k
=+w+l
-----END PGP SIGNATURE-----



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