grub-devel
[Top][All Lists]
Advanced

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

Re: Grub get and set efi variables


From: Andrei Borzenkov
Subject: Re: Grub get and set efi variables
Date: Sun, 29 Nov 2015 12:00:07 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

27.11.2015 17:25, Ignat Korchagin пишет:
>> I would add:
>> * hex. To print and store in hex form
>> * utf16. Decode utf16 into utf8. utf16 is a common encoding in EFI land.
> 
> hex is already part of the latest proposed patch:
>>> +    case EFI_VAR_HEX:
> 
> I'm not sure whether utf16 will be useful, as all standard UEFI
> variables now are using ASCII for string data.
> 

I agree; it can be added later if use case emerges. So far all
"interesting" cases that use UTF-16 are not limited to strings, and need
much more elaborate parsing. That is why I mentioned generic format
specifier before. But this also can be added if needed, overall syntax
seems to be flexible enough.

> On Fri, Nov 27, 2015 at 2:07 PM, Vladimir 'φ-coder/phcoder' Serbinenko
> <address@hidden> wrote:
>> On 14.11.2015 05:03, Andrei Borzenkov wrote:
>>> 13.11.2015 22:42, Ignat Korchagin пишет:
>>>>>>> +static enum efi_var_type
>>>>>>> +parse_efi_var_type (const char *type)
>>>>>>> +{
>>>>>>> +  if (!grub_strncmp (type, "string", sizeof("string")))
>>>>>>> +    return EFI_VAR_STRING;
>>>>>>> +
>>>>>>
>>>>>>
>>>>>> I think this should be "ascii" or "utf8". "string" is too ambiguous
>>>>>> in UEFI
>>>>>> environment, it can also mean sequence of UCS-2 characters.
>>>>> I'm still not sure how exactly GRUB + UEFI interprets "raw buffers"
>>>>> when printing. Maybe, to avoid confusion, it might be better to
>>>>> completely remove this option. Basically, you do not want to interpret
>>>>> raw buffers as strings. For best compatibility "hex" mode should be
>>>>> promoted, I guess. What do you think?
>>>> Checked again the UEFI spec. For globally defined variables which are
>>>> strings they specify ASCII. So if we leave this option, ascii is the
>>>> best name.
>>>>
>>>
>>> What about
>>>
>>>   - ascii - print ASCII characters verbatim, escape non-ASCII in usual
>>> way (similar to "od -c")
>>>
>>>   - raw - simply put raw variable without any interpretation.
>>>
>> I would add:
>> * hex. To print and store in hex form
>> * utf16. Decode utf16 into utf8. utf16 is a common encoding in EFI land.
>> I would also skip on raw, at least until we have a real need for it as
>> we currently are not equiped to handle raw strings in variable contents,
>> including but not limited to \0 being considered a terminator
>>> This is better aligned with argument describing output formatting rather
>>> than attempting to "type" variable.
>>>
>>> Alternative (or in addition to) ascii - dump which prints usual pretty
>>> hex dump of content (hexdump -C). This is handy to interactively look at
>>> variable content.
>>>
>>> Or, and change name from --type to --format :)
>>>
>>> _______________________________________________
>>> Grub-devel mailing list
>>> address@hidden
>>> https://lists.gnu.org/mailman/listinfo/grub-devel
>>
>>
>>
>> _______________________________________________
>> Grub-devel mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/grub-devel
>>
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel
> 




reply via email to

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