grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: grub-install deleting long UEFI entries bug ?


From: Andrei Borzenkov
Subject: Re: grub-install deleting long UEFI entries bug ?
Date: Sun, 23 Apr 2017 11:45:46 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

23.04.2017 11:21, adrian15 adrian15 пишет:
> 2017-04-23 6:36 GMT+02:00 Andrei Borzenkov <address@hidden>:
> 
>> 23.04.2017 03:54, adrian15 пишет:
>>> grub-install seems to be deleting long UEFI entries
>>>
>>> (*) What the bug is
>>>
>>> * Add an UEFI entry with this label (Remove the single quotes):
>>>  '(Rescapp added) \EFI\ubuntu\MokManager.efi'
>>>
>>> Example:
>>>
>>> efibootmgr -c \
>>>  -d /dev/sda \
>>>  -p 2 \
>>>  -L '(Rescapp added) \EFI\ubuntu\MokManager.efi' \
>>>  -l '\EFI\ubuntu\MokManager.efi'
>>>
>>> * Run grub-install /dev/sda or maybe just grub-install
>>>
>>> I expect the newly added uefi entry to be there.
>>> What I find is that the entry has been lost or deleted!
>>>
>>
>> What is value of GRUB_DISTRIBUTOR in /etc/default/grub?
>>
> 
> After evaluating the bash expression the GRUB_DISTRIBUTOR value is Ubuntu.
> 

Yes, historically grub did case insensitive substring search. This
probably is wrong, we should just take everything after boot number
literally.
...
> 1) First of all this matches all the line:
> 
> if (!strcasestr (line, efi_distributor))
> continue;
> 
> That means that if you add a custom label which matches the efi distributor
> then it gets removed. I think that's what happened to me. I would prefer
> something more precise that would check the complete efi file path agains
> e.g. EFI/vendor/ .
> 
> 2) Then there's:
> 
>       if (grub_memcmp (line, "Boot", sizeof ("Boot") - 1) != 0
>  || line[sizeof ("Boot") - 1] < '0'
>  || line[sizeof ("Boot") - 1] > '9')
> continue;
> 
> which might be wrong because of 0 and 9 and maybe not because of the array
> indexes.
> 
> Let's go into details about that.
> 
> 2.1) Boot0000 First entry
> BootA000 Second entry
> 
> Shouldn't the look for A to F hexadecimal letters too?
> 

Yes. Patches are welcome for both problems. Second one is actually bug
fix so should be independent.

> And...
> 
> 2.2) line[sizeof ("Boot") - 1] < '0'
> 
> Am I doing it right?
> 
> sizeof ("Boot") = 4
> 

It is 5.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]