Re: EFI boot partition overwritten: mount -t msdosfs (or mount_msdosfs(8))

2021-07-18 Thread Thomas Laus
On 7/18/21 2:21 PM, Graham Perrin wrote:
> On 16/07/2021 18:35, Warner Losh wrote:
>> # newfs_msdos -F 32 /dev/ada0p4
>> # mount -t msdos /dev/ada0p4 /boot/efi
> 
> 
> Typo: msdosfs, not msdos.
> 
> Alternatively, mount_msdosfs(8).
> 
> Alternatively (I agree, even better), incorporate things such as this in
> the Handbook :-)
> 
> Then have the (ahem) book of answers to frequently asked questions link
> to the Handbook.
>
I agree with having this information in the Handbook.  Writing the
contents of the EFI partition has changed filenames through the recent
release cycles.  FreeBSD 12.0 + uses "dd(1) the /boot/boot1.efifat
file".  FreeBSD 13.0 has a gptboot.efi in the /boot directory I was
tempted to use 'gpart bootcode -p /boot/gptboot.efi' like writing the
boot record on a ZFS system but was concerned about digging a bigger
hole.  Warner Losh has still another way of writing the EFI partition
contents.  Once the Handbook defines a 'standard' method, the
/usr/src/UPDATING file can just reference it.

Tom


-- 
Public Keys:
PGP KeyID = 0x5F22FDC1
GnuPG KeyID = 0x620836CF



EFI boot partition overwritten: mount -t msdosfs (or mount_msdosfs(8))

2021-07-18 Thread Graham Perrin

On 16/07/2021 18:35, Warner Losh wrote:

# newfs_msdos -F 32 /dev/ada0p4
# mount -t msdos /dev/ada0p4 /boot/efi



Typo: msdosfs, not msdos.

Alternatively, mount_msdosfs(8).

Alternatively (I agree, even better), incorporate things such as this in 
the Handbook :-)


Then have the (ahem) book of answers to frequently asked questions link 
to the Handbook.





Re: EFI boot partition overwritten

2021-07-17 Thread Kevin Oberman
My deep apologies for the top post.
--
Kevin Oberman, Part time kid herder and retired Network Engineer
E-mail: rkober...@gmail.com
PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683


Re: EFI boot partition overwritten

2021-07-17 Thread Kevin Oberman
On my laptop, which comes with W10 installed, I wanted to shrink W10 to
256G and put FreeBSD on a new 680G partition and make FreeBSD the default
boot.
This was all easy except setting up boot and making it default. I just
created a EFI/FreeBSD folder in the existing EFI partition (ada0p1) and
dropped loader.efi into it. Then I could use efibootmgr(8) to do the rest.
It was not too easy to figure out the first time and documentation would
have been really nice. Took a while googling (duckduckgoing?) to discover
the existence of efibootmgr (thanks Netflix!) and  bit longer to figure out
just how to use it (man page is really quite good), but it worked perfectly.

If anyone cares, efibootmgr on dmy laptop shows:
Boot to FW : false
BootCurrent: 0001
Timeout: 2 seconds
BootOrder  : 0001, , 0019, 001A, 001B, 001C, 001D, 001E, 001F, 0020,
0021, 0022, 0023
+Boot0001* FreeBSD
 Boot* Windows Boot Manager
 Boot0019* USB CD
 Boot001A* USB FDD
 Boot001B* NVMe0
 Boot001C* NVMe1
 Boot001D* ATA HDD0
 Boot001E* ATA HDD1
 Boot001F* USB HDD
 Boot0020* PXE BOOT
 Boot0021* LENOVO CLOUD
 Boot0022  Other CD
 Boot0023  Other HDD
Kevin Oberman, Part time kid herder and retired Network Engineer
E-mail: rkober...@gmail.com
PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683


On Fri, Jul 16, 2021 at 1:15 PM Michael Gmelin  wrote:

>
>
> > On 16. Jul 2021, at 19:38, Warner Losh  wrote:
> >
> > On Fri, Jul 16, 2021 at 6:14 AM Thomas Laus  wrote:
> >
> >> Group:
> >>
> >> This is an issue for more than just CURRENT.  The 'usr/src/UPDATING'
> >> file has the instructions for updating the ZFS bootblocks but not the
> >> EFI partition.  I recently upgraded a RELEASE-12.2 to RELEASE-13.0.  The
> >> freebsd-update procedure did not upgrade the ZFS bootblocks.  I forgot
> >> that this PC was UEFI only and overwrote the first partition with the
> >> gptzfsboot code.  That made my system un-bootable.  I found the recovery
> >> procedure on one of the FreeBSD forums and was able to reformat the EFI
> >> MSDOS partition, create the proper directory structure, and copy the
> >> loader.efi file to the correct location and filename using the Live
> >> Filesystem running on the installation CD.
> >>
> >> I searched the man pages and the UPDATING file for instructions but came
> >> up empty and had to resort to finding the answer on one of the forums.
> >> The filenames have changed since FreeBSD first supported EFI and some of
> >> the forum instructions are out of date.  My problem must be fairly
> >> common and the recovery procedure should be in a man page with a
> >> footnote or man reference somewhere on the install media.
> >>
> >> Since CURRENT receives more updates to the EFI boot loader than the
> >> release versions, there should be instructions in the CURRENT
> >> 'usr/src/UPDATING' file on how to update the EFI bootcode.
> >>
> >
> > There should be. Yes. Last time I went hunting for a place to shoe-horn
> it
> > in, I got distracted by something else.
> >
> > The instructions are relatively straight forward. I'm writing them here
> for
> > your benefit, and also in case someone wants to send me a diff/pull
> request
> > to include them. Or better yet, put this in the handbook and we can
> > reference
> > a location from there.
> >
> > WARNING: This is a quick run-through of how to do this if you need to.
> > The example commands given might not be exactly right for all
> installations
> > as differing numbers of partitions will change the '-i' parameters.
> >
> > Frist, you need a partition that's of the right type. For GPT that type
> is
> > `efi`
> > as shown in `gpart show ` eg
> > # gpart show ada0
> > =>40  2000409184  ada0  GPT  (954G)
> >  401600- free -  (800K)
> >1640  1992292792 2  freebsd-ufs  (950G)
> >  1992294432 700 3  freebsd-swap  (3.3G)
> >  1999294432 1114792 4  efi  (544M)
> >
> > If you don't have one, you'll need to create one. In the above exmaple,
> > I had installed the system with a tiny partition for booting with legacy
> > BIOS, but then moved to booting with UEFI. I did this by turning off
> > swapping and doing the following:
> > # gpart resize -i 3 -s 700 ada0
> > I then created a new efi partition:
> > # gpart add -t efi ada0
> > and I let it autosize.
> >
> > Next, I needed a FAT32 filesystem on that device. FAT16 usually will
> > work and often FAT12, but there are known examples of system integrators
> > that omit support for these last two (more the latter than the former
> since
> > it's viewed as a floppy only thing, and who uses floppies).  I just used
> > newfs_msdos and mounted it:
> > # newfs_msdos -F 32 /dev/ada0p4
> > # mount -t msdos /dev/ada0p4 /boot/efi
> >
> > Next, you need to put a bootloader on the system. Unless you have
> > special needs, loader.efi is that loader.
> > # mkdir -p /boot/efi/efi/boot
> > # cp /boot/loader.efi /boot/efi/efi/boot/bootx64.efi
> >
> > If you are using efibootmgr to set a

Re: EFI boot partition overwritten

2021-07-16 Thread Michael Gmelin



> On 16. Jul 2021, at 19:38, Warner Losh  wrote:
> 
> On Fri, Jul 16, 2021 at 6:14 AM Thomas Laus  wrote:
> 
>> Group:
>> 
>> This is an issue for more than just CURRENT.  The 'usr/src/UPDATING'
>> file has the instructions for updating the ZFS bootblocks but not the
>> EFI partition.  I recently upgraded a RELEASE-12.2 to RELEASE-13.0.  The
>> freebsd-update procedure did not upgrade the ZFS bootblocks.  I forgot
>> that this PC was UEFI only and overwrote the first partition with the
>> gptzfsboot code.  That made my system un-bootable.  I found the recovery
>> procedure on one of the FreeBSD forums and was able to reformat the EFI
>> MSDOS partition, create the proper directory structure, and copy the
>> loader.efi file to the correct location and filename using the Live
>> Filesystem running on the installation CD.
>> 
>> I searched the man pages and the UPDATING file for instructions but came
>> up empty and had to resort to finding the answer on one of the forums.
>> The filenames have changed since FreeBSD first supported EFI and some of
>> the forum instructions are out of date.  My problem must be fairly
>> common and the recovery procedure should be in a man page with a
>> footnote or man reference somewhere on the install media.
>> 
>> Since CURRENT receives more updates to the EFI boot loader than the
>> release versions, there should be instructions in the CURRENT
>> 'usr/src/UPDATING' file on how to update the EFI bootcode.
>> 
> 
> There should be. Yes. Last time I went hunting for a place to shoe-horn it
> in, I got distracted by something else.
> 
> The instructions are relatively straight forward. I'm writing them here for
> your benefit, and also in case someone wants to send me a diff/pull request
> to include them. Or better yet, put this in the handbook and we can
> reference
> a location from there.
> 
> WARNING: This is a quick run-through of how to do this if you need to.
> The example commands given might not be exactly right for all installations
> as differing numbers of partitions will change the '-i' parameters.
> 
> Frist, you need a partition that's of the right type. For GPT that type is
> `efi`
> as shown in `gpart show ` eg
> # gpart show ada0
> =>40  2000409184  ada0  GPT  (954G)
>  401600- free -  (800K)
>1640  1992292792 2  freebsd-ufs  (950G)
>  1992294432 700 3  freebsd-swap  (3.3G)
>  1999294432 1114792 4  efi  (544M)
> 
> If you don't have one, you'll need to create one. In the above exmaple,
> I had installed the system with a tiny partition for booting with legacy
> BIOS, but then moved to booting with UEFI. I did this by turning off
> swapping and doing the following:
> # gpart resize -i 3 -s 700 ada0
> I then created a new efi partition:
> # gpart add -t efi ada0
> and I let it autosize.
> 
> Next, I needed a FAT32 filesystem on that device. FAT16 usually will
> work and often FAT12, but there are known examples of system integrators
> that omit support for these last two (more the latter than the former since
> it's viewed as a floppy only thing, and who uses floppies).  I just used
> newfs_msdos and mounted it:
> # newfs_msdos -F 32 /dev/ada0p4
> # mount -t msdos /dev/ada0p4 /boot/efi
> 
> Next, you need to put a bootloader on the system. Unless you have
> special needs, loader.efi is that loader.
> # mkdir -p /boot/efi/efi/boot
> # cp /boot/loader.efi /boot/efi/efi/boot/bootx64.efi
> 
> If you are using efibootmgr to set a location to boot from, generally people
> create a freebsd directory (we've registered /efi/freebsd with the proper
> folks
> to avoid conflicts):
> # mkdir -p /boot/efi/efi/freebsd
> # cp /boot/loader.efi /boot/efi/efi/freebsd
> # efibootmgr -c -a -k /boot/kernel/kernel -l
> /boot/efi/efi/freebsd/loader.efi -L "FreeBSD Boot"
> though some vendors impose limits on how many boot envs you can create
> and some do not allow any at all.
> 

It would be cool to also update the loader.efi man page to be a bit more useful 
(this is what 'zpool upgrade' refers to/will refer to in the future).

-m

> Warner




Re: EFI boot partition overwritten

2021-07-16 Thread Thomas Laus
On 7/16/21 1:35 PM, Warner Losh wrote:
> 
> There should be. Yes. Last time I went hunting for a place to shoe-horn it
> in, I got distracted by something else.
> 
> The instructions are relatively straight forward. I'm writing them here for
> your benefit, and also in case someone wants to send me a diff/pull request
> to include them. Or better yet, put this in the handbook and we can
> reference
> a location from there.
> 
> WARNING: This is a quick run-through of how to do this if you need to.
> The example commands given might not be exactly right for all installations
> as differing numbers of partitions will change the '-i' parameters.
> 
> Frist, you need a partition that's of the right type. For GPT that type is
> `efi`
> as shown in `gpart show ` eg
> # gpart show ada0
> =>40  2000409184  ada0  GPT  (954G)
>   401600- free -  (800K)
> 1640  1992292792 2  freebsd-ufs  (950G)
>   1992294432 700 3  freebsd-swap  (3.3G)
>   1999294432 1114792 4  efi  (544M)
>
It looks like the default layout from the install media is 200M
=>   40  488397088  ada0  GPT  (233G)
 40 409600 1  efi  (200M)
 409640   1024 2  freebsd-boot  (512K)
 410664984- free -  (492K)
 4116484194304 3  freebsd-swap  (2.0G)
4605952  483790848 4  freebsd-zfs  (231G)
  488396800328- free -  (164K)

> If you don't have one, you'll need to create one. In the above exmaple,
> I had installed the system with a tiny partition for booting with legacy
> BIOS, but then moved to booting with UEFI. I did this by turning off
> swapping and doing the following:
> # gpart resize -i 3 -s 700 ada0
> I then created a new efi partition:
> # gpart add -t efi ada0
> and I let it autosize.
> 
> Next, I needed a FAT32 filesystem on that device. FAT16 usually will
> work and often FAT12, but there are known examples of system integrators
> that omit support for these last two (more the latter than the former since
> it's viewed as a floppy only thing, and who uses floppies).  I just used
> newfs_msdos and mounted it:
> # newfs_msdos -F 32 /dev/ada0p4
> # mount -t msdos /dev/ada0p4 /boot/efi
> 
> Next, you need to put a bootloader on the system. Unless you have
> special needs, loader.efi is that loader.
> # mkdir -p /boot/efi/efi/boot
> # cp /boot/loader.efi /boot/efi/efi/boot/bootx64.efi
>
All of the forums use uppercase for mountpoint/EFI/BOOT/BOOTX64.efi.  Is
that directory structure standard across motherboard manufacturers or is
lower case allowed?

> If you are using efibootmgr to set a location to boot from, generally people
> create a freebsd directory (we've registered /efi/freebsd with the proper
> folks
> to avoid conflicts):
> # mkdir -p /boot/efi/efi/freebsd
> # cp /boot/loader.efi /boot/efi/efi/freebsd
> # efibootmgr -c -a -k /boot/kernel/kernel -l
> /boot/efi/efi/freebsd/loader.efi -L "FreeBSD Boot"
> though some vendors impose limits on how many boot envs you can create
> and some do not allow any at all.
>
Warner:

Thanks for getting this effort rolling.  I think that the best place for
is in the Handbook since it is something that is not performed often.
The /usr/src/UPDATING section can just refer to the section in the
Handbook for the times the loader.efi is updated or requires
re-installation.

Tom

-- 
Public Keys:
PGP KeyID = 0x5F22FDC1
GnuPG KeyID = 0x620836CF



Re: EFI boot partition overwritten

2021-07-16 Thread Warner Losh
On Fri, Jul 16, 2021 at 6:14 AM Thomas Laus  wrote:

> Group:
>
> This is an issue for more than just CURRENT.  The 'usr/src/UPDATING'
> file has the instructions for updating the ZFS bootblocks but not the
> EFI partition.  I recently upgraded a RELEASE-12.2 to RELEASE-13.0.  The
> freebsd-update procedure did not upgrade the ZFS bootblocks.  I forgot
> that this PC was UEFI only and overwrote the first partition with the
> gptzfsboot code.  That made my system un-bootable.  I found the recovery
> procedure on one of the FreeBSD forums and was able to reformat the EFI
> MSDOS partition, create the proper directory structure, and copy the
> loader.efi file to the correct location and filename using the Live
> Filesystem running on the installation CD.
>
> I searched the man pages and the UPDATING file for instructions but came
> up empty and had to resort to finding the answer on one of the forums.
> The filenames have changed since FreeBSD first supported EFI and some of
> the forum instructions are out of date.  My problem must be fairly
> common and the recovery procedure should be in a man page with a
> footnote or man reference somewhere on the install media.
>
> Since CURRENT receives more updates to the EFI boot loader than the
> release versions, there should be instructions in the CURRENT
> 'usr/src/UPDATING' file on how to update the EFI bootcode.
>

There should be. Yes. Last time I went hunting for a place to shoe-horn it
in, I got distracted by something else.

The instructions are relatively straight forward. I'm writing them here for
your benefit, and also in case someone wants to send me a diff/pull request
to include them. Or better yet, put this in the handbook and we can
reference
a location from there.

WARNING: This is a quick run-through of how to do this if you need to.
The example commands given might not be exactly right for all installations
as differing numbers of partitions will change the '-i' parameters.

Frist, you need a partition that's of the right type. For GPT that type is
`efi`
as shown in `gpart show ` eg
# gpart show ada0
=>40  2000409184  ada0  GPT  (954G)
  401600- free -  (800K)
1640  1992292792 2  freebsd-ufs  (950G)
  1992294432 700 3  freebsd-swap  (3.3G)
  1999294432 1114792 4  efi  (544M)

If you don't have one, you'll need to create one. In the above exmaple,
I had installed the system with a tiny partition for booting with legacy
BIOS, but then moved to booting with UEFI. I did this by turning off
swapping and doing the following:
# gpart resize -i 3 -s 700 ada0
I then created a new efi partition:
# gpart add -t efi ada0
and I let it autosize.

Next, I needed a FAT32 filesystem on that device. FAT16 usually will
work and often FAT12, but there are known examples of system integrators
that omit support for these last two (more the latter than the former since
it's viewed as a floppy only thing, and who uses floppies).  I just used
newfs_msdos and mounted it:
# newfs_msdos -F 32 /dev/ada0p4
# mount -t msdos /dev/ada0p4 /boot/efi

Next, you need to put a bootloader on the system. Unless you have
special needs, loader.efi is that loader.
# mkdir -p /boot/efi/efi/boot
# cp /boot/loader.efi /boot/efi/efi/boot/bootx64.efi

If you are using efibootmgr to set a location to boot from, generally people
create a freebsd directory (we've registered /efi/freebsd with the proper
folks
to avoid conflicts):
# mkdir -p /boot/efi/efi/freebsd
# cp /boot/loader.efi /boot/efi/efi/freebsd
# efibootmgr -c -a -k /boot/kernel/kernel -l
/boot/efi/efi/freebsd/loader.efi -L "FreeBSD Boot"
though some vendors impose limits on how many boot envs you can create
and some do not allow any at all.

Warner


Re: EFI boot partition overwritten

2021-07-16 Thread Andrey Fesenko
On Fri, Jul 16, 2021 at 3:15 PM Thomas Laus  wrote:
>
> Since CURRENT receives more updates to the EFI boot loader than the
> release versions, there should be instructions in the CURRENT
> 'usr/src/UPDATING' file on how to update the EFI bootcode.
>

Old systems have little efi part 800K or smaller and require creating
new, end of disk or cut swap.



EFI boot partition overwritten

2021-07-16 Thread Thomas Laus
Group:

This is an issue for more than just CURRENT.  The 'usr/src/UPDATING'
file has the instructions for updating the ZFS bootblocks but not the
EFI partition.  I recently upgraded a RELEASE-12.2 to RELEASE-13.0.  The
freebsd-update procedure did not upgrade the ZFS bootblocks.  I forgot
that this PC was UEFI only and overwrote the first partition with the
gptzfsboot code.  That made my system un-bootable.  I found the recovery
procedure on one of the FreeBSD forums and was able to reformat the EFI
MSDOS partition, create the proper directory structure, and copy the
loader.efi file to the correct location and filename using the Live
Filesystem running on the installation CD.

I searched the man pages and the UPDATING file for instructions but came
up empty and had to resort to finding the answer on one of the forums.
The filenames have changed since FreeBSD first supported EFI and some of
the forum instructions are out of date.  My problem must be fairly
common and the recovery procedure should be in a man page with a
footnote or man reference somewhere on the install media.

Since CURRENT receives more updates to the EFI boot loader than the
release versions, there should be instructions in the CURRENT
'usr/src/UPDATING' file on how to update the EFI bootcode.

Tom

-- 
Public Keys:
PGP KeyID = 0x5F22FDC1
GnuPG KeyID = 0x620836CF