Downloading Coreboot but getting error messages

On my Librem 15v4 using Terminal I’m trying to download Coreboot firmware from https://source.puri.sm but getting error messages, as below;

pureos@pureos:~$ mkdir ~/updates
pureos@pureos:~$ cd ~/updates
pureos@pureos:~/updates$ wget https://source.puri.sm/firmware/utility/raw/master/coreboot_util.sh -O coreboot_util.sh
–2024-01-16 18:20:22-- https://source.puri.sm/firmware/utility/raw/master/coreboot_util.sh
Resolving source.puri.sm (source.puri.sm)… 143.198.145.103
Connecting to source.puri.sm (source.puri.sm)|143.198.145.103|:443… connected.
ERROR: The certificate of ‘source.puri.sm’ is not trusted.
ERROR: The certificate of ‘source.puri.sm’ has expired.

I’ve followed the instructions as per puri.sm/projects/coreboot/

I’ve had a read through Purism forum, firmware category but haven’t, as yet, found a way to download Coreboot firmware.
Suggestions anyone?

1 Like

Update your date and time first, then run the script again.

1 Like

Generic advice for resolving certificate problems:

  • make sure that the problem is reproducible (sometimes the server is having something administrative done to it and the certificate is temporarily broken)
  • make sure your computer has the correct date and time
  • make sure that your computer has up to date packages
  • (if not getting the error from a web browser) open the URL in a web browser and see what it says about the certificate

Regarding the fourth bullet point, you can just click the link above from your post. The certificate either gets an error or it doesn’t. If it doesn’t get an error then in Firefox you can click the padlock and after a few more clicks you can view the certificate and decide for yourself whether wget should be complaining.

For what it’s worth, wget with that URL works just fine for me and Firefox with that URL works just fine for me and eyeballing the certificate it seems that all is in order.

Note that the third bullet point can be “impossible” to achieve i.e. if you let your certificate data get so out of date that you can no longer use apt because it will attempt to make a secure connection to download current packages. Catch 22.

1 Like

Thanks FranklyFlawless and irvinwade, seems I got caught catch 22 on the 3rd bullet point. So solved that by downloading the latest version of PureOS and running from USB.
After that download of Coreboot was successful.
So I run the Coreboot utility to flash using the command sudo bash ./coreboot_util.sh

But that brings me to another problem:(
When flashing, the process has hung, as in the below screenshot.

The CPU is busy and fan also, even a few hours later, as in the below screenshot of System Monitor.

I’m a bit worried that, if I’m not careful I’ll end up with a brick.
How best to proceed from here?

1 Like

I would keep the laptop running until @jonathon.hall responds. Ensure that Settings → Power is configured to never turn off under any conditions.

Did you download PureOS 10.3 or 11?

1 Like

@SageOwl You took good precautions by posting this and asking. The good news is that this is an issue in the script that is not likely to result in a brick. Here’s what to do:

  • You’ve already waited 3 minutes (anybody seeing this in the future - wait 3 minutes for flashrom to finish before proceeding)
  • Ctrl+C the script. If that doesn’t work, find the instance of bash that’s cranking the CPU and terminate it.
  • Run the script again and flash again, just in case, make sure it completes successfully. It might say the ROM was identical since the first flash actually worked.

This problem is rare and the odds of hitting it again are low - but if you do, wait 3 minutes for flashrom to complete behind the scenes and then do this again.

The bug here is actually in coreboot_util.sh itself trying to display the progress bar - flashrom under the hood actually still works, the flash will go ahead with no progress. But coreboot_util.sh is stuck trying to generate the progress bar. It’s rare, the fix is unfortunately not trivial, but it does not actually cause a problem flashing.

I’m happy to detail what’s going on under the hood if you want, but the important thing here is what to do above :point_up:

4 Likes

Thanks for the tips.
I Ctrl+Ced exiting no worries.
Then I run the script again as in bullet point 3. But got the same result, bummer.

So I Ctrl+Ced again then rebooted from cold to USB PureOS 10.3 live again, opened terminal and again followed the same procedure, downloading coreboot_util fresh, then tried flashing again… but getting the same result:(

I tried this process a couple more times with some minor variations. And carefully double checking each step as I went along, but alas, same result.

What do you suggest now @jonathon.hall ?
I’m not that keen to get my hands dirty under the hood but will if there’s no alternative.

1 Like

I am curious as to whether you did successfully flashed Coreboot, so try verifying the currently installed image with the provided instructions on the project page:

git clone --depth=1 https://review.coreboot.org/coreboot.git
cd coreboot/util/cbmem
make
sudo ./cbmem -c | egrep -i "coreboot-|purism|librem"

If it did succeed, the output version should be 4.21.

1 Like

When I reboot I get a Pureboot menu.
So no, it seems Coreboot didn’t flash

1 Like

Ah, so flashrom is not able to flash for some reason, and the script is getting stuck still trying to show a progress bar for progress that will never occur.

It should create a flashrom log file in the directory containing coreboot_util.sh. Could you send me one? You can email it to me at jonathon.hall@puri.sm.

You shouldn’t need to hack anything here, I’ll fix the script. It’s good timing too as I should be able to get these fixes in for the next release that I’m working on.

1 Like

I got your log @SageOwl , thanks.

The relevant error was this:

/dev/mem mmap failed: Operation not permitted

flashrom failed, but the script didn’t handle it correctly and got stuck trying to show the progress bar. I’ll address that in the script.

Could you try booting with iomem=relaxed in the kernel command line? If you have not done that before:

  1. Open a terminal
  2. Edit the grub configuration: sudo nano /etc/default/grub, enter password if prompted by sudo
  3. Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT=, and just before the last quote, add a space and iomem=relaxed. For example, it might become GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iomem=relaxed"
  4. Save with Ctrl+O, Enter, then exit with Ctrl+X.
  5. Update grub: sudo update-grub
  6. Reboot and try to flash again
2 Likes

Thanks, I did that but got stuck at step 5.
When running sudo update-grub I got an error message;
/usr/sbin/grub-probe: error: failed to get canonical path of `/cow’.
Maybe this has some thing to do with my USB PureOS 10.3 live drive.

1 Like

Update
I installed PureOS to an internal drive. Then completed the flash procedure.
Success! All good now.
Thank you gentlemen

1 Like

I think that would be correct. A live boot would make it difficult to achieve the update of GRUB.

I would guess that there’s no need to install to an internal drive though. You could install from one USB to another (i.e. from the live USB to another USB flash drive). Then you should be able to update GRUB. The downside of this approach is that that install rapidly becomes out of date as it will not frequently be booted - and you can end up with the problem that you started with. Of course you have the same problem with a live boot but it is easier to download the entire ‘iso’ periodically and just make a new live boot.

2 Likes

Glad you got that working! Yes, those instructions would only work for a PureOS install - I forgot you were using a live USB, glad you figured it out.

To do that on a live boot you would have to edit the kernel command line during boot, but there is no UI in PureBoot for that currently (it is possible from the recovery shell).

2 Likes