Upgrade from 2.7.2 to 2.8.0 Failed and now /boot/efi/ empty
-
I was just trying to update to 2.8.0 from 2.7.2 and it failed at the very end. When trying to research the error of not enough diskspace, I came across several posts with this issue for people having problems going from 2.7.0 to 2.7.2. Thankfully I did not run into those when I did that upgrade. However, it now seems I have run into the issue with this upgrade. When I tried to troubleshoot using the methods in one forum post for the 2.7.2 upgrade, I started digging around to see if my /boot/efi/ survived. When use the Edit File tool, I find there is nothing in that directory:
If I go up one level, I see several .efi files there:
If I run df -hi /boot/efi from the command prompt I get the following and this does not look right to me, but I could be wrong:
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/gptid/ac11fbb1-5651-11e8-b5a2-00907fd0950c 222G 18G 186G 9% 69k 30M 0% /
At this point I am a bit afraid to try anything else without some guidance on what I should try next. I certainly do not want to reboot as it likely won't come back up from what I see.
Any and all help is appreciated and I am willing to provide anything else that may help in troubleshooting.
Thank you in advance.
-
UPDATE: Looks like the mount point for /boot/efi may not be present. After running the mount command all I see if the following:
Honestly I am not even certain where /boot/efi should be mounted and don't want to start changing things and make things worse.
I am not certain if this is in fact the issue, but I look forward to hearing from someone that knows more about the file system for PFSense then I do.
Really trying to avoid having to reinstall.
-
Another UPDATE: As I have been digging through forums, I keeps seeing a reference to /dev/msdosfs/EFISYS as to where /boot/efi should be mounted. Unfortunately I do not find this on my system. In /dev/msdosfs all I currently see is what appears to be an EFI file:
This file can't be openedwithin the GUI.
UPDATE: Just to add a little more information to this one. I ran a gpart show and I got the following. Not sure if this helps, but I did see it return efi (200M)
=> 40 488397088 ada0 GPT (233G) 40 409600 1 efi (200M) 409640 479838208 2 freebsd-ufs (229G) 480247848 8149279 3 freebsd-swap (3.9G) 488397127 1 - free - (512B)
-
Yet Another UPDATE:
I think I may have made some progress. It appears that on my system instead of /dev/msdosfs/EFISYS I have /dev/msdosfs/EFI.I was able to follow @jimp instructions partially from another post and was able to mount /boot/efi to /dev/msdosfs/EFI and copy files to a temp directory /tmp/efitmp.
Here are the modified commands I performed. They appear to have worked and I can browse the directories and files now in the /tmp/efitmp directory.
# mkdir -p /boot/efi # mount_msdosfs /dev/msdosfs/EFI /boot/efi # mkdir -p /tmp/efitmp # cp -Rp /boot/efi/* /tmp/efitmp
What I am trying to figure out is if this is correct for my setup before I proceed and create more problems doing the following:
# umount /boot/efi # newfs_msdos -F 32 -c 1 -L EFI /dev/msdosfs/EFI # mount_msdosfs /dev/msdosfs/EFI /boot/efi # cp -Rp /tmp/efitmp/* /boot/efi/
Again, thanks in advance for the help.
EDIT: I took a look at the contents of the file in the /tmp/efitmp/EFI/BOOT called STARTUP.NSH and it has one entry BOOTx64.efi. When I try to search for this file I do not find it on the system.
EDIT 2: Per another forum post that I found with @jimp involved I ran find /boot/efi and got the following reults that are different from what was seen in the posts from 2023:
/boot/efi /boot/efi/EFI /boot/efi/EFI/BOOT /boot/efi/EFI/BOOT/STARTUP.NSH
-
@Sinfonia97 I don’t have a direct answer for you but at some point it may be easier to just reinstall.
-
@SteveITS Thanks, unfortunately I am one of those types that wants to fix the problem before I break down and reinstall. Thankfully I took a backup before I attempted the update while everyone was taking naps. Now I just want to make sure if we have a power outage the system will come back up.
-
UPDATE: Found something that I am hoping can move things forward some more. It looks like potentially the BOOTx64.efi file can be replaced by copying the /boot/loader.efi to the /boot/efi/EFI/BOOT folder and rename it to BOOTx64.efi. If this is the case, I would like to hear from others.
-
UPDATE: Found the following in my /etc/fstab file and now I am even less sure where /boot/efi should be mounted . Per this post in Unable to upgrade from 2.7.1 to 2.7.2 I should see something like:
/dev/msdosfs/EFISYS /boot/efi msdosfs rw 2 2
but I see this:
/dev/gptid/ac11fbb1-5651-11e8-b5a2-00907fd0950c / ufs rw 1 1 /dev/gptid/ac128803-5651-11e8-b5a2-00907fd0950c none swap sw 0 0
Just trying to provide as much info as possible in case anyone can help.
-
@Sinfonia97 Sounds like a corrupted install to me.
I would-
Save pfsense configuration
-
Do a clean install from a recent installer to ensure partitions are consistent with more recent requirements (v2.7.2 or 2.8 or 2.81)
-
Document what low level file structure is used with a good current install so you maybe able to guess what went wrong with the prior corruption (partitions sizes, hardware failure, edge case configuration, edge case update series)
-
-
@Patch Thanks, I am kind of hoping if I can figure out exactly where it needs to be mounted I can use the steps that were provided in other threads to fix the EFI. The steps used before clearly work and even help with the size of the EFI partition. My problem is figuring out where exactly /boot/efi should be mounted to create the backup of the files and the perform the rest of the steps. In what I have been finding, there possibly could be a few places to mount /boot/efi. I ran a geom -t just a bit ago and it pointed me to likely needing to mount it at /dev/ada0p1. The output of geom -t was:
Geom Class Provider ada0 DISK ada0 ada0 DEV ada0 PART ada0p1 ada0p1 DEV msdosfs.ada0p1 VFS ada0 PART ada0p2 ada0p2 DEV ada0p2 LABEL gptid/ac11fbb1-5651-11e8-b5a2-00907fd0950c gptid/ac11fbb1-5651-11e8-b5a2-00907fd0950c DEV ffs.gptid/ac11fbb1-5651-11e8-b5a2-00907fd0950c VFS ada0 PART ada0p3 ada0p3 DEV ada0p3 LABEL gptid/ac128803-5651-11e8-b5a2-00907fd0950c gptid/ac128803-5651-11e8-b5a2-00907fd0950c DEV swap SWAP
I see in that output in shows msdosfs.ada0p1, and the rest lines up with what is in /dev/gptid and /etc/fstab. It also lines up with the output of gpart list showing ada0p1 as type efi:
Geom name: ada0 modified: false state: OK fwheads: 16 fwsectors: 63 last: 488397127 first: 40 entries: 128 scheme: GPT Providers: 1. Name: ada0p1 Mediasize: 209715200 (200M) Sectorsize: 512 Stripesize: 0 Stripeoffset: 20480 Mode: r1w1e2 efimedia: HD(1,GPT,ac1172b7-5651-11e8-b5a2-00907fd0950c,0x28,0x64000) rawuuid: ac1172b7-5651-11e8-b5a2-00907fd0950c rawtype: c12a7328-f81f-11d2-ba4b-00a0c93ec93b label: (null) length: 209715200 offset: 20480 type: efi index: 1 end: 409639 start: 40 2. Name: ada0p2 Mediasize: 245677162496 (229G) Sectorsize: 512 Stripesize: 0 Stripeoffset: 209735680 Mode: r1w1e2 efimedia: HD(2,GPT,ac11fbb1-5651-11e8-b5a2-00907fd0950c,0x64028,0x1c99c000) rawuuid: ac11fbb1-5651-11e8-b5a2-00907fd0950c rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b label: (null) length: 245677162496 offset: 209735680 type: freebsd-ufs index: 2 end: 480247847 start: 409640 3. Name: ada0p3 Mediasize: 4172430848 (3.9G) Sectorsize: 512 Stripesize: 0 Stripeoffset: 245886898176 Mode: r1w1e1 efimedia: HD(3,GPT,ac128803-5651-11e8-b5a2-00907fd0950c,0x1ca00028,0x7c591f) rawuuid: ac128803-5651-11e8-b5a2-00907fd0950c rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b label: (null) length: 4172430848 offset: 245886898176 type: freebsd-swap index: 3 end: 488397126 start: 480247848 Consumers: 1. Name: ada0 Mediasize: 250059350016 (233G) Sectorsize: 512 Mode: r3w3e8