Subject: bug#47329: efibootmgr failed to register the boot entry: Input/output error

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Mon, 22 Mar 2021 22:17:24 +0100

David,

David Dashyan 写道：
> failed to register the boot entry: Input/output error.
[...]
> same effect on guix system, but works fine when runned in ubuntu
> live cd.

Thank you for noting this!  This error is not uncommon in general, 
but this is the first time I've heard (or it's even occurred to 
me) that there's a difference between different efibootmgr builds. 
I'll keep that in mind when this next happens to me.

> I don't get why it complains that there is "no space left on 
> device"
> though.

Because your UEFI firmware reports that the storage NVRAM (a chip 
on your motherboard) is full.

There's no magic (simple + safe + guaranteed to work) way to fix 
this.  I don't think Guix could reliably automate one if we tried.

One of the safer things to try is looking at the output of 
‘efibootmgr’, then deleting ‘obviously irrelevant’ BootNNNN 
entries with ‘efibootmgr -b NNNN -B’.  IIRC, my Lenovo X230T came 
with options to boot from a floppy and/or optical drives, neither 
of which it has.  Each one takes up a tiny bit of the very limited 
NVRAM storage.

Deleting just a few clearly-unused entries can fix the problem, 
and is a lot safer than, e.g., manually mucking about in 
/sys/firmware/efi/efivars.  That could theoretically brick your 
machine.

Some people also report success from the ‘load defaults’ or ‘load 
optimised defaults’ options in the firmware's set-up menu.  Of 
course you'll lose all custom firmware settings, but you might not 
have any, and they're quite easy to restore by hand.

> output of `df -h` contains:
>> /dev/nvme0n1p1         548M  212K  548M   1% /boot/efi

The problem you're having has nothing to do with drives; you can 
ignore them.

Kind regards,

T G-R