Как мне сгенерировать GUID в приложении EFI? - PullRequest
0 голосов
/ 05 июля 2019

Я пишу небольшое приложение EFI, которое наблюдает за развертыванием новых компьютеров и, помимо прочего, готовит жесткий диск с минимальной таблицей разделов и спасательной системой.

Теперь я хотел бы сгенерировать случайные UUID для таблицы разделов и идентификаторов разделов, но, к моему удивлению, в стандартном наборе доступных протоколов нет готового генератора UUID.

Я что-то упустил здесь? Какой алгоритм имеет больше шансов дать мне уникальные идентификаторы, если у меня еще нет надежных системных часов, но у меня есть протокол генератора случайных чисел EFI?

1 Ответ

1 голос
/ 05 июля 2019

GUID статистически гарантированно будет уникальным только в том случае, если сгенерирован по определенному алгоритму. Для UEFI это означает следующее RFC 4122 для генерации UUID на основе времени , но с TimeLow, TimeMid и TimeHighAndVersion в порядке байтов с прямым порядком байтов. Это также формат, используемый Microsoft.

Существуют инструменты, которые сгенерируют для вас соответствующие GUID. Онлайн-генератор GUID - один. Другим является не очень поддерживаемый, но в некотором роде полезный мастер драйверов UEFI EDK2 , приложение на основе Python с графическим интерфейсом, которое автоматически генерирует шаблон для новых модулей edk2.

Утилита командной строки linux uuidgen команда не генерирует соответствующие GUID, поскольку временная метка закодирована с прямым порядком байтов.

...