Lenovo BIOS boot fix

Allan Jude allanjude at freebsd.org
Mon Jul 13 14:50:06 UTC 2015


On 2015-07-13 03:58, Hans Ottevanger wrote:
> On 07/12/15 20:07, Allan Jude wrote:
>> On 2015-07-12 11:10, Andrey V. Elsukov wrote:
>>> On 12.07.2015 09:02, Allan Jude wrote:
>>>> I forgot to include the link to the patch as well:
>>>>
>>>> http://www.allanjude.com/bsd/lenovofix_gpart.patch
>>>>
>>>> I will most likely make this patch optional, behind a flag to the
>>>> 'gpart
>>>> create -s gpt' command, to avoid potentially breaking existing working
>>>> systems, but if using offset 1 works on all other hardware, having
>>>> it as
>>>> the default would be nice.
>>>>
>>>> Another option would be to make a separate standalone program to modify
>>>> the pMBR for Lenovo machines, rather than modifying gpart.
>>>
>>> Hi,
>>>
>>> I think Lenovo's BIOS just think that your partition layout is MBR and
>>> uses legacy boot.
>>>
>>> if (MBR_partition[0].type == 0xee && gpt_is_ok()) {
>>>      UEFI_boot();
>>> } else {
>>>      MBR_boot();
>>> }
>>>
>>
>> I am not sure what they actually do, but, by making it the
>> MBR_partition[1].type that is 0xee, FreeBSD is still perfectly happy,
>> and the Lenovo boots.
>>
>> Other non-lenovo machines I tested on also worked.
>>
>> Tested Platforms (in BIOS/non-UEFI mode):
>>
>> Lenovo X220
>> Lenovo X230 (doesn't have the bug, boots fine with MBR[0].type = 0xee)
>> Lenovo T530 (also doesn't have the bug)
>> Asus Core2Duo
>> Asus i7 Nehalem desktop
>> Asus i5 Sandy bridge desktop
>> Gigabyte i5 Ivy bridge desktop
>> Intel Ivy bridge NUC
>> Intel Haswell NUC
>> Supermicro i7 Haswell workstation
>>
>>
> 
> Hi Allan,
> 
> I did some experiments with the newest memstick image you provided
> (lenovofix_20150712-r285132.img).
> 
> On an oldish Q6600 based system using an INTEL DP965LT main-board (it
> only has BIOS mode) I first pulled the SATA connectors before trying to
> boot from the USB stick. It shows the same problem as always with a
> fresh install of FreeBSD 10.x:
> 
> No bootable device -- insert boot disk and press any key
> 
> This can be fixed by first modifying the image on the USB stick using
> 
> gpart recover da0
> 
> (the stick is 8Gbyte and the image as copied on it is 1Gbyte, so the GPT
> seems corrupt), followed by the usual
> 
> gpart set -a active da0
> 
> I think this issue manifests itself on a generation of older Intel and
> Foxconn main-boards and possibly differs from the problem that you try
> to solve with Lenovo hardware.
> 
> I also tried the unmodified image on an even older T7200 based system
> having an Asus NL4VM-DH main-board and there it just dumps the registers
> (followed by "BTX Halted") very early in the boot process. This has
> happened before on several occasions with FreeBSD 10.x. The board is
> probably too rare to worry about too much, though it still runs OpenBSD
> 5.7 perfectly.
> 
> 
> Kind regards,
> 
> Hans Ottevanger
> 
> Eindhoven, Netherlands
> www.beastielabs.net
> 
> 
> 
> 
> 

Needing the active flag set is indeed a different problem. I am working
on a patch for bsdinstall that will allow the user to request the active
bit be set as well.

-- 
Allan Jude

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-current/attachments/20150713/8ab082c8/attachment.bin>


More information about the freebsd-current mailing list