Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 09 May 2012 17:48:29 +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 - SOLVED
Message-ID:  <4FAA83BD.2030204@FreeBSD.org>
In-Reply-To: <4FAA5E70.7030508@dssgmbh.de>
References:  <4FAA3912.3030801@dssgmbh.de> <4FAA4A11.808@FreeBSD.org> <4FAA5E70.7030508@dssgmbh.de>

next in thread | previous in thread | raw e-mail | index | archive | help
on 09/05/2012 15:09 Alfred Bartsch said the following:
> 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.

Strange.  I wonder what kind of a problem you are running into.
E.g. I use gptzfsboot and its size is ~40KB and I do not having any problems.

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

-- 
Andriy Gapon



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