Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Aug 2019 14:52:40 +0200
From:      "O. Hartmann" <ohartmann@walstatt.org>
To:        freebsd-current <freebsd-current@freebsd.org>
Subject:   HELP: UEFI/ZFS Boot failure: Ignoring Boot000A: Only one DP found
Message-ID:  <20190821145234.6fe455b4@freyja>

next in thread | raw e-mail | index | archive | help
I ran into serious trouble booting several boxes off UEFI. On modern hardware,
the ESP is around 200 - 300 MB in size and usually I install
/efi/freebsd/loader.efi, loader.efi taken from /boot/loader.efi. On some older
hardware, specifically on a Lenovo E540 with latest available firmware (2.28),
which uses 12-STABLE and a ZFS-only installation, there seems no working loader
anymore!
The installation of the Laptop has been performed using 12.0-PRERELEASE on an
Samsung EVO 860 500GB SSD. The ESP is 200M in size and contained
/efi/boot/BOOTx64.efi and /efi/boot/startup.nsh.

The ESP has been destroyed by accident. Now I tried to solve the problem by
installing a new ESP and the proper loader, assuming that /boot/loader.efi
(taken from a FreeBSD-13-CURRENT or from 12-STABLE of the same revision and
sompiled on the same platform (Intel Haswell) as the lost laptop's revison of
the OS is at. But I fail doing so. Somehow Lenovo's firmware is setting up a
lot of UEFI boot numbers as provided via "efibootmgr -b 000X", X some Hex
numer. -b 000A is usually denoted/labeld with "ATA HDD0".

Installing the proper boot/loader.efi loader file from 12-STABLE (r351108) and
setting the EFI variable according the following steps:

mount -t msdosfs /dev/ada0p1 /mnt (ESP is on GPT partition 1, 0p2 is zroot)
Install then loader.efi either as BOOTx64.efi or loader.efi under
/mnt/efi/boot/ or /mnt/efi/freebsd/ and then set the boot environment
accordingly via

delete 000A first:
efibootmgr -B -b 000A

create the new efi boot var:
efibootmgr -a -b 000A -c -l /mnt/efi/{freebsd|boot}/{loader.efi|BOOTx64.efi} -L
FreeBSD

The result is a non booting system, the Lenovo firmware jumps immediately into
the menu for selecting a proper boot media.

The same happens with /boot/boot1.efi installed as loader.efi or BOOTx64.efi
shown above.

In case I just brute-force flash the ESP with /boot/boot1.efifat, dd
if=boot1.efifat of=/dev/ada0p1 (ESP) (taken from the propper 12-STABLE system I
spoeke of above), then booting fails again, but this time with an error I watch
on so many boxes recently:

[...]
Ignoring Boot000a: Only one DP found
Trying ZFS pool
Setting currdev to zfs:zroot/ROOT/default:

Then the console freezes at that point and only RESET or POWER OFF is capable
of a revive.

What is wrong here? What am I missing?

Thanks in advance,

oh



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