FreeBSD 8 i386 gptboot corrupt - SOLVED
Alfred Bartsch
bartsch at dssgmbh.de
Wed May 9 12:09:24 UTC 2012
-----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 at 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-----
More information about the freebsd-stable
mailing list