Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Dec 2016 10:29:58 +0100
From:      =?UTF-8?Q?Fernando_Herrero_Carr=C3=B3n?= <elferdo@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Dimitry Andric <dim@freebsd.org>, Antony Uspensky <uspensky@x-art.ru>,  Eric van Gyzen <vangyzen@freebsd.org>, freebsd-stable <freebsd-stable@freebsd.org>,  Slawa Olhovchenkov <slw@zxy.spb.ru>
Subject:   Re: Upgrading boot from GPT(BIOS) to GPT(UEFI)
Message-ID:  <CAMwkeZw7zZ8itcWhLGvGc9XBfKAnSQJ=CXw=n7iJ0OpX-eN2Gg@mail.gmail.com>
In-Reply-To: <CAMwkeZx8O9Am_VHvFeFZSSRMT5QHrHs4PVDQznKbd_WH3LuPkQ@mail.gmail.com>
References:  <CAMwkeZznenmN1RkUaKZ7i12F0FA185ZH%2BcHPXUp56S8j3SrubQ@mail.gmail.com> <20161216173930.GD90401@zxy.spb.ru> <b9ede396-2a86-8319-2f40-fe1c40cc6483@FreeBSD.org> <alpine.BSF.2.00.1612162047120.13320@gw-old.x-art.ru> <85F3F813-D821-439B-B700-DCE51C53E035@FreeBSD.org> <CANCZdfpBVN%2BtuYkxE_OM9vfKHyxsMgywkPCZTmNz4O_nigp%2BJA@mail.gmail.com> <CAMwkeZx8O9Am_VHvFeFZSSRMT5QHrHs4PVDQznKbd_WH3LuPkQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2016-12-17 9:21 GMT+01:00 Fernando Herrero Carr=C3=B3n <elferdo@gmail.com>:

>
>
> 2016-12-16 23:56 GMT+01:00 Warner Losh <imp@bsdimp.com>:
>
>> On Fri, Dec 16, 2016 at 11:00 AM, Dimitry Andric <dim@freebsd.org> wrote=
:
>> > On 16 Dec 2016, at 18:53, Antony Uspensky <uspensky@x-art.ru> wrote:
>> >>
>> >> On Fri, 16 Dec 2016, Eric van Gyzen wrote:
>> >>> On 12/16/2016 11:39, Slawa Olhovchenkov wrote:
>> >>>> On Fri, Dec 16, 2016 at 06:08:34PM +0100, Fernando Herrero Carr?n
>> wrote:
>> >>>>> Hi everyone,
>> >>>>>
>> >>>>> A few months ago I got myself a new box and I have been happily
>> running
>> >>>>> FreeBSD on it ever since. I noticed that the boot was not as fast
>> as I had
>> >>>>> expected and I've realized that, while my disk is GPT partitioned,
>> the boot
>> >>>>> process is still BIOS based:
>> >>>>>
>> >>>>> % gpart show
>> >>>>> =3D>       34  976773101 <976%2077%2031%2001>  ada0  GPT  (466G)
>> >>>>>         34          6        - free -  (3.0K)
>> >>>>>         40       1024     1  freebsd-boot  (512K)
>> >>>>>       1064        984        - free -  (492K)
>> >>>>>       2048   67108864     2  freebsd-swap  (32G)
>> >>>>>   67110912  909662208     3  freebsd-zfs  (434G)
>> >>>>>  976773120 <976%2077%2031%2020>         15        - free -  (7.5K)
>> > ...
>> >> I would shrink ada0p1 down to 128K (size of gptzfsboot =3D 88K now) a=
nd
>> place efi partition (~800K) on free space between new p1 and p2. No need=
 to
>> touch swap partition.
>> >
>> > Yes, this is almost exactly what I have done on a machine that was
>> > originally installed with gptzfsboot on the first partition, which was
>> > 512K.  Since all the partitions on this SSD were aligned to 1M, I
>> > reduced the size of the first partition to 224K, freeing up a hole of
>> > exactly 800K for an EFI partition:
>> >
>> > =3D>       40  976773088  ada0  GPT  (466G)
>> >          40       2008        - free -  (1.0M)
>> >        2048        448     1  freebsd-boot  (224K)
>> >        2496       1600     4  efi  (800K)
>> >        4096   33554432     2  freebsd-swap  (16G)
>> >    33558528  943214592 <943%2021%2045%2092>     3  freebsd-zfs  (450G)
>> >   976773120 <976%2077%2031%2020>          8        - free -  (4.0K)
>> >
>> > Then I wrote the preformatted boot1.efifat image to it, using: gpart
>> > bootcode -p /boot/boot1.efifat -i 4 ada0.  You can also use dd of
>> > course, but I prefer using gpart for these kinds of manipulations.
>> >
>> > This way, you can choose between booting in old school BIOS mode, or
>> > UEFI mode.  If the UEFI mode works flawlessly, you can always decide
>> > later to dump the freebsd-boot partition, and use only an EFI partitio=
n.
>> >
>> > -Dimitry
>> >
>> > P.S.: The only thing that triggers my OCD here is that the EFI partiti=
on
>> > has index 4, but is physically the second.  But I can live with that,
>> > until I finally delete the freebsd-boot partition. :)
>>
>>
>> You likely want to carve out more like 50MB instead of 800k for UEFI
>> partition. 800k is the minimum, but it also precludes many things you
>> may need to do with UEFI applications down the line.
>>
>> Warner
>>
>
> Thanks guys for all the answers,  I think I will just nuke freebsd-boot
> and create a smallish efi where I can place boot1.efifat as suggested by
> Dimitry. If this works, I can always shrink swap if I really need to late=
r
> on.
>
>
So, it worked!

I took a spare USB stick with a bootonly image and changed partitions there
first. Once I had it working I modified my hard drive's partitions,
installed efifat image with gpart, rebooted, and here I am.

Some conclusions:

* While getting to FreeBSD's loader seems a bit faster (or maybe that's
just confirmation bias), bringing up the system does not seem much faster.
* If anything, I have a slightly higher resolution console now.
* uefi(8) hints at gpart:
     /boot/boot1.efifat
                   msdosfs(5) FAT file system image containing boot1.efi fo=
r
                   use by bsdinstall(8) and the bootcode argument to
gpart(8).
   maybe a little example would help (gpart bootcode -p /boot/boot1.efifat
-i 1 ada0)
* Despite gpart(8)'s excellent BOOTSTRAPPING section, no mention is made to
booting from an efi partition there.

Best,
Fernando



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMwkeZw7zZ8itcWhLGvGc9XBfKAnSQJ=CXw=n7iJ0OpX-eN2Gg>